summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebian Javascript Maintainers <pkg-javascript-devel@lists.alioth.debian.org>2016-12-21 11:38:44 -0500
committerJérémy Lal <kapouer@melix.org>2016-12-21 11:38:44 -0500
commitf85d9ff080d9aa64e496ba44c7f45a625c34c800 (patch)
treea85dc9bbd2eeb30628e6a414a8ad12df9ba8b673
parent4ed63963398b548ac309db62e8ae894dbfe15ae2 (diff)
yaeti-module
Gbp-Pq: Name yaeti-module.patch
-rw-r--r--node_modules/yaeti/index.js4
-rw-r--r--node_modules/yaeti/lib/Event.browser.js5
-rw-r--r--node_modules/yaeti/lib/Event.js10
-rw-r--r--node_modules/yaeti/lib/EventTarget.js121
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;
+}