(event, type)
| 3008 | |
| 3009 | function createEventHandler(element, events) { |
| 3010 | var eventHandler = function(event, type) { |
| 3011 | // jQuery specific api |
| 3012 | event.isDefaultPrevented = function() { |
| 3013 | return event.defaultPrevented; |
| 3014 | }; |
| 3015 | |
| 3016 | var eventFns = events[type || event.type]; |
| 3017 | var eventFnsLength = eventFns ? eventFns.length : 0; |
| 3018 | |
| 3019 | if (!eventFnsLength) return; |
| 3020 | |
| 3021 | if (isUndefined(event.immediatePropagationStopped)) { |
| 3022 | var originalStopImmediatePropagation = event.stopImmediatePropagation; |
| 3023 | event.stopImmediatePropagation = function() { |
| 3024 | event.immediatePropagationStopped = true; |
| 3025 | |
| 3026 | if (event.stopPropagation) { |
| 3027 | event.stopPropagation(); |
| 3028 | } |
| 3029 | |
| 3030 | if (originalStopImmediatePropagation) { |
| 3031 | originalStopImmediatePropagation.call(event); |
| 3032 | } |
| 3033 | }; |
| 3034 | } |
| 3035 | |
| 3036 | event.isImmediatePropagationStopped = function() { |
| 3037 | return event.immediatePropagationStopped === true; |
| 3038 | }; |
| 3039 | |
| 3040 | // Copy event handlers in case event handlers array is modified during execution. |
| 3041 | if ((eventFnsLength > 1)) { |
| 3042 | eventFns = shallowCopy(eventFns); |
| 3043 | } |
| 3044 | |
| 3045 | for (var i = 0; i < eventFnsLength; i++) { |
| 3046 | if (!event.isImmediatePropagationStopped()) { |
| 3047 | eventFns[i].call(element, event); |
| 3048 | } |
| 3049 | } |
| 3050 | }; |
| 3051 | |
| 3052 | // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all |
| 3053 | // events on `element` |
nothing calls this directly
no test coverage detected