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