1"use strict"; 2 3// Class definition 4var JsEventHandler = function() { 5 //////////////////////////// 6 // ** Private Variables ** // 7 //////////////////////////// 8 var _handlers = {}; 9 10 //////////////////////////// 11 // ** Private Methods ** // 12 //////////////////////////// 13 var _triggerEvent = function(element, name, target, e) { 14 if (JsUtils.data(element).has(name) === true) { 15 var handlerId = JsUtil.data(element).get(name); 16 17 if (_handlers[name] && _handlers[name][handlerId]) { 18 var handler = _handlers[name][handlerId]; 19 20 if (handler.name === name) { 21 if (handler.one == true) { 22 if (handler.fired == false) { 23 _handlers[name][handlerId].fired = true; 24 25 return handler.callback.call(this, target, e); 26 } 27 } else { 28 return handler.callback.call(this, target, e); 29 } 30 } 31 } 32 } 33 34 return null; 35 } 36 37 var _addEvent = function(element, name, callback, one) { 38 var handlerId = JsUtils.getUniqueId('event'); 39 40 JsUtils.data(element).set(name, handlerId); 41 42 if (!_handlers[name]) { 43 _handlers[name] = {}; 44 } 45 46 _handlers[name][handlerId] = { 47 name: name, 48 callback: callback, 49 one: one, 50 fired: false 51 }; 52 } 53 54 var _removeEvent = function(element, name) { 55 var handlerId = JsUtils.data(element).get(name); 56 57 if (_handlers[name] && _handlers[name][handlerId]) { 58 delete _handlers[name][handlerId]; 59 } 60 } 61 62 //////////////////////////// 63 // ** Public Methods ** // 64 //////////////////////////// 65 return { 66 trigger: function(element, name, target, e) { 67 return _triggerEvent(element, name, target, e); 68 }, 69 70 on: function(element, name, handler) { 71 return _addEvent(element, name, handler); 72 }, 73 74 one: function(element, name, handler) { 75 return _addEvent(element, name, handler, true); 76 }, 77 78 off: function(element, name) { 79 return _removeEvent(element, name); 80 }, 81 82 debug: function() { 83 for (var b in _handlers) { 84 if (_handlers.hasOwnProperty(b)) console.log(b); 85 } 86 } 87 } 88}(); 89 90// Webpack support 91if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { 92 module.exports = JsEventHandler; 93}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.