(event, type)
| 3232 | |
| 3233 | function createEventHandler(element, events) { |
| 3234 | var eventHandler = function(event, type) { |
| 3235 | // jQuery specific api |
| 3236 | event.isDefaultPrevented = function() { |
| 3237 | return event.defaultPrevented; |
| 3238 | }; |
| 3239 | |
| 3240 | var eventFns = events[type || event.type]; |
| 3241 | var eventFnsLength = eventFns ? eventFns.length : 0; |
| 3242 | |
| 3243 | if (!eventFnsLength) return; |
| 3244 | |
| 3245 | if (isUndefined(event.immediatePropagationStopped)) { |
| 3246 | var originalStopImmediatePropagation = event.stopImmediatePropagation; |
| 3247 | event.stopImmediatePropagation = function() { |
| 3248 | event.immediatePropagationStopped = true; |
| 3249 | |
| 3250 | if (event.stopPropagation) { |
| 3251 | event.stopPropagation(); |
| 3252 | } |
| 3253 | |
| 3254 | if (originalStopImmediatePropagation) { |
| 3255 | originalStopImmediatePropagation.call(event); |
| 3256 | } |
| 3257 | }; |
| 3258 | } |
| 3259 | |
| 3260 | event.isImmediatePropagationStopped = function() { |
| 3261 | return event.immediatePropagationStopped === true; |
| 3262 | }; |
| 3263 | |
| 3264 | // Copy event handlers in case event handlers array is modified during execution. |
| 3265 | if ((eventFnsLength > 1)) { |
| 3266 | eventFns = shallowCopy(eventFns); |
| 3267 | } |
| 3268 | |
| 3269 | for (var i = 0; i < eventFnsLength; i++) { |
| 3270 | if (!event.isImmediatePropagationStopped()) { |
| 3271 | eventFns[i].call(element, event); |
| 3272 | } |
| 3273 | } |
| 3274 | }; |
| 3275 | |
| 3276 | // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all |
| 3277 | // events on `element` |
nothing calls this directly
no test coverage detected