diff options
author | Debian Javascript Maintainers <pkg-javascript-devel@lists.alioth.debian.org> | 2016-12-21 11:38:44 -0500 |
---|---|---|
committer | Jérémy Lal <kapouer@melix.org> | 2016-12-21 11:38:44 -0500 |
commit | f85d9ff080d9aa64e496ba44c7f45a625c34c800 (patch) | |
tree | a85dc9bbd2eeb30628e6a414a8ad12df9ba8b673 | |
parent | 4ed63963398b548ac309db62e8ae894dbfe15ae2 (diff) |
yaeti-module
Gbp-Pq: Name yaeti-module.patch
-rw-r--r-- | node_modules/yaeti/index.js | 4 | ||||
-rw-r--r-- | node_modules/yaeti/lib/Event.browser.js | 5 | ||||
-rw-r--r-- | node_modules/yaeti/lib/Event.js | 10 | ||||
-rw-r--r-- | node_modules/yaeti/lib/EventTarget.js | 121 |
4 files changed, 140 insertions, 0 deletions
diff --git a/node_modules/yaeti/index.js b/node_modules/yaeti/index.js new file mode 100644 index 0000000..9030e92 --- /dev/null +++ b/node_modules/yaeti/index.js @@ -0,0 +1,4 @@ +module.exports = { + EventTarget: require('./lib/EventTarget'), + Event: require('./lib/Event') +}; diff --git a/node_modules/yaeti/lib/Event.browser.js b/node_modules/yaeti/lib/Event.browser.js new file mode 100644 index 0000000..0cd5ea6 --- /dev/null +++ b/node_modules/yaeti/lib/Event.browser.js @@ -0,0 +1,5 @@ +/** + * In browsers export the native Event interface. + */ + +module.exports = global.Event; diff --git a/node_modules/yaeti/lib/Event.js b/node_modules/yaeti/lib/Event.js new file mode 100644 index 0000000..1d13d10 --- /dev/null +++ b/node_modules/yaeti/lib/Event.js @@ -0,0 +1,10 @@ +/** + * Expose the Event class. + */ +module.exports = _Event; + + +function _Event(type) { + this.type = type; + this.isTrusted = false; +} diff --git a/node_modules/yaeti/lib/EventTarget.js b/node_modules/yaeti/lib/EventTarget.js new file mode 100644 index 0000000..4fb7ec4 --- /dev/null +++ b/node_modules/yaeti/lib/EventTarget.js @@ -0,0 +1,121 @@ +/** + * Expose the _EventTarget class. + */ +module.exports = _EventTarget; + + +function _EventTarget() { + // Do nothing if called for a native EventTarget object.. + if (typeof this.addEventListener === 'function') { + return; + } + + this._listeners = {}; + + this.addEventListener = _addEventListener; + this.removeEventListener = _removeEventListener; + this.dispatchEvent = _dispatchEvent; +} + + +Object.defineProperties(_EventTarget.prototype, { + listeners: { + get: function () { + return this._listeners; + } + } +}); + + +function _addEventListener(type, newListener) { + var listenersType, + i, listener; + + if (!type || !newListener) { + return; + } + + listenersType = this._listeners[type]; + if (listenersType === undefined) { + this._listeners[type] = listenersType = []; + } + + for (i = 0; !!(listener = listenersType[i]); i++) { + if (listener === newListener) { + return; + } + } + + listenersType.push(newListener); +} + + +function _removeEventListener(type, oldListener) { + var listenersType, + i, listener; + + if (!type || !oldListener) { + return; + } + + listenersType = this._listeners[type]; + if (listenersType === undefined) { + return; + } + + for (i = 0; !!(listener = listenersType[i]); i++) { + if (listener === oldListener) { + listenersType.splice(i, 1); + break; + } + } + + if (listenersType.length === 0) { + delete this._listeners[type]; + } +} + + +function _dispatchEvent(event) { + var type, + listenersType, + dummyListener, + stopImmediatePropagation = false, + i, listener; + + if (!event || typeof event.type !== 'string') { + throw new Error('`event` must have a valid `type` property'); + } + + if (event._dispatched) { + throw new Error('event already dispatched'); + } + event._dispatched = true; + + // Force the event to be cancelable. + event.cancelable = true; + event.target = this; + + // Override stopImmediatePropagation() function. + event.stopImmediatePropagation = function () { + stopImmediatePropagation = true; + }; + + type = event.type; + listenersType = (this._listeners[type] || []); + + dummyListener = this['on' + type]; + if (typeof dummyListener === 'function') { + listenersType.push(dummyListener); + } + + for (i = 0; !!(listener = listenersType[i]); i++) { + if (stopImmediatePropagation) { + break; + } + + listener.call(this, event); + } + + return !event.defaultPrevented; +} |