diff --git a/README.md b/README.md
index d332f96..764b4df 100644
--- a/README.md
+++ b/README.md
@@ -34,13 +34,13 @@ $ yarn add handle-events
-
+
```
-In the above case, the library will be included as global object in
-the browser under the name of [`jsu`](#examples), wherein, if that
-namespace exists, it will be extended, otherwise a new `jsu` object
-will be created.
+In the above case, the library will be included as global object
+in the browser under the name of [`jsu`](#api) (JavaScript-Utils),
+wherein, if that namespace exists, it will be extended, otherwise
+a new `jsu` object will be created.
As this library is built as [UMD] _(Universal Module Definition)_, it
can be included from module loaders such as [CommonJS], [ES2015 Imports]
@@ -49,13 +49,13 @@ or [AMD RequireJS].
### CommonJS
```javascript
-var evt = require('handle-events');
+var jsu = require('handle-events');
```
### ES2015 Imports
```javascript
-import evt from 'handle-events';
+import jsu from 'handle-events';
```
### AMD
@@ -68,8 +68,8 @@ requirejs.config({
'handle-events': '/handle-events.min'
}
});
-require(['handle-events'], function(evt) {
- console.log(evt);
+require(['handle-events'], function(jsu) {
+ console.log(jsu);
});
```
@@ -81,18 +81,18 @@ See an example with RequireJS here: http://jsfiddle.net/FdKTn/78/
## API
-- [addEventListener](#addeventlistenernode-eventns-listener-usecapture)
-- [delegate](#delegatenode-selector-eventns-listener-usecapture)
+- [addEventListener](#addeventlistenernode-eventns-listener-capture)
+- [delegate](#delegatenode-selector-eventns-listener-capture)
- [removeEventListener](#removeeventlistenernode-eventns-listener)
- [getEventListeners](#geteventlistenersnode-eventns)
- [handleEvents](#handleeventsnode)
-### addEventListener(node, eventns, listener, useCapture)
+### addEventListener(node, eventns, listener, capture)
**Returns `void`**
```javascript
-addEventListener(node: Element, eventns: String, listener: Function, useCapture: Boolean) : void
+addEventListener(node: Element, eventns: String, listener: Function, capture: Boolean) : void
```
Attaches an event-handler to a DOM element. You can set a namespace to
@@ -100,9 +100,9 @@ the event by appending a dot `.` to the event name.
It receives the following arguments:
- **node** `Element`: DOM Element to which the event handler is attached
-- **eventns** `String`: name of the event.namespace to register
-- **listener** `Function`: event handler
-- **useCapture** `Function`: event capture (default false)
+- **eventns** `String`: name of the event (with .namespace) to register
+- **listener** `Function`: the function which receives the event notification
+- **capture** `Boolean`: if the event is activated at the beginning _(default `false`)_
Each event handler attached is tracked by an internal store, which keeps track
of the event type and the namespace linked to a DOM Element. You can access
@@ -111,34 +111,74 @@ that store through the API [getEventListeners](#geteventlistenersnode-eventns).
```javascript
var title = document.getElementById('title');
-// add a named event handler + namespace (recommended)
+// add a named event handler with namespace (recommended)
const onMouseOver = (e) => console.log(`triggered ${e.type}.tooltip`);
jsu.addEventListener(title, 'mouseover.tooltip', onMouseOver);
-// add an anonymous event handler
+// add an anonymous event handler (without namespace)
jsu.addEventListener(title, 'click', (e) => {
console.log(`triggered ${e.type}`);
});
```
+Events can be activated at two occasions: At the beginning _("capture")_ by
+setting `capture = true`, and at the end _("bubble")_ by default.
+Events are executed in the order of how they're defined.
+
+Say, you define 4 event listeners:
+
+```javascript
+jsu.addEventListener(document, "click", (e) => alert(1));
+jsu.addEventListener(document, "click", (e) => alert(2), true);
+jsu.addEventListener(document, "click", (e) => alert(3), false);
+jsu.addEventListener(document, "click", (e) => alert(4), true);
+```
+
+The alert boxes will pop up in this order:
+
+- `2`: defined first, using `capture = true`
+- `4`: defined second, using `capture = true`
+- `1`: first handler defined without setting `capture`
+- `3`: second handler defined with `capture = false`
+
+For a better understanding of capture-events and event-bubbling,
+read the following link: https://stackoverflow.com/a/10654134/2247494
+and also you can see a demo here: http://jsfiddle.net/sc5Xa/198/
+
[☗ Back to API](#api)
-### delegate(node, selector, eventns, listener, useCapture)
+### delegate(node, selector, eventns, listener, capture)
+
+**Returns `void`**
```javascript
-delegate(node: Element, selector: String, eventns: String, listener: function, useCapture: Boolean): voide
+delegate(node: Element, eventns: String, selector: String, listener: Function, capture: Boolean) : void
```
-Attaches an event-handler to a Dom Element but delegates the event the selector.
+Attaches a listener to a DOM `Element` but delegates the event-listener
+to the DOM Elements beneath that matches with the `selector` provided.
+It receives the following arguments:
- **node** `Element`: DOM Element to which the event handler is attached
-- **eventns** `String`: name of the event.namespace to register
-- **selector** `String`: CSS Selector
-- **listener** `Function`: event handler
-- **useCapture** `Function`: event capture (default false)
+- **eventns** `String`: name of the event (with .namespace) to register
+- **selector** `String`: CSS selector for those elements that will propagate the event
+- **listener** `Function`: the function which receives the event notification
+- **capture** `Boolean`: if the event is activated at the beginning _(default `false`)_
-**Returns `void`**
+Events can be activated at two occasions: At the beginning _("capture")_ by
+setting `capture = true`, and at the end _("bubble")_ by default.
+Events are executed in the order of how they're defined.
+
+```javascript
+jsu.delegate(document, "click.test", "h3", (e) => alert(1));
+jsu.delegate(document, "click.test", "h3", (e) => alert(2), true);
+jsu.delegate(document, "click.test", "h3", (e) => alert(3), false);
+jsu.delegate(document, "click.test", "h3", (e) => alert(4), true);
+```
+For a better understanding of capture-events and event-bubbling,
+read the following link: https://stackoverflow.com/a/10654134/2247494
+and also you can see a demo here: http://jsfiddle.net/sc5Xa/198/
[☗ Back to API](#api)
@@ -159,13 +199,13 @@ only a namespace that will match with all event types.
It receives the following arguments:
- **node** `Element`: DOM element where the event handler is removed.
-- **eventns** `String`: _(optional)_ name of the event.namespace to remove.
-- **listener** `Function`: _(optional)_ event handler.
+- **eventns** `String`: _(optional)_ name of the event (with .namespace) to remove
+- **listener** `Function`: _(optional)_ the function which receives the event notification
Each event handler attached by
-[addEventListener](#addeventlistenernode-eventns-listener) is tracked by an
-internal store, which keeps track of the event type and the namespace linked
-to a DOM Element. You can access that store through the API
+[addEventListener](#addeventlistenernode-eventns-listener-capture) is tracked
+by an internal store, which keeps track of the event type and the namespace
+linked to a DOM Element. You can access that store through the API
[getEventListeners](#geteventlistenersnode-eventns).
```javascript
@@ -190,9 +230,9 @@ getEventListeners(node: Element) : Object
```
Gets all event-handlers from a DOM element. Each event handler attached by
-[addEventListener](#addeventlistenernode-eventns-listener) is tracked by an
-internal store, which keeps track of the event type and the namespace linked
-to a DOM Element.
+[addEventListener](#addeventlistenernode-eventns-listener-capture) is tracked
+by an internal store, which keeps track of the event type and the namespace
+linked to a DOM Element.
It receives the following arguments:
@@ -204,7 +244,7 @@ var title = document.getElementById('title');
jsu.getEventListeners(title); // get all event listeners
jsu.getEventListeners(title, 'click'); // get all listeners by event
-jsu.getEventListeners(title, '.tooltip'); // get all listeners by namespace
+jsu.getEventListeners(title, '.tooltip'); // get all listeners by namespace
jsu.getEventListeners(title, 'mouseover.tooltip'); // get listeners by event + namespace
```
@@ -243,7 +283,7 @@ handleEvents(node: Element) : Object
```
This _factory-method_ is a _facade_ that simplifies the tasks for
-[attaching](#addeventlistenernode-eventns-listener) and
+[attaching](#addeventlistenernode-eventns-listener-capture) and
[removing](#removeeventlistenernode-eventns-listener) event listeners.
It implements a _fluent interface_ that allows the chaining of methods
(as jQuery does). It receives an argument that is the DOM `Element` to
@@ -251,10 +291,10 @@ which you will attach or remove event-handlers.
The methods exposed are:
-- **on** `Function`: facade of [addEventListener](#addeventlistenernode-eventns-listener).
- It only receives two arguments: `(eventns, listener)`
-- **off** `Function`: facade of [removeEventListener](#removeeventlistenernode-eventns-listener).
- It only receives two arguments: `(eventns, listener)`
+- **on()** `Function`: facade of [addEventListener](#addeventlistenernode-eventns-listener-capture).
+ It receives the following arguments: `(eventns, listener, capture)`
+- **off()** `Function`: facade of [removeEventListener](#removeeventlistenernode-eventns-listener).
+ It receives the following arguments: `(eventns, listener)`
```javascript
const evtHandler = (e) => console.log(`triggered ${e.type}`);
diff --git a/dist/handle-events.js b/dist/handle-events.js
index 636a254..8a7d79e 100644
--- a/dist/handle-events.js
+++ b/dist/handle-events.js
@@ -1,4 +1,4 @@
-/*! handle-events@v1.0.0a. Jherax 2017. Visit https://github.com/jherax/handle-events */
+/*! handle-events@v1.1.0. Jherax 2017. Visit https://github.com/jherax/handle-events */
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
@@ -110,7 +110,7 @@ var NODES = [];
* @param {Element} node: DOM element
* @param {String} eventns: name of the event/namespace to register
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
function addEventListener(node, eventns, listener) {
var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -146,7 +146,6 @@ function addEventListener(node, eventns, listener) {
* Removes an event-handler from a DOM element.
* Events with namespace are allowed.
*
- * @private
* @param {Element} node: DOM element
* @param {String} eventns: (optional) name of the event/namespace to remove
* @param {Function} listener: (optional) event handler
@@ -230,13 +229,16 @@ function getEventListeners(node, eventns) {
}
/**
+ * Attaches a listener to a DOM `Element` but delegates the event-listener
+ * to the DOM Elements beneath that matches with the `selector` provided.
+ *
* @param {Element} node: DOM element
- * @param {String} selector: CSS Selector for the event
* @param {String} eventns: name of the event/namespace to register
+ * @param {String} selector: CSS selector for those elements that will propagate the event
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
-function delegate(node, selector, eventns, listener, useCapture) {
+function delegate(node, eventns, selector, listener, useCapture) {
addEventListener(node, eventns, function (e) {
if (e.target.matches(selector)) {
listener(e);
@@ -285,6 +287,10 @@ module.exports = exports['default'];
"use strict";
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
+ */
+
if (typeof Element !== 'undefined' && !Element.prototype.matches) {
var proto = Element.prototype;
@@ -319,7 +325,9 @@ function handleEvents(node) {
return fluent;
};
fluent.on = function (eventns, listener) {
- (0, _events.addEventListener)(node, eventns, listener);
+ var useCapture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+ (0, _events.addEventListener)(node, eventns, listener, useCapture);
return fluent;
};
return fluent;
@@ -344,13 +352,13 @@ exports.detachEvent = detachEvent;
* @param {Element} node: DOM element
* @param {String} eventName: name of the event to register
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
function attachEvent(node, eventName, listener) {
var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (node.addEventListener) {
- node.addEventListener(eventName, listener, useCapture);
+ node.addEventListener(eventName, listener, !!useCapture);
} else {
node.attachEvent("on" + eventName, listener);
}
@@ -362,13 +370,13 @@ function attachEvent(node, eventName, listener) {
* @param {Element} node: DOM element
* @param {String} eventName: name of the event to register
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
function detachEvent(node, eventName, listener) {
var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (node.removeEventListener) {
- node.removeEventListener(eventName, listener, useCapture);
+ node.removeEventListener(eventName, listener, !!useCapture);
} else {
node.detachEvent("on" + eventName, listener);
}
diff --git a/dist/handle-events.min.js b/dist/handle-events.min.js
index 76cf71e..3eb35c7 100644
--- a/dist/handle-events.min.js
+++ b/dist/handle-events.min.js
@@ -1,3 +1,3 @@
-/*! handle-events@v1.0.0a. Jherax 2017. Visit https://github.com/jherax/handle-events */
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.jsu=t():Object.prototype.toString.call(e.jsu)==="[object Object]"?!function(m,f,p){for(p in f)m[p]=f[p]}(e.jsu,t()):e.jsu=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,n){"use strict";function r(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=(0,f.splitEventName)(t),a=s(o,2),i=a[0],u=a[1];if(!i)throw Error("Event name was not provided");var l=v.find(function(t){return t.node===e});void 0===l&&(l=Object.create(null),l.events=Object.create(null),l.node=e,v.push(l)),l.events[i]||(l.events[i]=[]);var d=Object.create(null);d.namespace=u,d.handler=n,d.useCapture=r,l.events[i].push(d),(0,c.attachEvent)(e,i,n,r)}function o(e,t,n){var r=(0,f.splitEventName)(t),o=s(r,2),a=o[0],i=o[1],u=v.find(function(t){return t.node===e});if(u){var l=function(r){var o=this.toString();return!(!n&&!t||(0,f.match)(a,o,i,r.namespace,n)||r.handler===n&&(!t||(0,f.match)(a,o,i,r.namespace)))||!!(0,c.detachEvent)(e,o,r.handler,r.useCapture)};(a?[a]:Object.keys(u.events)).forEach(function(e){u.events[e]=(u.events[e]||[]).filter(l,e)})}}function a(e){var t=this.eventName,n=this.eventType,r=this.namespace,o=this.listeners;(0,f.match)(t,n,r,e.namespace)&&(o[n]=o[n]||[],o[n].push(e))}function i(e,t){var n=(0,f.splitEventName)(t),r=s(n,2),o=r[0],i=r[1],u=v.find(function(t){return t.node===e}),c={namespace:i,eventName:o,listeners:{}};return u?t?((o?[o]:Object.keys(u.events)).forEach(function(e){c.eventType=e,(u.events[e]||[]).forEach(a,c)}),c.listeners):u.events:c.listeners}function u(e,t,n,o,a){r(e,n,function(e){e.target.matches(t)&&o(e)},a)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.addEventListener=r,t.removeEventListener=o,t.getEventListeners=i,t.delegate=u;var c=n(4),f=n(5),v=[]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(2);var r=n(3),o=function(e){return e&&e.__esModule?e:{default:e}}(r),a=n(0),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(a);t.default={handleEvents:o.default,addEventListener:i.addEventListener,removeEventListener:i.removeEventListener,getEventListeners:i.getEventListeners,delegate:i.delegate},e.exports=t.default},function(e,t,n){"use strict";if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}},function(e,t,n){"use strict";function r(e){var t=Object.create(null);return t.off=function(n,r){return(0,o.removeEventListener)(e,n,r),t},t.on=function(n,r){return(0,o.addEventListener)(e,n,r),t},t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var o=n(0);e.exports=t.default},function(e,t,n){"use strict";function r(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.addEventListener?e.addEventListener(t,n,r):e.attachEvent("on"+t,n)}function o(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.removeEventListener?e.removeEventListener(t,n,r):e.detachEvent("on"+t,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.attachEvent=r,t.detachEvent=o},function(e,t,n){"use strict";function r(e){var t=(e||"").indexOf(".");return[t>-1?e.substr(0,t):e,t>-1?e.substr(t+1):void 0]}function o(e,t,n,r,o){return!o&&(e===t&&!n||n===r&&!e||n===r&&e===t)}Object.defineProperty(t,"__esModule",{value:!0}),t.splitEventName=r,t.match=o}])});
+/*! handle-events@v1.1.0. Jherax 2017. Visit https://github.com/jherax/handle-events */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.jsu=t():Object.prototype.toString.call(e.jsu)==="[object Object]"?!function(m,f,p){for(p in f)m[p]=f[p]}(e.jsu,t()):e.jsu=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,n){"use strict";function r(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=(0,f.splitEventName)(t),a=s(o,2),i=a[0],u=a[1];if(!i)throw Error("Event name was not provided");var l=v.find(function(t){return t.node===e});void 0===l&&(l=Object.create(null),l.events=Object.create(null),l.node=e,v.push(l)),l.events[i]||(l.events[i]=[]);var d=Object.create(null);d.namespace=u,d.handler=n,d.useCapture=r,l.events[i].push(d),(0,c.attachEvent)(e,i,n,r)}function o(e,t,n){var r=(0,f.splitEventName)(t),o=s(r,2),a=o[0],i=o[1],u=v.find(function(t){return t.node===e});if(u){var l=function(r){var o=this.toString();return!(!n&&!t||(0,f.match)(a,o,i,r.namespace,n)||r.handler===n&&(!t||(0,f.match)(a,o,i,r.namespace)))||!!(0,c.detachEvent)(e,o,r.handler,r.useCapture)};(a?[a]:Object.keys(u.events)).forEach(function(e){u.events[e]=(u.events[e]||[]).filter(l,e)})}}function a(e){var t=this.eventName,n=this.eventType,r=this.namespace,o=this.listeners;(0,f.match)(t,n,r,e.namespace)&&(o[n]=o[n]||[],o[n].push(e))}function i(e,t){var n=(0,f.splitEventName)(t),r=s(n,2),o=r[0],i=r[1],u=v.find(function(t){return t.node===e}),c={namespace:i,eventName:o,listeners:{}};return u?t?((o?[o]:Object.keys(u.events)).forEach(function(e){c.eventType=e,(u.events[e]||[]).forEach(a,c)}),c.listeners):u.events:c.listeners}function u(e,t,n,o,a){r(e,t,function(e){e.target.matches(n)&&o(e)},a)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.addEventListener=r,t.removeEventListener=o,t.getEventListeners=i,t.delegate=u;var c=n(4),f=n(5),v=[]},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(2);var r=n(3),o=function(e){return e&&e.__esModule?e:{default:e}}(r),a=n(0),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(a);t.default={handleEvents:o.default,addEventListener:i.addEventListener,removeEventListener:i.removeEventListener,getEventListeners:i.getEventListeners,delegate:i.delegate},e.exports=t.default},function(e,t,n){"use strict";if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}},function(e,t,n){"use strict";function r(e){var t=Object.create(null);return t.off=function(n,r){return(0,o.removeEventListener)(e,n,r),t},t.on=function(n,r){var a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return(0,o.addEventListener)(e,n,r,a),t},t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var o=n(0);e.exports=t.default},function(e,t,n){"use strict";function r(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.addEventListener?e.addEventListener(t,n,!!r):e.attachEvent("on"+t,n)}function o(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.removeEventListener?e.removeEventListener(t,n,!!r):e.detachEvent("on"+t,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.attachEvent=r,t.detachEvent=o},function(e,t,n){"use strict";function r(e){var t=(e||"").indexOf(".");return[t>-1?e.substr(0,t):e,t>-1?e.substr(t+1):void 0]}function o(e,t,n,r,o){return!o&&(e===t&&!n||n===r&&!e||n===r&&e===t)}Object.defineProperty(t,"__esModule",{value:!0}),t.splitEventName=r,t.match=o}])});
//# sourceMappingURL=handle-events.min.map
\ No newline at end of file
diff --git a/dist/handle-events.min.map b/dist/handle-events.min.map
index db2a9a5..83b2d95 100644
--- a/dist/handle-events.min.map
+++ b/dist/handle-events.min.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///handle-events.min.js","webpack:///webpack/bootstrap 95119d7e851c54ac29ac","webpack:///./src/events.js","webpack:///./src/main.js","webpack:///./src/prototypes.js","webpack:///./src/facade.js","webpack:///./src/adapter.js","webpack:///./src/utils.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","addEventListener","node","eventns","listener","useCapture","arguments","length","undefined","_splitEventName","_utils","splitEventName","_splitEventName2","_slicedToArray","event","namespace","Error","data","NODES","find","create","events","push","eventData","handler","_adapter","attachEvent","removeEventListener","_splitEventName3","_splitEventName4","removeHandlers","eventType","toString","match","detachEvent","keys","forEach","type","filter","getHandlers","eventName","listeners","getEventListeners","_splitEventName5","_splitEventName6","context","delegate","selector","e","target","matches","value","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","Symbol","iterator","next","done","err","Array","isArray","TypeError","_facade","_facade2","obj","default","_events","evt","newObj","key","handleEvents","Element","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","fluent","off","on","indexOf","substr","eventNamespace"],"mappings":";CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,IAAAD,IAEAD,EAAA,IAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAE,EAAAF,EACAG,GAAA,EACAV,WAUA,OANAK,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,GAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KA4DA,OAhCAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,SAAAd,EAAAe,EAAAC,GACAV,EAAAW,EAAAjB,EAAAe,IACAG,OAAAC,eAAAnB,EAAAe,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAV,EAAAiB,EAAA,SAAAtB,GACA,GAAAe,GAAAf,KAAAuB,WACA,WAA2B,MAAAvB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAK,GAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDpB,EAAAuB,EAAA,GAGAvB,IAAAwB,EAAA,KDgBM,SAAU7B,EAAQD,EAASM,GAEjC,YE9DO,SAASyB,GAAiBC,EAAMC,EAASC,GAA8B,GAApBC,GAAoBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,GAAAG,GACjD,EAAAC,EAAAC,gBAAeR,GADkCS,EAAAC,EAAAJ,EAAA,GACrEK,EADqEF,EAAA,GAC9DG,EAD8DH,EAAA,EAE5E,KAAKE,EAAO,KAAME,OAAM,8BAExB,IAAIC,GAAOC,EAAMC,KAAK,SAAAnC,GAAA,MAAKA,GAAEkB,OAASA,QACzBM,KAATS,IACFA,EAAO7B,OAAOgC,OAAO,MACrBH,EAAKI,OAASjC,OAAOgC,OAAO,MAC5BH,EAAKf,KAAOA,EACZgB,EAAMI,KAAKL,IAGRA,EAAKI,OAAOP,KAAQG,EAAKI,OAAOP,MACrC,IAAMS,GAAYnC,OAAOgC,OAAO,KAChCG,GAAUR,UAAYA,EACtBQ,EAAUC,QAAUpB,EACpBmB,EAAUlB,WAAaA,EAEvBY,EAAKI,OAAOP,GAAOQ,KAAKC,IACxB,EAAAE,EAAAC,aAAYxB,EAAMY,EAAOV,EAAUC,GAY9B,QAASsB,GAAoBzB,EAAMC,EAASC,GAAU,GAAAwB,IAChC,EAAAlB,EAAAC,gBAAeR,GADiB0B,EAAAhB,EAAAe,EAAA,GACpDd,EADoDe,EAAA,GAC7Cd,EAD6Cc,EAAA,GAGrDZ,EAAOC,EAAMC,KAAK,SAAAnC,GAAA,MAAKA,GAAEkB,OAASA,GACxC,IAAKe,EAAL,CACA,GACMa,GAAiB,SAAgBP,GACrC,GAAMQ,GAAYzD,KAAK0D,UACvB,UAAM5B,IAAaD,IACjB,EAAAO,EAAAuB,OAAMnB,EAAOiB,EAAWhB,EAAWQ,EAAUR,UAAWX,IACvDmB,EAAUC,UAAYpB,KACnBD,IAAW,EAAAO,EAAAuB,OAAMnB,EAAOiB,EAAWhB,EAAWQ,EAAUR,iBAChD,EAAAU,EAAAS,aAAYhC,EAAM6B,EAAWR,EAAUC,QAASD,EAAUlB,cAP3DS,GAASA,GAAS1B,OAAO+C,KAAKlB,EAAKI,SAU3Ce,QAAQ,SAACC,GAEdpB,EAAKI,OAAOgB,IAASpB,EAAKI,OAAOgB,QAAaC,OAAOR,EAAgBO,MAUzE,QAASE,GAAYhB,GAAW,GACvBiB,GAA8ClE,KAA9CkE,UAAWT,EAAmCzD,KAAnCyD,UAAWhB,EAAwBzC,KAAxByC,UAAW0B,EAAanE,KAAbmE,WACpC,EAAA/B,EAAAuB,OAAMO,EAAWT,EAAWhB,EAAWQ,EAAUR,aACnD0B,EAAUV,GAAaU,EAAUV,OACjCU,EAAUV,GAAWT,KAAKC,IAcvB,QAASmB,GAAkBxC,EAAMC,GAAS,GAAAwC,IACpB,EAAAjC,EAAAC,gBAAeR,GADKyC,EAAA/B,EAAA8B,EAAA,GACxC7B,EADwC8B,EAAA,GACjC7B,EADiC6B,EAAA,GAGzC3B,EAAOC,EAAMC,KAAK,SAAAnC,GAAA,MAAKA,GAAEkB,OAASA,IAClC2C,GACJ9B,YACAyB,UAAW1B,EACX2B,aAEF,OAAKxB,GACAd,IACUW,GAASA,GAAS1B,OAAO+C,KAAKlB,EAAKI,SAC3Ce,QAAQ,SAACL,GACdc,EAAQd,UAAYA,GACnBd,EAAKI,OAAOU,QAAkBK,QAAQG,EAAaM,KAE/CA,EAAQJ,WANMxB,EAAKI,OADRwB,EAAQJ,UAiBrB,QAASK,GAAS5C,EAAM6C,EAAU5C,EAASC,EAAUC,GAC1DJ,EAAiBC,EAAMC,EAAS,SAAC6C,GAC3BA,EAAEC,OAAOC,QAAQH,IACnB3C,EAAS4C,IAEV3C,GF1CLjB,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,GAGT,IAAItC,GAAiB,WAAc,QAASuC,GAAcC,EAAK1E,GAAK,GAAI2E,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKjD,EAAW,KAAM,IAAK,GAAiCkD,GAA7BC,EAAKN,EAAIO,OAAOC,cAAmBN,GAAMG,EAAKC,EAAGG,QAAQC,QAAoBT,EAAKhC,KAAKoC,EAAGP,QAAYxE,GAAK2E,EAAK/C,SAAW5B,GAA3D4E,GAAK,IAAoE,MAAOS,GAAOR,GAAK,EAAMC,EAAKO,EAAO,QAAU,KAAWT,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK1E,GAAK,GAAIsF,MAAMC,QAAQb,GAAQ,MAAOA,EAAY,IAAIO,OAAOC,WAAYzE,QAAOiE,GAAQ,MAAOD,GAAcC,EAAK1E,EAAa,MAAM,IAAIwF,WAAU,2DAEtlBjG,GEvEgB+B,mBFwEhB/B,EEzCgByD,sBF0ChBzD,EEGgBwE,oBFFhBxE,EE4BgB4E,UAvHhB,IAAArB,GAAAjD,EAAA,GACAkC,EAAAlC,EAAA,GAKM0C,MF+OA,SAAU/C,EAAQD,EAASM,GAEjC,YAGAY,QAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IG3PT3E,EAAA,EACA,IAAA4F,GAAA5F,EAAA,GHiQI6F,EAQJ,SAAgCC,GAAO,MAAOA,IAAOA,EAAI5E,WAAa4E,GAAQC,QAASD,IARjDF,GGhQtCI,EAAAhG,EAAA,GAAYiG,EHsQZ,SAAiCH,GAAO,GAAIA,GAAOA,EAAI5E,WAAc,MAAO4E,EAAc,IAAII,KAAa,IAAW,MAAPJ,EAAe,IAAK,GAAIK,KAAOL,GAAWlF,OAAOS,UAAUC,eAAejB,KAAKyF,EAAKK,KAAMD,EAAOC,GAAOL,EAAIK,GAAgC,OAAtBD,GAAOH,QAAUD,EAAYI,GAFhOF,EAMlCtG,GAAQqG,SGvQNK,uBACA3E,iBAAkBwE,EAAIxE,iBACtB0B,oBAAqB8C,EAAI9C,oBACzBe,kBAAmB+B,EAAI/B,kBACvBI,SAAU2B,EAAI3B,UH0QhB3E,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASM,GAEjC,YIzRA,IAAuB,mBAAZqG,WAA4BA,QAAQhF,UAAUqD,QAAS,CAChE,GAAM4B,GAAQD,QAAQhF,SAEtBiF,GAAM5B,QAAU4B,EAAMC,iBACpBD,EAAME,oBACNF,EAAMG,mBACNH,EAAMI,kBACNJ,EAAMK,wBJ6RJ,SAAUhH,EAAQD,EAASM,GAEjC,YK7Re,SAASoG,GAAa1E,GACnC,GAAMkF,GAAShG,OAAOgC,OAAO,KAS7B,OARAgE,GAAOC,IAAM,SAAClF,EAASC,GAErB,OADA,EAAAoE,EAAA7C,qBAAoBzB,EAAMC,EAASC,GAC5BgF,GAETA,EAAOE,GAAK,SAACnF,EAASC,GAEpB,OADA,EAAAoE,EAAAvE,kBAAiBC,EAAMC,EAASC,GACzBgF,GAEFA,ELsRThG,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IAETjF,EAAQqG,QKnSgBK,CATxB,IAAAJ,GAAAhG,EAAA,ELmUAL,GAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASM,GAEjC,YMjUO,SAASkD,GAAYxB,EAAMsC,EAAWpC,GAA8B,GAApBC,GAAoBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,EACrEJ,GAAKD,iBACPC,EAAKD,iBAAiBuC,EAAWpC,EAAUC,GAE3CH,EAAKwB,YAAL,KAAsBc,EAAapC,GAYhC,QAAS8B,GAAYhC,EAAMsC,EAAWpC,GAA8B,GAApBC,GAAoBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,EACrEJ,GAAKyB,oBACPzB,EAAKyB,oBAAoBa,EAAWpC,EAAUC,GAE9CH,EAAKgC,YAAL,KAAsBM,EAAapC,GNgTvChB,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IAETjF,EMvUgBwD,cNwUhBxD,EMxTgBgE,eN+VV,SAAU/D,EAAQD,EAASM,GAEjC,YOnXO,SAASmC,GAAeR,GAC7B,GAAMxB,IAAKwB,GAAW,IAAIoF,QAAQ,IAGlC,QAFU5G,GAAK,EAAIwB,EAAQqF,OAAO,EAAG7G,GAAKwB,EAC5BxB,GAAK,EAAIwB,EAAQqF,OAAO7G,EAAI,OAAK6B,IAc1C,QAASyB,GAAMO,EAAWT,EAAWhB,EAAW0E,EAAgBjE,GACrE,OAAQA,IACLgB,IAAcT,IAAchB,GAC5BA,IAAc0E,IAAmBjD,GACjCzB,IAAc0E,GAAkBjD,IAAcT,GPiWnD3C,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IAETjF,EOzXgByC,iBP0XhBzC,EOzWgB+D","file":"handle-events.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsu\"] = factory();\n\telse\n\t\troot[\"jsu\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsu\"] = factory();\n\telse\n\t\troot[\"jsu\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getEventListeners = getEventListeners;\nexports.delegate = delegate;\n\nvar _adapter = __webpack_require__(4);\n\nvar _utils = __webpack_require__(5);\n\n/**\n * @private\n */\nvar NODES = [];\n\n/**\n * Attaches an event-handler to a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: name of the event/namespace to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nfunction addEventListener(node, eventns, listener) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var _splitEventName = (0, _utils.splitEventName)(eventns),\n _splitEventName2 = _slicedToArray(_splitEventName, 2),\n event = _splitEventName2[0],\n namespace = _splitEventName2[1];\n\n if (!event) throw Error('Event name was not provided');\n // gets the events associated to a DOM node\n var data = NODES.find(function (d) {\n return d.node === node;\n });\n if (data === undefined) {\n data = Object.create(null); // no inherited properties\n data.events = Object.create(null);\n data.node = node;\n NODES.push(data);\n }\n // checks if the node has listeners associated to the event\n if (!data.events[event]) data.events[event] = [];\n var eventData = Object.create(null);\n eventData.namespace = namespace;\n eventData.handler = listener;\n eventData.useCapture = useCapture;\n // registers the event listener into the events\n data.events[event].push(eventData);\n (0, _adapter.attachEvent)(node, event, listener, useCapture);\n}\n\n/**\n * Removes an event-handler from a DOM element.\n * Events with namespace are allowed.\n *\n * @private\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace to remove\n * @param {Function} listener: (optional) event handler\n */\nfunction removeEventListener(node, eventns, listener) {\n var _splitEventName3 = (0, _utils.splitEventName)(eventns),\n _splitEventName4 = _slicedToArray(_splitEventName3, 2),\n event = _splitEventName4[0],\n namespace = _splitEventName4[1];\n // gets the events associated to a DOM node\n\n\n var data = NODES.find(function (d) {\n return d.node === node;\n });\n if (!data) return;\n var events = event ? [event] : Object.keys(data.events);\n var removeHandlers = function remove(eventData) {\n var eventType = this.toString();\n if (!listener && !eventns || (0, _utils.match)(event, eventType, namespace, eventData.namespace, listener) || eventData.handler === listener && (!eventns || (0, _utils.match)(event, eventType, namespace, eventData.namespace))) return !!(0, _adapter.detachEvent)(node, eventType, eventData.handler, eventData.useCapture);\n return true;\n };\n events.forEach(function (type) {\n // removes event-handlers by type, namespace or listener\n data.events[type] = (data.events[type] || []).filter(removeHandlers, type);\n });\n}\n\n/**\n * Gets the `eventData` objects matching the criteria\n *\n * @private\n * @param {Object} eventData: the event data associated to the event registered\n */\nfunction getHandlers(eventData) {\n var eventName = this.eventName,\n eventType = this.eventType,\n namespace = this.namespace,\n listeners = this.listeners;\n\n if ((0, _utils.match)(eventName, eventType, namespace, eventData.namespace)) {\n listeners[eventType] = listeners[eventType] || [];\n listeners[eventType].push(eventData);\n }\n}\n\n// TODO: create a method to get events from jQuery\n\n/**\n * Gets all event-handlers from a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace\n * @return {Object}\n */\nfunction getEventListeners(node, eventns) {\n var _splitEventName5 = (0, _utils.splitEventName)(eventns),\n _splitEventName6 = _slicedToArray(_splitEventName5, 2),\n event = _splitEventName6[0],\n namespace = _splitEventName6[1];\n // gets the events associated to a DOM node\n\n\n var data = NODES.find(function (d) {\n return d.node === node;\n });\n var context = {\n namespace: namespace,\n eventName: event,\n listeners: {}\n };\n if (!data) return context.listeners;\n if (!eventns) return data.events; // Object with all event types\n var events = event ? [event] : Object.keys(data.events);\n events.forEach(function (eventType) {\n context.eventType = eventType;\n (data.events[eventType] || []).forEach(getHandlers, context);\n });\n return context.listeners;\n}\n\n/**\n * @param {Element} node: DOM element\n * @param {String} selector: CSS Selector for the event\n * @param {String} eventns: name of the event/namespace to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nfunction delegate(node, selector, eventns, listener, useCapture) {\n addEventListener(node, eventns, function (e) {\n if (e.target.matches(selector)) {\n listener(e);\n }\n }, useCapture);\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__webpack_require__(2);\n\nvar _facade = __webpack_require__(3);\n\nvar _facade2 = _interopRequireDefault(_facade);\n\nvar _events = __webpack_require__(0);\n\nvar evt = _interopRequireWildcard(_events);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n handleEvents: _facade2.default,\n addEventListener: evt.addEventListener,\n removeEventListener: evt.removeEventListener,\n getEventListeners: evt.getEventListeners,\n delegate: evt.delegate\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = handleEvents;\n\nvar _events = __webpack_require__(0);\n\n/**\n * Factory function that implements a fluent interface\n * to handle events by allowing method chaining.\n *\n * @param {Element} node: DOM element\n * @return {Object}\n */\nfunction handleEvents(node) {\n var fluent = Object.create(null);\n fluent.off = function (eventns, listener) {\n (0, _events.removeEventListener)(node, eventns, listener);\n return fluent;\n };\n fluent.on = function (eventns, listener) {\n (0, _events.addEventListener)(node, eventns, listener);\n return fluent;\n };\n return fluent;\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.attachEvent = attachEvent;\nexports.detachEvent = detachEvent;\n/**\n * Attaches an event-handler to a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nfunction attachEvent(node, eventName, listener) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (node.addEventListener) {\n node.addEventListener(eventName, listener, useCapture);\n } else {\n node.attachEvent(\"on\" + eventName, listener);\n }\n}\n\n/**\n * Removes an event-handler from a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nfunction detachEvent(node, eventName, listener) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (node.removeEventListener) {\n node.removeEventListener(eventName, listener, useCapture);\n } else {\n node.detachEvent(\"on\" + eventName, listener);\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.splitEventName = splitEventName;\nexports.match = match;\n/**\n * Split the event name and the namespace\n *\n * @param {String} eventns: name of the event/namespace\n * @return {Array}\n */\nfunction splitEventName(eventns) {\n var i = (eventns || '').indexOf('.'),\n event = i > -1 ? eventns.substr(0, i) : eventns,\n namespace = i > -1 ? eventns.substr(i + 1) : undefined;\n return [event, namespace];\n}\n\n/**\n * Rules to match event handlers\n *\n * @param {String} eventName: event name passed to the invoker function\n * @param {String} eventType: event type in the `data.events` object\n * @param {String} namespace: namespace passed to the invoker function\n * @param {String} eventNamespace: namespace associated to the handler in `eventData` object\n * @param {Function} handler: envent listener passed to the invoker function\n * @return {Boolean}\n */\nfunction match(eventName, eventType, namespace, eventNamespace, handler) {\n return !handler && (eventName === eventType && !namespace || namespace === eventNamespace && !eventName || namespace === eventNamespace && eventName === eventType);\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// handle-events.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 95119d7e851c54ac29ac","import {attachEvent, detachEvent} from './adapter';\nimport {splitEventName, match} from './utils';\n\n/**\n * @private\n */\nconst NODES = [];\n\n/**\n * Attaches an event-handler to a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: name of the event/namespace to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nexport function addEventListener(node, eventns, listener, useCapture = false) {\n const [event, namespace] = splitEventName(eventns);\n if (!event) throw Error('Event name was not provided');\n // gets the events associated to a DOM node\n let data = NODES.find(d => d.node === node);\n if (data === undefined) {\n data = Object.create(null); // no inherited properties\n data.events = Object.create(null);\n data.node = node;\n NODES.push(data);\n }\n // checks if the node has listeners associated to the event\n if (!data.events[event]) data.events[event] = [];\n const eventData = Object.create(null);\n eventData.namespace = namespace;\n eventData.handler = listener;\n eventData.useCapture = useCapture;\n // registers the event listener into the events\n data.events[event].push(eventData);\n attachEvent(node, event, listener, useCapture);\n}\n\n/**\n * Removes an event-handler from a DOM element.\n * Events with namespace are allowed.\n *\n * @private\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace to remove\n * @param {Function} listener: (optional) event handler\n */\nexport function removeEventListener(node, eventns, listener) {\n const [event, namespace] = splitEventName(eventns);\n // gets the events associated to a DOM node\n const data = NODES.find(d => d.node === node);\n if (!data) return;\n const events = event ? [event] : Object.keys(data.events);\n const removeHandlers = function remove(eventData) {\n const eventType = this.toString();\n if ((!listener && !eventns) ||\n match(event, eventType, namespace, eventData.namespace, listener) ||\n (eventData.handler === listener &&\n (!eventns || match(event, eventType, namespace, eventData.namespace))\n )) return !!detachEvent(node, eventType, eventData.handler, eventData.useCapture);\n return true;\n };\n events.forEach((type) => {\n // removes event-handlers by type, namespace or listener\n data.events[type] = (data.events[type] || []).filter(removeHandlers, type);\n });\n}\n\n/**\n * Gets the `eventData` objects matching the criteria\n *\n * @private\n * @param {Object} eventData: the event data associated to the event registered\n */\nfunction getHandlers(eventData) {\n const {eventName, eventType, namespace, listeners} = this;\n if (match(eventName, eventType, namespace, eventData.namespace)) {\n listeners[eventType] = listeners[eventType] || [];\n listeners[eventType].push(eventData);\n }\n}\n\n// TODO: create a method to get events from jQuery\n\n/**\n * Gets all event-handlers from a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace\n * @return {Object}\n */\nexport function getEventListeners(node, eventns) {\n const [event, namespace] = splitEventName(eventns);\n // gets the events associated to a DOM node\n const data = NODES.find(d => d.node === node);\n const context = {\n namespace,\n eventName: event,\n listeners: {},\n };\n if (!data) return context.listeners;\n if (!eventns) return data.events; // Object with all event types\n const events = event ? [event] : Object.keys(data.events);\n events.forEach((eventType) => {\n context.eventType = eventType;\n (data.events[eventType] || []).forEach(getHandlers, context);\n });\n return context.listeners;\n}\n\n/**\n * @param {Element} node: DOM element\n * @param {String} selector: CSS Selector for the event\n * @param {String} eventns: name of the event/namespace to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nexport function delegate(node, selector, eventns, listener, useCapture) {\n addEventListener(node, eventns, (e) => {\n if (e.target.matches(selector)) {\n listener(e);\n }\n }, useCapture);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events.js","import './prototypes';\nimport handleEvents from './facade';\nimport * as evt from './events';\n\nexport default {\n handleEvents,\n addEventListener: evt.addEventListener,\n removeEventListener: evt.removeEventListener,\n getEventListeners: evt.getEventListeners,\n delegate: evt.delegate,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","if (typeof Element !== 'undefined' && !Element.prototype.matches) {\n const proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/prototypes.js","import {addEventListener, removeEventListener} from './events';\n\n/**\n * Factory function that implements a fluent interface\n * to handle events by allowing method chaining.\n *\n * @param {Element} node: DOM element\n * @return {Object}\n */\nexport default function handleEvents(node) {\n const fluent = Object.create(null);\n fluent.off = (eventns, listener) => {\n removeEventListener(node, eventns, listener);\n return fluent;\n };\n fluent.on = (eventns, listener) => {\n addEventListener(node, eventns, listener);\n return fluent;\n };\n return fluent;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/facade.js","/**\n * Attaches an event-handler to a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nexport function attachEvent(node, eventName, listener, useCapture = false) {\n if (node.addEventListener) {\n node.addEventListener(eventName, listener, useCapture);\n } else {\n node.attachEvent(`on${eventName}`, listener);\n }\n}\n\n/**\n * Removes an event-handler from a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: Event Capture\n */\nexport function detachEvent(node, eventName, listener, useCapture = false) {\n if (node.removeEventListener) {\n node.removeEventListener(eventName, listener, useCapture);\n } else {\n node.detachEvent(`on${eventName}`, listener);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/adapter.js","/**\n * Split the event name and the namespace\n *\n * @param {String} eventns: name of the event/namespace\n * @return {Array}\n */\nexport function splitEventName(eventns) {\n const i = (eventns || '').indexOf('.'),\n event = i > -1 ? eventns.substr(0, i) : eventns,\n namespace = i > -1 ? eventns.substr(i + 1) : undefined;\n return [event, namespace];\n}\n\n/**\n * Rules to match event handlers\n *\n * @param {String} eventName: event name passed to the invoker function\n * @param {String} eventType: event type in the `data.events` object\n * @param {String} namespace: namespace passed to the invoker function\n * @param {String} eventNamespace: namespace associated to the handler in `eventData` object\n * @param {Function} handler: envent listener passed to the invoker function\n * @return {Boolean}\n */\nexport function match(eventName, eventType, namespace, eventNamespace, handler) {\n return !handler && (\n (eventName === eventType && !namespace) ||\n (namespace === eventNamespace && !eventName) ||\n (namespace === eventNamespace && eventName === eventType)\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///handle-events.min.js","webpack:///webpack/bootstrap 30f0b6a25c42c623274d","webpack:///./src/events.js","webpack:///./src/main.js","webpack:///./src/prototypes.js","webpack:///./src/facade.js","webpack:///./src/adapter.js","webpack:///./src/utils.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","addEventListener","node","eventns","listener","useCapture","arguments","length","undefined","_splitEventName","_utils","splitEventName","_splitEventName2","_slicedToArray","event","namespace","Error","data","NODES","find","create","events","push","eventData","handler","_adapter","attachEvent","removeEventListener","_splitEventName3","_splitEventName4","removeHandlers","eventType","toString","match","detachEvent","keys","forEach","type","filter","getHandlers","eventName","listeners","getEventListeners","_splitEventName5","_splitEventName6","context","delegate","selector","e","target","matches","value","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","Symbol","iterator","next","done","err","Array","isArray","TypeError","_facade","_facade2","obj","default","_events","evt","newObj","key","handleEvents","Element","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","fluent","off","on","indexOf","substr","eventNamespace"],"mappings":";CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,IAAAD,IAEAD,EAAA,IAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAE,EAAAF,EACAG,GAAA,EACAV,WAUA,OANAK,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,GAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KA4DA,OAhCAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,SAAAd,EAAAe,EAAAC,GACAV,EAAAW,EAAAjB,EAAAe,IACAG,OAAAC,eAAAnB,EAAAe,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAV,EAAAiB,EAAA,SAAAtB,GACA,GAAAe,GAAAf,KAAAuB,WACA,WAA2B,MAAAvB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAK,GAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDpB,EAAAuB,EAAA,GAGAvB,IAAAwB,EAAA,KDgBM,SAAU7B,EAAQD,EAASM,GAEjC,YE9DO,SAASyB,GAAiBC,EAAMC,EAASC,GAA8B,GAApBC,GAAoBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,GAAAG,GACjD,EAAAC,EAAAC,gBAAeR,GADkCS,EAAAC,EAAAJ,EAAA,GACrEK,EADqEF,EAAA,GAC9DG,EAD8DH,EAAA,EAE5E,KAAKE,EAAO,KAAME,OAAM,8BAExB,IAAIC,GAAOC,EAAMC,KAAK,SAAAnC,GAAA,MAAKA,GAAEkB,OAASA,QACzBM,KAATS,IACFA,EAAO7B,OAAOgC,OAAO,MACrBH,EAAKI,OAASjC,OAAOgC,OAAO,MAC5BH,EAAKf,KAAOA,EACZgB,EAAMI,KAAKL,IAGRA,EAAKI,OAAOP,KAAQG,EAAKI,OAAOP,MACrC,IAAMS,GAAYnC,OAAOgC,OAAO,KAChCG,GAAUR,UAAYA,EACtBQ,EAAUC,QAAUpB,EACpBmB,EAAUlB,WAAaA,EAEvBY,EAAKI,OAAOP,GAAOQ,KAAKC,IACxB,EAAAE,EAAAC,aAAYxB,EAAMY,EAAOV,EAAUC,GAW9B,QAASsB,GAAoBzB,EAAMC,EAASC,GAAU,GAAAwB,IAChC,EAAAlB,EAAAC,gBAAeR,GADiB0B,EAAAhB,EAAAe,EAAA,GACpDd,EADoDe,EAAA,GAC7Cd,EAD6Cc,EAAA,GAGrDZ,EAAOC,EAAMC,KAAK,SAAAnC,GAAA,MAAKA,GAAEkB,OAASA,GACxC,IAAKe,EAAL,CACA,GACMa,GAAiB,SAAgBP,GACrC,GAAMQ,GAAYzD,KAAK0D,UACvB,UAAM5B,IAAaD,IACjB,EAAAO,EAAAuB,OAAMnB,EAAOiB,EAAWhB,EAAWQ,EAAUR,UAAWX,IACvDmB,EAAUC,UAAYpB,KACnBD,IAAW,EAAAO,EAAAuB,OAAMnB,EAAOiB,EAAWhB,EAAWQ,EAAUR,iBAChD,EAAAU,EAAAS,aAAYhC,EAAM6B,EAAWR,EAAUC,QAASD,EAAUlB,cAP3DS,GAASA,GAAS1B,OAAO+C,KAAKlB,EAAKI,SAU3Ce,QAAQ,SAACC,GAEdpB,EAAKI,OAAOgB,IAASpB,EAAKI,OAAOgB,QAAaC,OAAOR,EAAgBO,MAUzE,QAASE,GAAYhB,GAAW,GACvBiB,GAA8ClE,KAA9CkE,UAAWT,EAAmCzD,KAAnCyD,UAAWhB,EAAwBzC,KAAxByC,UAAW0B,EAAanE,KAAbmE,WACpC,EAAA/B,EAAAuB,OAAMO,EAAWT,EAAWhB,EAAWQ,EAAUR,aACnD0B,EAAUV,GAAaU,EAAUV,OACjCU,EAAUV,GAAWT,KAAKC,IAcvB,QAASmB,GAAkBxC,EAAMC,GAAS,GAAAwC,IACpB,EAAAjC,EAAAC,gBAAeR,GADKyC,EAAA/B,EAAA8B,EAAA,GACxC7B,EADwC8B,EAAA,GACjC7B,EADiC6B,EAAA,GAGzC3B,EAAOC,EAAMC,KAAK,SAAAnC,GAAA,MAAKA,GAAEkB,OAASA,IAClC2C,GACJ9B,YACAyB,UAAW1B,EACX2B,aAEF,OAAKxB,GACAd,IACUW,GAASA,GAAS1B,OAAO+C,KAAKlB,EAAKI,SAC3Ce,QAAQ,SAACL,GACdc,EAAQd,UAAYA,GACnBd,EAAKI,OAAOU,QAAkBK,QAAQG,EAAaM,KAE/CA,EAAQJ,WANMxB,EAAKI,OADRwB,EAAQJ,UAoBrB,QAASK,GAAS5C,EAAMC,EAAS4C,EAAU3C,EAAUC,GAC1DJ,EAAiBC,EAAMC,EAAS,SAAC6C,GAC3BA,EAAEC,OAAOC,QAAQH,IACnB3C,EAAS4C,IAEV3C,GF5CLjB,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,GAGT,IAAItC,GAAiB,WAAc,QAASuC,GAAcC,EAAK1E,GAAK,GAAI2E,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKjD,EAAW,KAAM,IAAK,GAAiCkD,GAA7BC,EAAKN,EAAIO,OAAOC,cAAmBN,GAAMG,EAAKC,EAAGG,QAAQC,QAAoBT,EAAKhC,KAAKoC,EAAGP,QAAYxE,GAAK2E,EAAK/C,SAAW5B,GAA3D4E,GAAK,IAAoE,MAAOS,GAAOR,GAAK,EAAMC,EAAKO,EAAO,QAAU,KAAWT,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK1E,GAAK,GAAIsF,MAAMC,QAAQb,GAAQ,MAAOA,EAAY,IAAIO,OAAOC,WAAYzE,QAAOiE,GAAQ,MAAOD,GAAcC,EAAK1E,EAAa,MAAM,IAAIwF,WAAU,2DAEtlBjG,GEvEgB+B,mBFwEhB/B,EE1CgByD,sBF2ChBzD,EEEgBwE,oBFDhBxE,EE8BgB4E,UAzHhB,IAAArB,GAAAjD,EAAA,GACAkC,EAAAlC,EAAA,GAKM0C,MFiPA,SAAU/C,EAAQD,EAASM,GAEjC,YAGAY,QAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IG7PT3E,EAAA,EACA,IAAA4F,GAAA5F,EAAA,GHmQI6F,EAQJ,SAAgCC,GAAO,MAAOA,IAAOA,EAAI5E,WAAa4E,GAAQC,QAASD,IARjDF,GGlQtCI,EAAAhG,EAAA,GAAYiG,EHwQZ,SAAiCH,GAAO,GAAIA,GAAOA,EAAI5E,WAAc,MAAO4E,EAAc,IAAII,KAAa,IAAW,MAAPJ,EAAe,IAAK,GAAIK,KAAOL,GAAWlF,OAAOS,UAAUC,eAAejB,KAAKyF,EAAKK,KAAMD,EAAOC,GAAOL,EAAIK,GAAgC,OAAtBD,GAAOH,QAAUD,EAAYI,GAFhOF,EAMlCtG,GAAQqG,SGzQNK,uBACA3E,iBAAkBwE,EAAIxE,iBACtB0B,oBAAqB8C,EAAI9C,oBACzBe,kBAAmB+B,EAAI/B,kBACvBI,SAAU2B,EAAI3B,UH4QhB3E,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASM,GAEjC,YIvRA,IAAuB,mBAAZqG,WAA4BA,QAAQhF,UAAUqD,QAAS,CAChE,GAAM4B,GAAQD,QAAQhF,SAEtBiF,GAAM5B,QACJ4B,EAAMC,iBACND,EAAME,oBACNF,EAAMG,mBACNH,EAAMI,kBACNJ,EAAMK,wBJ8RJ,SAAUhH,EAAQD,EAASM,GAEjC,YKnSe,SAASoG,GAAa1E,GACnC,GAAMkF,GAAShG,OAAOgC,OAAO,KAS7B,OARAgE,GAAOC,IAAM,SAAClF,EAASC,GAErB,OADA,EAAAoE,EAAA7C,qBAAoBzB,EAAMC,EAASC,GAC5BgF,GAETA,EAAOE,GAAK,SAACnF,EAASC,GAAiC,GAAvBC,GAAuBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,EAErD,QADA,EAAAkE,EAAAvE,kBAAiBC,EAAMC,EAASC,EAAUC,GACnC+E,GAEFA,EL4RThG,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IAETjF,EAAQqG,QKzSgBK,CATxB,IAAAJ,GAAAhG,EAAA,EL2UAL,GAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASM,GAEjC,YMzUO,SAASkD,GAAYxB,EAAMsC,EAAWpC,GAA8B,GAApBC,GAAoBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,EACrEJ,GAAKD,iBACPC,EAAKD,iBAAiBuC,EAAWpC,IAAYC,GAE7CH,EAAKwB,YAAL,KAAsBc,EAAapC,GAYhC,QAAS8B,GAAYhC,EAAMsC,EAAWpC,GAA8B,GAApBC,GAAoBC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,IAAAA,UAAA,EACrEJ,GAAKyB,oBACPzB,EAAKyB,oBAAoBa,EAAWpC,IAAYC,GAEhDH,EAAKgC,YAAL,KAAsBM,EAAapC,GNwTvChB,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IAETjF,EM/UgBwD,cNgVhBxD,EMhUgBgE,eNuWV,SAAU/D,EAAQD,EAASM,GAEjC,YO3XO,SAASmC,GAAeR,GAC7B,GAAMxB,IAAKwB,GAAW,IAAIoF,QAAQ,IAGlC,QAFU5G,GAAK,EAAIwB,EAAQqF,OAAO,EAAG7G,GAAKwB,EAC5BxB,GAAK,EAAIwB,EAAQqF,OAAO7G,EAAI,OAAK6B,IAc1C,QAASyB,GAAMO,EAAWT,EAAWhB,EAAW0E,EAAgBjE,GACrE,OAAQA,IACLgB,IAAcT,IAAchB,GAC5BA,IAAc0E,IAAmBjD,GACjCzB,IAAc0E,GAAkBjD,IAAcT,GPyWnD3C,OAAOC,eAAenB,EAAS,cAC7BiF,OAAO,IAETjF,EOjYgByC,iBPkYhBzC,EOjXgB+D","file":"handle-events.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsu\"] = factory();\n\telse\n\t\troot[\"jsu\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsu\"] = factory();\n\telse\n\t\troot[\"jsu\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getEventListeners = getEventListeners;\nexports.delegate = delegate;\n\nvar _adapter = __webpack_require__(4);\n\nvar _utils = __webpack_require__(5);\n\n/**\n * @private\n */\nvar NODES = [];\n\n/**\n * Attaches an event-handler to a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: name of the event/namespace to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nfunction addEventListener(node, eventns, listener) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var _splitEventName = (0, _utils.splitEventName)(eventns),\n _splitEventName2 = _slicedToArray(_splitEventName, 2),\n event = _splitEventName2[0],\n namespace = _splitEventName2[1];\n\n if (!event) throw Error('Event name was not provided');\n // gets the events associated to a DOM node\n var data = NODES.find(function (d) {\n return d.node === node;\n });\n if (data === undefined) {\n data = Object.create(null); // no inherited properties\n data.events = Object.create(null);\n data.node = node;\n NODES.push(data);\n }\n // checks if the node has listeners associated to the event\n if (!data.events[event]) data.events[event] = [];\n var eventData = Object.create(null);\n eventData.namespace = namespace;\n eventData.handler = listener;\n eventData.useCapture = useCapture;\n // registers the event listener into the events\n data.events[event].push(eventData);\n (0, _adapter.attachEvent)(node, event, listener, useCapture);\n}\n\n/**\n * Removes an event-handler from a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace to remove\n * @param {Function} listener: (optional) event handler\n */\nfunction removeEventListener(node, eventns, listener) {\n var _splitEventName3 = (0, _utils.splitEventName)(eventns),\n _splitEventName4 = _slicedToArray(_splitEventName3, 2),\n event = _splitEventName4[0],\n namespace = _splitEventName4[1];\n // gets the events associated to a DOM node\n\n\n var data = NODES.find(function (d) {\n return d.node === node;\n });\n if (!data) return;\n var events = event ? [event] : Object.keys(data.events);\n var removeHandlers = function remove(eventData) {\n var eventType = this.toString();\n if (!listener && !eventns || (0, _utils.match)(event, eventType, namespace, eventData.namespace, listener) || eventData.handler === listener && (!eventns || (0, _utils.match)(event, eventType, namespace, eventData.namespace))) return !!(0, _adapter.detachEvent)(node, eventType, eventData.handler, eventData.useCapture);\n return true;\n };\n events.forEach(function (type) {\n // removes event-handlers by type, namespace or listener\n data.events[type] = (data.events[type] || []).filter(removeHandlers, type);\n });\n}\n\n/**\n * Gets the `eventData` objects matching the criteria\n *\n * @private\n * @param {Object} eventData: the event data associated to the event registered\n */\nfunction getHandlers(eventData) {\n var eventName = this.eventName,\n eventType = this.eventType,\n namespace = this.namespace,\n listeners = this.listeners;\n\n if ((0, _utils.match)(eventName, eventType, namespace, eventData.namespace)) {\n listeners[eventType] = listeners[eventType] || [];\n listeners[eventType].push(eventData);\n }\n}\n\n// TODO: create a method to get events from jQuery\n\n/**\n * Gets all event-handlers from a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace\n * @return {Object}\n */\nfunction getEventListeners(node, eventns) {\n var _splitEventName5 = (0, _utils.splitEventName)(eventns),\n _splitEventName6 = _slicedToArray(_splitEventName5, 2),\n event = _splitEventName6[0],\n namespace = _splitEventName6[1];\n // gets the events associated to a DOM node\n\n\n var data = NODES.find(function (d) {\n return d.node === node;\n });\n var context = {\n namespace: namespace,\n eventName: event,\n listeners: {}\n };\n if (!data) return context.listeners;\n if (!eventns) return data.events; // Object with all event types\n var events = event ? [event] : Object.keys(data.events);\n events.forEach(function (eventType) {\n context.eventType = eventType;\n (data.events[eventType] || []).forEach(getHandlers, context);\n });\n return context.listeners;\n}\n\n/**\n * Attaches a listener to a DOM `Element` but delegates the event-listener\n * to the DOM Elements beneath that matches with the `selector` provided.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: name of the event/namespace to register\n * @param {String} selector: CSS selector for those elements that will propagate the event\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nfunction delegate(node, eventns, selector, listener, useCapture) {\n addEventListener(node, eventns, function (e) {\n if (e.target.matches(selector)) {\n listener(e);\n }\n }, useCapture);\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__webpack_require__(2);\n\nvar _facade = __webpack_require__(3);\n\nvar _facade2 = _interopRequireDefault(_facade);\n\nvar _events = __webpack_require__(0);\n\nvar evt = _interopRequireWildcard(_events);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n handleEvents: _facade2.default,\n addEventListener: evt.addEventListener,\n removeEventListener: evt.removeEventListener,\n getEventListeners: evt.getEventListeners,\n delegate: evt.delegate\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\n\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = handleEvents;\n\nvar _events = __webpack_require__(0);\n\n/**\n * Factory function that implements a fluent interface\n * to handle events by allowing method chaining.\n *\n * @param {Element} node: DOM element\n * @return {Object}\n */\nfunction handleEvents(node) {\n var fluent = Object.create(null);\n fluent.off = function (eventns, listener) {\n (0, _events.removeEventListener)(node, eventns, listener);\n return fluent;\n };\n fluent.on = function (eventns, listener) {\n var useCapture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n (0, _events.addEventListener)(node, eventns, listener, useCapture);\n return fluent;\n };\n return fluent;\n}\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.attachEvent = attachEvent;\nexports.detachEvent = detachEvent;\n/**\n * Attaches an event-handler to a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nfunction attachEvent(node, eventName, listener) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (node.addEventListener) {\n node.addEventListener(eventName, listener, !!useCapture);\n } else {\n node.attachEvent(\"on\" + eventName, listener);\n }\n}\n\n/**\n * Removes an event-handler from a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nfunction detachEvent(node, eventName, listener) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (node.removeEventListener) {\n node.removeEventListener(eventName, listener, !!useCapture);\n } else {\n node.detachEvent(\"on\" + eventName, listener);\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.splitEventName = splitEventName;\nexports.match = match;\n/**\n * Split the event name and the namespace\n *\n * @param {String} eventns: name of the event/namespace\n * @return {Array}\n */\nfunction splitEventName(eventns) {\n var i = (eventns || '').indexOf('.'),\n event = i > -1 ? eventns.substr(0, i) : eventns,\n namespace = i > -1 ? eventns.substr(i + 1) : undefined;\n return [event, namespace];\n}\n\n/**\n * Rules to match event handlers\n *\n * @param {String} eventName: event name passed to the invoker function\n * @param {String} eventType: event type in the `data.events` object\n * @param {String} namespace: namespace passed to the invoker function\n * @param {String} eventNamespace: namespace associated to the handler in `eventData` object\n * @param {Function} handler: envent listener passed to the invoker function\n * @return {Boolean}\n */\nfunction match(eventName, eventType, namespace, eventNamespace, handler) {\n return !handler && (eventName === eventType && !namespace || namespace === eventNamespace && !eventName || namespace === eventNamespace && eventName === eventType);\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// handle-events.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 30f0b6a25c42c623274d","import {attachEvent, detachEvent} from './adapter';\nimport {splitEventName, match} from './utils';\n\n/**\n * @private\n */\nconst NODES = [];\n\n/**\n * Attaches an event-handler to a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: name of the event/namespace to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nexport function addEventListener(node, eventns, listener, useCapture = false) {\n const [event, namespace] = splitEventName(eventns);\n if (!event) throw Error('Event name was not provided');\n // gets the events associated to a DOM node\n let data = NODES.find(d => d.node === node);\n if (data === undefined) {\n data = Object.create(null); // no inherited properties\n data.events = Object.create(null);\n data.node = node;\n NODES.push(data);\n }\n // checks if the node has listeners associated to the event\n if (!data.events[event]) data.events[event] = [];\n const eventData = Object.create(null);\n eventData.namespace = namespace;\n eventData.handler = listener;\n eventData.useCapture = useCapture;\n // registers the event listener into the events\n data.events[event].push(eventData);\n attachEvent(node, event, listener, useCapture);\n}\n\n/**\n * Removes an event-handler from a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace to remove\n * @param {Function} listener: (optional) event handler\n */\nexport function removeEventListener(node, eventns, listener) {\n const [event, namespace] = splitEventName(eventns);\n // gets the events associated to a DOM node\n const data = NODES.find(d => d.node === node);\n if (!data) return;\n const events = event ? [event] : Object.keys(data.events);\n const removeHandlers = function remove(eventData) {\n const eventType = this.toString();\n if ((!listener && !eventns) ||\n match(event, eventType, namespace, eventData.namespace, listener) ||\n (eventData.handler === listener &&\n (!eventns || match(event, eventType, namespace, eventData.namespace))\n )) return !!detachEvent(node, eventType, eventData.handler, eventData.useCapture);\n return true;\n };\n events.forEach((type) => {\n // removes event-handlers by type, namespace or listener\n data.events[type] = (data.events[type] || []).filter(removeHandlers, type);\n });\n}\n\n/**\n * Gets the `eventData` objects matching the criteria\n *\n * @private\n * @param {Object} eventData: the event data associated to the event registered\n */\nfunction getHandlers(eventData) {\n const {eventName, eventType, namespace, listeners} = this;\n if (match(eventName, eventType, namespace, eventData.namespace)) {\n listeners[eventType] = listeners[eventType] || [];\n listeners[eventType].push(eventData);\n }\n}\n\n// TODO: create a method to get events from jQuery\n\n/**\n * Gets all event-handlers from a DOM element.\n * Events with namespace are allowed.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: (optional) name of the event/namespace\n * @return {Object}\n */\nexport function getEventListeners(node, eventns) {\n const [event, namespace] = splitEventName(eventns);\n // gets the events associated to a DOM node\n const data = NODES.find(d => d.node === node);\n const context = {\n namespace,\n eventName: event,\n listeners: {},\n };\n if (!data) return context.listeners;\n if (!eventns) return data.events; // Object with all event types\n const events = event ? [event] : Object.keys(data.events);\n events.forEach((eventType) => {\n context.eventType = eventType;\n (data.events[eventType] || []).forEach(getHandlers, context);\n });\n return context.listeners;\n}\n\n/**\n * Attaches a listener to a DOM `Element` but delegates the event-listener\n * to the DOM Elements beneath that matches with the `selector` provided.\n *\n * @param {Element} node: DOM element\n * @param {String} eventns: name of the event/namespace to register\n * @param {String} selector: CSS selector for those elements that will propagate the event\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nexport function delegate(node, eventns, selector, listener, useCapture) {\n addEventListener(node, eventns, (e) => {\n if (e.target.matches(selector)) {\n listener(e);\n }\n }, useCapture);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events.js","import './prototypes';\nimport handleEvents from './facade';\nimport * as evt from './events';\n\nexport default {\n handleEvents,\n addEventListener: evt.addEventListener,\n removeEventListener: evt.removeEventListener,\n getEventListeners: evt.getEventListeners,\n delegate: evt.delegate,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","/**\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\n\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n const proto = Element.prototype;\n\n proto.matches =\n proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/prototypes.js","import {addEventListener, removeEventListener} from './events';\n\n/**\n * Factory function that implements a fluent interface\n * to handle events by allowing method chaining.\n *\n * @param {Element} node: DOM element\n * @return {Object}\n */\nexport default function handleEvents(node) {\n const fluent = Object.create(null);\n fluent.off = (eventns, listener) => {\n removeEventListener(node, eventns, listener);\n return fluent;\n };\n fluent.on = (eventns, listener, useCapture = false) => {\n addEventListener(node, eventns, listener, useCapture);\n return fluent;\n };\n return fluent;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/facade.js","/**\n * Attaches an event-handler to a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nexport function attachEvent(node, eventName, listener, useCapture = false) {\n if (node.addEventListener) {\n node.addEventListener(eventName, listener, !!useCapture);\n } else {\n node.attachEvent(`on${eventName}`, listener);\n }\n}\n\n/**\n * Removes an event-handler from a DOM element.\n *\n * @param {Element} node: DOM element\n * @param {String} eventName: name of the event to register\n * @param {Function} listener: event handler\n * @param {Boolean} useCapture: event capture\n */\nexport function detachEvent(node, eventName, listener, useCapture = false) {\n if (node.removeEventListener) {\n node.removeEventListener(eventName, listener, !!useCapture);\n } else {\n node.detachEvent(`on${eventName}`, listener);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/adapter.js","/**\n * Split the event name and the namespace\n *\n * @param {String} eventns: name of the event/namespace\n * @return {Array}\n */\nexport function splitEventName(eventns) {\n const i = (eventns || '').indexOf('.'),\n event = i > -1 ? eventns.substr(0, i) : eventns,\n namespace = i > -1 ? eventns.substr(i + 1) : undefined;\n return [event, namespace];\n}\n\n/**\n * Rules to match event handlers\n *\n * @param {String} eventName: event name passed to the invoker function\n * @param {String} eventType: event type in the `data.events` object\n * @param {String} namespace: namespace passed to the invoker function\n * @param {String} eventNamespace: namespace associated to the handler in `eventData` object\n * @param {Function} handler: envent listener passed to the invoker function\n * @return {Boolean}\n */\nexport function match(eventName, eventType, namespace, eventNamespace, handler) {\n return !handler && (\n (eventName === eventType && !namespace) ||\n (namespace === eventNamespace && !eventName) ||\n (namespace === eventNamespace && eventName === eventType)\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js"],"sourceRoot":""}
\ No newline at end of file
diff --git a/package.json b/package.json
index a182a10..a5a6607 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "handle-events",
- "version": "1.0.0a",
+ "version": "1.1.0",
"description": "Manages events listeners in the browser",
"author": "David Rivera ",
"main": "dist/handle-events.js",
@@ -12,7 +12,7 @@
"emitter",
"browser",
"listener",
- "handler",
+ "delegation",
"javascript"
],
"repository": {
diff --git a/src/adapter.js b/src/adapter.js
index 72ead0f..f120ff8 100644
--- a/src/adapter.js
+++ b/src/adapter.js
@@ -4,11 +4,11 @@
* @param {Element} node: DOM element
* @param {String} eventName: name of the event to register
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
export function attachEvent(node, eventName, listener, useCapture = false) {
if (node.addEventListener) {
- node.addEventListener(eventName, listener, useCapture);
+ node.addEventListener(eventName, listener, !!useCapture);
} else {
node.attachEvent(`on${eventName}`, listener);
}
@@ -20,11 +20,11 @@ export function attachEvent(node, eventName, listener, useCapture = false) {
* @param {Element} node: DOM element
* @param {String} eventName: name of the event to register
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
export function detachEvent(node, eventName, listener, useCapture = false) {
if (node.removeEventListener) {
- node.removeEventListener(eventName, listener, useCapture);
+ node.removeEventListener(eventName, listener, !!useCapture);
} else {
node.detachEvent(`on${eventName}`, listener);
}
diff --git a/src/events.js b/src/events.js
index 1fbe712..bae728c 100644
--- a/src/events.js
+++ b/src/events.js
@@ -13,7 +13,7 @@ const NODES = [];
* @param {Element} node: DOM element
* @param {String} eventns: name of the event/namespace to register
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
export function addEventListener(node, eventns, listener, useCapture = false) {
const [event, namespace] = splitEventName(eventns);
@@ -41,7 +41,6 @@ export function addEventListener(node, eventns, listener, useCapture = false) {
* Removes an event-handler from a DOM element.
* Events with namespace are allowed.
*
- * @private
* @param {Element} node: DOM element
* @param {String} eventns: (optional) name of the event/namespace to remove
* @param {Function} listener: (optional) event handler
@@ -111,13 +110,16 @@ export function getEventListeners(node, eventns) {
}
/**
+ * Attaches a listener to a DOM `Element` but delegates the event-listener
+ * to the DOM Elements beneath that matches with the `selector` provided.
+ *
* @param {Element} node: DOM element
- * @param {String} selector: CSS Selector for the event
* @param {String} eventns: name of the event/namespace to register
+ * @param {String} selector: CSS selector for those elements that will propagate the event
* @param {Function} listener: event handler
- * @param {Boolean} useCapture: Event Capture
+ * @param {Boolean} useCapture: event capture
*/
-export function delegate(node, selector, eventns, listener, useCapture) {
+export function delegate(node, eventns, selector, listener, useCapture) {
addEventListener(node, eventns, (e) => {
if (e.target.matches(selector)) {
listener(e);
diff --git a/src/facade.js b/src/facade.js
index f8244f9..21b0c38 100644
--- a/src/facade.js
+++ b/src/facade.js
@@ -13,8 +13,8 @@ export default function handleEvents(node) {
removeEventListener(node, eventns, listener);
return fluent;
};
- fluent.on = (eventns, listener) => {
- addEventListener(node, eventns, listener);
+ fluent.on = (eventns, listener, useCapture = false) => {
+ addEventListener(node, eventns, listener, useCapture);
return fluent;
};
return fluent;
diff --git a/src/prototypes.js b/src/prototypes.js
index c9c02fc..75d4506 100644
--- a/src/prototypes.js
+++ b/src/prototypes.js
@@ -1,7 +1,12 @@
+/**
+ * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
+ */
+
if (typeof Element !== 'undefined' && !Element.prototype.matches) {
const proto = Element.prototype;
- proto.matches = proto.matchesSelector ||
+ proto.matches =
+ proto.matchesSelector ||
proto.mozMatchesSelector ||
proto.msMatchesSelector ||
proto.oMatchesSelector ||
diff --git a/yarn.lock b/yarn.lock
index 8d0606d..d160686 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -26,10 +26,14 @@ acorn@^4.0.3:
version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
-acorn@^5.0.0, acorn@^5.0.1:
+acorn@^5.0.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
+acorn@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"
+
ajv-keywords@^1.0.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
@@ -192,29 +196,37 @@ babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.0"
-babel-core@^6.24.1, babel-core@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
+babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
- babel-code-frame "^6.22.0"
- babel-generator "^6.25.0"
+ chalk "^1.1.3"
+ esutils "^2.0.2"
+ js-tokens "^3.0.2"
+
+babel-core@^6.25.0, babel-core@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
+ dependencies:
+ babel-code-frame "^6.26.0"
+ babel-generator "^6.26.0"
babel-helpers "^6.24.1"
babel-messages "^6.23.0"
- babel-register "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.25.0"
- babel-traverse "^6.25.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- convert-source-map "^1.1.0"
- debug "^2.1.1"
- json5 "^0.5.0"
- lodash "^4.2.0"
- minimatch "^3.0.2"
- path-is-absolute "^1.0.0"
- private "^0.1.6"
+ babel-register "^6.26.0"
+ babel-runtime "^6.26.0"
+ babel-template "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ convert-source-map "^1.5.0"
+ debug "^2.6.8"
+ json5 "^0.5.1"
+ lodash "^4.17.4"
+ minimatch "^3.0.4"
+ path-is-absolute "^1.0.1"
+ private "^0.1.7"
slash "^1.0.0"
- source-map "^0.5.0"
+ source-map "^0.5.6"
babel-eslint@^7.2.3:
version "7.2.3"
@@ -225,17 +237,17 @@ babel-eslint@^7.2.3:
babel-types "^6.23.0"
babylon "^6.17.0"
-babel-generator@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
+babel-generator@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
dependencies:
babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
detect-indent "^4.0.0"
jsesc "^1.3.0"
- lodash "^4.2.0"
- source-map "^0.5.0"
+ lodash "^4.17.4"
+ source-map "^0.5.6"
trim-right "^1.0.1"
babel-helper-bindify-decorators@^6.24.1:
@@ -357,8 +369,8 @@ babel-helpers@^6.24.1:
babel-template "^6.24.1"
babel-loader@^7.1.0:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488"
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126"
dependencies:
find-cache-dir "^1.0.0"
loader-utils "^1.0.2"
@@ -691,17 +703,17 @@ babel-preset-stage-3@^6.24.1:
babel-plugin-transform-exponentiation-operator "^6.24.1"
babel-plugin-transform-object-rest-spread "^6.22.0"
-babel-register@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
+babel-register@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
dependencies:
- babel-core "^6.24.1"
- babel-runtime "^6.22.0"
- core-js "^2.4.0"
+ babel-core "^6.26.0"
+ babel-runtime "^6.26.0"
+ core-js "^2.5.0"
home-or-tmp "^2.0.0"
- lodash "^4.2.0"
+ lodash "^4.17.4"
mkdirp "^0.5.1"
- source-map-support "^0.4.2"
+ source-map-support "^0.4.15"
babel-runtime@^6.18.0, babel-runtime@^6.22.0:
version "6.23.0"
@@ -710,7 +722,14 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0:
core-js "^2.4.0"
regenerator-runtime "^0.10.0"
-babel-template@^6.24.1, babel-template@^6.25.0:
+babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babel-template@^6.24.1:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
dependencies:
@@ -720,6 +739,16 @@ babel-template@^6.24.1, babel-template@^6.25.0:
babylon "^6.17.2"
lodash "^4.2.0"
+babel-template@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ lodash "^4.17.4"
+
babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
@@ -734,6 +763,20 @@ babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
invariant "^2.2.0"
lodash "^4.2.0"
+babel-traverse@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+ dependencies:
+ babel-code-frame "^6.26.0"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ debug "^2.6.8"
+ globals "^9.18.0"
+ invariant "^2.2.2"
+ lodash "^4.17.4"
+
babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
@@ -743,10 +786,23 @@ babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25
lodash "^4.2.0"
to-fast-properties "^1.0.1"
+babel-types@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+ dependencies:
+ babel-runtime "^6.26.0"
+ esutils "^2.0.2"
+ lodash "^4.17.4"
+ to-fast-properties "^1.0.3"
+
babylon@^6.17.0, babylon@^6.17.2:
version "6.17.4"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
+babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@@ -889,9 +945,9 @@ camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-camelcase@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
caseless@~0.12.0:
version "0.12.0"
@@ -922,6 +978,14 @@ chalk@^2.0.0:
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
+chalk@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
+ dependencies:
+ ansi-styles "^3.1.0"
+ escape-string-regexp "^1.0.5"
+ supports-color "^4.0.0"
+
chokidar@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
@@ -949,10 +1013,10 @@ circular-json@^0.3.1:
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
clean-webpack-plugin@^0.1.16:
- version "0.1.16"
- resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.16.tgz#422a8e150bf3d5abfd3d14bfacb070e80fb2e23f"
+ version "0.1.17"
+ resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.17.tgz#71c57242e6d47204d46f809413176e7bed28ec49"
dependencies:
- rimraf "~2.5.1"
+ rimraf "^2.6.1"
cli-cursor@^2.1.0:
version "2.1.0"
@@ -1038,7 +1102,7 @@ contains-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
-convert-source-map@^1.1.0:
+convert-source-map@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
@@ -1046,6 +1110,10 @@ core-js@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+core-js@^2.5.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
+
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -1077,7 +1145,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-spawn@^5.1.0:
+cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
dependencies:
@@ -1122,12 +1190,18 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-debug@^2.1.1, debug@^2.2.0, debug@^2.6.8:
+debug@^2.2.0, debug@^2.6.8:
version "2.6.8"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
dependencies:
ms "2.0.0"
+debug@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ dependencies:
+ ms "2.0.0"
+
decamelize@^1.0.0, decamelize@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -1221,14 +1295,14 @@ emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-enhanced-resolve@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3"
+enhanced-resolve@^3.4.0:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
dependencies:
graceful-fs "^4.1.2"
memory-fs "^0.4.0"
object-assign "^4.0.1"
- tapable "^0.2.5"
+ tapable "^0.2.7"
errno@^0.1.3:
version "0.1.4"
@@ -1308,8 +1382,10 @@ escope@^3.6.0:
estraverse "^4.1.1"
eslint-config-airbnb-base@^11.2.0:
- version "11.2.0"
- resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.2.0.tgz#19a9dc4481a26f70904545ec040116876018f853"
+ version "11.3.2"
+ resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz#8703b11abe3c88ac7ec2b745b7fdf52e00ae680a"
+ dependencies:
+ eslint-restricted-globals "^0.1.1"
eslint-import-resolver-node@^0.3.1:
version "0.3.1"
@@ -1350,6 +1426,10 @@ eslint-plugin-import@^2.5.0:
minimatch "^3.0.3"
read-pkg-up "^2.0.0"
+eslint-restricted-globals@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7"
+
eslint-scope@^3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
@@ -1358,18 +1438,18 @@ eslint-scope@^3.7.1:
estraverse "^4.1.1"
eslint@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.3.0.tgz#fcd7c96376bbf34c85ee67ed0012a299642b108f"
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.9.0.tgz#76879d274068261b191fe0f2f56c74c2f4208e8b"
dependencies:
ajv "^5.2.0"
babel-code-frame "^6.22.0"
- chalk "^1.1.3"
+ chalk "^2.1.0"
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
- debug "^2.6.8"
+ debug "^3.0.1"
doctrine "^2.0.0"
eslint-scope "^3.7.1"
- espree "^3.4.3"
+ espree "^3.5.1"
esquery "^1.0.0"
estraverse "^4.2.0"
esutils "^2.0.2"
@@ -1381,7 +1461,7 @@ eslint@^4.3.0:
imurmurhash "^0.1.4"
inquirer "^3.0.6"
is-resolvable "^1.0.0"
- js-yaml "^3.8.4"
+ js-yaml "^3.9.1"
json-stable-stringify "^1.0.1"
levn "^0.3.0"
lodash "^4.17.4"
@@ -1390,19 +1470,20 @@ eslint@^4.3.0:
natural-compare "^1.4.0"
optionator "^0.8.2"
path-is-inside "^1.0.2"
- pluralize "^4.0.0"
+ pluralize "^7.0.0"
progress "^2.0.0"
require-uncached "^1.0.3"
semver "^5.3.0"
+ strip-ansi "^4.0.0"
strip-json-comments "~2.0.1"
table "^4.0.1"
text-table "~0.2.0"
-espree@^3.4.3:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
+espree@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e"
dependencies:
- acorn "^5.0.1"
+ acorn "^5.1.1"
acorn-jsx "^3.0.0"
esprima@^4.0.0:
@@ -1447,6 +1528,18 @@ evp_bytestokey@^1.0.0:
dependencies:
create-hash "^1.1.1"
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
expand-brackets@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -1629,6 +1722,10 @@ get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -1659,7 +1756,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
-globals@^9.0.0, globals@^9.17.0:
+globals@^9.0.0, globals@^9.17.0, globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -1695,10 +1792,6 @@ has-ansi@^2.0.0:
dependencies:
ansi-regex "^2.0.0"
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-
has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
@@ -1832,7 +1925,7 @@ interpret@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
-invariant@^2.2.0:
+invariant@^2.2.0, invariant@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
dependencies:
@@ -1948,14 +2041,14 @@ is-resolvable@^1.0.0:
dependencies:
tryit "^1.0.1"
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -1974,13 +2067,13 @@ isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-js-tokens@^3.0.0:
+js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-yaml@^3.8.4:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce"
+js-yaml@^3.9.1:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@@ -2069,16 +2162,6 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
-
load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
@@ -2145,6 +2228,12 @@ make-dir@^1.0.0:
dependencies:
pify "^2.3.0"
+mem@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+ dependencies:
+ mimic-fn "^1.0.0"
+
memory-fs@^0.4.0, memory-fs@~0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
@@ -2299,6 +2388,12 @@ normalize-path@^2.0.1:
dependencies:
remove-trailing-separator "^1.0.1"
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ dependencies:
+ path-key "^2.0.0"
+
npmlog@^4.0.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
@@ -2362,11 +2457,13 @@ os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-os-locale@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+os-locale@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
dependencies:
+ execa "^0.7.0"
lcid "^1.0.0"
+ mem "^1.1.0"
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
version "1.0.2"
@@ -2379,6 +2476,10 @@ osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+
p-limit@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
@@ -2432,7 +2533,7 @@ path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-path-is-absolute@^1.0.0:
+path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -2440,18 +2541,14 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+
path-parse@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
path-type@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
@@ -2498,9 +2595,9 @@ pkg-dir@^2.0.0:
dependencies:
find-up "^2.1.0"
-pluralize@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762"
+pluralize@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
prelude-ls@~1.1.2:
version "1.1.2"
@@ -2514,6 +2611,10 @@ private@^0.1.6:
version "0.1.7"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
+private@^0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
+
process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
@@ -2586,13 +2687,6 @@ rc@^1.1.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
@@ -2600,14 +2694,6 @@ read-pkg-up@^2.0.0:
find-up "^2.0.0"
read-pkg "^2.0.0"
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
read-pkg@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
@@ -2645,6 +2731,10 @@ regenerator-runtime@^0.10.0:
version "0.10.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
+regenerator-runtime@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
+
regenerator-transform@0.9.11:
version "0.9.11"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
@@ -2767,12 +2857,6 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1:
dependencies:
glob "^7.0.5"
-rimraf@~2.5.1:
- version "2.5.4"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
- dependencies:
- glob "^7.0.5"
-
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
@@ -2854,13 +2938,13 @@ source-list-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
-source-map-support@^0.4.2:
- version "0.4.15"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
+source-map-support@^0.4.15:
+ version "0.4.18"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
dependencies:
source-map "^0.5.6"
-source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
+source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
@@ -2954,16 +3038,14 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- dependencies:
- is-utf8 "^0.2.0"
-
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+
strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -2972,18 +3054,18 @@ supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-supports-color@^3.1.0:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- dependencies:
- has-flag "^1.0.0"
-
supports-color@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037"
dependencies:
has-flag "^2.0.0"
+supports-color@^4.2.1:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
+ dependencies:
+ has-flag "^2.0.0"
+
table@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435"
@@ -2995,9 +3077,9 @@ table@^4.0.1:
slice-ansi "0.0.4"
string-width "^2.0.0"
-tapable@^0.2.5, tapable@~0.2.5:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
+tapable@^0.2.7:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
tar-pack@^3.4.0:
version "3.4.0"
@@ -3044,7 +3126,7 @@ to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-to-fast-properties@^1.0.1:
+to-fast-properties@^1.0.1, to-fast-properties@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
@@ -3167,15 +3249,15 @@ webpack-sources@^1.0.1:
source-map "~0.5.3"
webpack@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.3.0.tgz#ce2f9e076566aba91f74887133a883fd7da187bc"
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.7.1.tgz#6046b5c415ff7df7a0dc54c5b6b86098e8b952da"
dependencies:
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^5.1.5"
ajv-keywords "^2.0.0"
async "^2.1.2"
- enhanced-resolve "^3.3.0"
+ enhanced-resolve "^3.4.0"
escope "^3.6.0"
interpret "^1.0.0"
json-loader "^0.5.4"
@@ -3186,16 +3268,16 @@ webpack@^3.3.0:
mkdirp "~0.5.0"
node-libs-browser "^2.0.0"
source-map "^0.5.3"
- supports-color "^3.1.0"
- tapable "~0.2.5"
+ supports-color "^4.2.1"
+ tapable "^0.2.7"
uglifyjs-webpack-plugin "^0.4.6"
watchpack "^1.4.0"
webpack-sources "^1.0.1"
- yargs "^6.0.0"
+ yargs "^8.0.2"
-which-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
which@^1.2.9:
version "1.2.14"
@@ -3250,29 +3332,29 @@ yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-yargs-parser@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+yargs-parser@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
dependencies:
- camelcase "^3.0.0"
+ camelcase "^4.1.0"
-yargs@^6.0.0:
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+yargs@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
dependencies:
- camelcase "^3.0.0"
+ camelcase "^4.1.0"
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
+ os-locale "^2.0.0"
+ read-pkg-up "^2.0.0"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
y18n "^3.2.1"
- yargs-parser "^4.2.0"
+ yargs-parser "^7.0.0"
yargs@~3.10.0:
version "3.10.0"