diff options
Diffstat (limited to 'node_modules/min-document/event')
-rw-r--r-- | node_modules/min-document/event/add-event-listener.js | 17 | ||||
-rw-r--r-- | node_modules/min-document/event/dispatch-event.js | 31 | ||||
-rw-r--r-- | node_modules/min-document/event/remove-event-listener.js | 19 |
3 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/min-document/event/add-event-listener.js b/node_modules/min-document/event/add-event-listener.js new file mode 100644 index 000000000..022c7ef41 --- /dev/null +++ b/node_modules/min-document/event/add-event-listener.js @@ -0,0 +1,17 @@ +module.exports = addEventListener + +function addEventListener(type, listener) { + var elem = this + + if (!elem.listeners) { + elem.listeners = {} + } + + if (!elem.listeners[type]) { + elem.listeners[type] = [] + } + + if (elem.listeners[type].indexOf(listener) === -1) { + elem.listeners[type].push(listener) + } +} diff --git a/node_modules/min-document/event/dispatch-event.js b/node_modules/min-document/event/dispatch-event.js new file mode 100644 index 000000000..8febc990d --- /dev/null +++ b/node_modules/min-document/event/dispatch-event.js @@ -0,0 +1,31 @@ +module.exports = dispatchEvent + +function dispatchEvent(ev) { + var elem = this + var type = ev.type + + if (!ev.target) { + ev.target = elem + } + + if (!elem.listeners) { + elem.listeners = {} + } + + var listeners = elem.listeners[type] + + if (listeners) { + return listeners.forEach(function (listener) { + ev.currentTarget = elem + if (typeof listener === 'function') { + listener(ev) + } else { + listener.handleEvent(ev) + } + }) + } + + if (elem.parentNode) { + elem.parentNode.dispatchEvent(ev) + } +} diff --git a/node_modules/min-document/event/remove-event-listener.js b/node_modules/min-document/event/remove-event-listener.js new file mode 100644 index 000000000..d96091bc3 --- /dev/null +++ b/node_modules/min-document/event/remove-event-listener.js @@ -0,0 +1,19 @@ +module.exports = removeEventListener + +function removeEventListener(type, listener) { + var elem = this + + if (!elem.listeners) { + return + } + + if (!elem.listeners[type]) { + return + } + + var list = elem.listeners[type] + var index = list.indexOf(listener) + if (index !== -1) { + list.splice(index, 1) + } +} |