UNPKG

svgdom

Version:

Straightforward DOM implementation for SVG, HTML and XML

44 lines (34 loc) 851 B
const $ = Symbol('private properties') export class EventTarget { constructor () { this[$] = {} this[$].listeners = {} } addEventListener (type, callback) { if (!(type in this[$].listeners)) { this[$].listeners[type] = [] } this[$].listeners[type].push(callback) } dispatchEvent (event) { if (!(event.type in this[$].listeners)) { return true } var stack = this[$].listeners[event.type] event.target = this stack.forEach(function (el) { el(event) }) return !event.defaultPrevented } removeEventListener (type, callback) { if (!(type in this[$].listeners)) { return } var stack = this[$].listeners[type] for (var i = 0, il = stack.length; i < il; i++) { if (stack[i] === callback) { stack.splice(i, 1) return } } } }