(obj)
| 1987 | return eventStorage; |
| 1988 | }; |
| 1989 | function makeEventable(obj) { |
| 1990 | const eventHost = new EventHost(); |
| 1991 | obj.attachEvent = function(eventName, handler, settings) { |
| 1992 | eventName = "ev_" + eventName.toLowerCase(); |
| 1993 | if (!eventHost.listeners[eventName]) { |
| 1994 | eventHost.listeners[eventName] = createEventStorage(this); |
| 1995 | } |
| 1996 | if (settings && settings.thisObject) { |
| 1997 | handler = handler.bind(settings.thisObject); |
| 1998 | } |
| 1999 | const innerId = eventHost.listeners[eventName].addEvent(handler, settings); |
| 2000 | let handlerId = eventName + ":" + innerId; |
| 2001 | if (settings && settings.id) { |
| 2002 | handlerId = settings.id; |
| 2003 | } |
| 2004 | return handlerId; |
| 2005 | }; |
| 2006 | obj.attachAll = function(callback) { |
| 2007 | this.attachEvent("listen_all", callback); |
| 2008 | }; |
| 2009 | obj.callEvent = function(name, eventArguments) { |
| 2010 | if (eventHost._silent_mode) |
| 2011 | return true; |
| 2012 | const handlerName = "ev_" + name.toLowerCase(); |
| 2013 | const listeners = eventHost.listeners; |
| 2014 | if (listeners["ev_listen_all"]) { |
| 2015 | listeners["ev_listen_all"].apply(this, [name].concat(eventArguments)); |
| 2016 | } |
| 2017 | if (listeners[handlerName]) |
| 2018 | return listeners[handlerName].apply(this, eventArguments); |
| 2019 | return true; |
| 2020 | }; |
| 2021 | obj.checkEvent = function(name) { |
| 2022 | const listeners = eventHost.listeners; |
| 2023 | return !!listeners["ev_" + name.toLowerCase()]; |
| 2024 | }; |
| 2025 | obj.detachEvent = function(id) { |
| 2026 | if (id) { |
| 2027 | let listeners = eventHost.listeners; |
| 2028 | for (const i in listeners) { |
| 2029 | listeners[i].removeEvent(id); |
| 2030 | } |
| 2031 | const list = id.split(":"); |
| 2032 | listeners = eventHost.listeners; |
| 2033 | if (list.length === 2) { |
| 2034 | const eventName = list[0]; |
| 2035 | const eventId = list[1]; |
| 2036 | if (listeners[eventName]) { |
| 2037 | listeners[eventName].removeEvent(eventId); |
| 2038 | } |
| 2039 | } |
| 2040 | } |
| 2041 | }; |
| 2042 | obj.detachAllEvents = function() { |
| 2043 | for (const name in eventHost.listeners) { |
| 2044 | eventHost.listeners[name].clear(); |
| 2045 | } |
| 2046 | }; |
no test coverage detected