1 local EventPrototype = {}
3 function EventPrototype:preventDefault()
4 self.defaultPrevented = true
7 function Event(type, data)
11 defaultPrevented = false,
12 timeStamp = lua_async.clock(),
13 }, {__index = EventPrototype})
16 local EventTargetPrototype = {}
18 function EventTargetPrototype:dispatchEvent(event)
21 local callback = self["on" + event.type]
27 local listeners = self.__eventListeners[type]
30 for i, callback in ipairs(listeners) do
35 return not event.defaultPrevented
38 function EventTargetPrototype:addEventListener(type, callback)
39 local listeners = self.__eventListeners[type] or {}
40 table.insert(listeners, callback)
41 self.__eventListeners[type] = listeners
44 function EventTargetPrototype:removeEventListener(type, callback)
45 local listeners = self.__eventListeners[type]
48 for k, v in pairs(listeners) do
50 table.remove(listeners, k)
57 function EventTarget()
59 __eventListeners = {},
60 }, {__index = EventTargetPrototype})