Download plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts from Leon4gr45/matomo: direct link, hf CLI and curl.
- Browser
- Download file 2.22 kB
-
https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts
- Command line
-
hf download hf://spaces/Leon4gr45/matomo/plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts
-
curl -L -o jqueryNativeEventTrigger.ts https://huggingface.co/spaces/Leon4gr45/matomo/resolve/main/plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts
2.22 kB
| /*! | |
| * Matomo - free/libre analytics platform | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| const oldTrigger = window.$.fn.trigger; | |
| function triggerWithNativeEventDispatch(jqEventOrType, data) { | |
| let isFirstElementOnPath = true; | |
| const type = jqEventOrType.type || jqEventOrType; | |
| const onEventAttributeName = `on${type}`; | |
| function nativeDispatchSingleElement(element: HTMLElement) { | |
| if (isFirstElementOnPath) { | |
| isFirstElementOnPath = false; | |
| if (element[onEventAttributeName] | |
| || (element[type] instanceof Function | |
| // jquery disables calling the native click() method for links | |
| && !(type === 'click' && element.tagName.toUpperCase() === 'A')) | |
| ) { | |
| // if a on... (eg, onchange) handler is specified, it will be triggered by jquery. | |
| // it will also be triggered by addEventListener, and we don't want that so just | |
| // assume there is no addEventListener event. | |
| // NOTE: this only happens for the FIRST element on the event path. jquery's trigger | |
| // function will not call .click() on any other element in the event path. | |
| return; | |
| } | |
| } | |
| // eslint-disable-next-line | |
| if (((window.$._data(element, 'events') || {}) as any)[type] && window.$._data(element, 'handle')) { | |
| // there is an event handler in jquery private data, assume this was handled. | |
| return; | |
| } | |
| if (element.dispatchEvent) { | |
| const event = new Event(type, { | |
| // do not rely on browser bubbling so we can keep checking for the on... attribute | |
| bubbles: false, | |
| cancelable: true, | |
| }); | |
| element.dispatchEvent(event); | |
| } | |
| } | |
| function nativeDispatch(element: HTMLElement) { | |
| nativeDispatchSingleElement(element); | |
| const parent = element.parentElement; | |
| if (parent) { | |
| nativeDispatch(parent); | |
| } | |
| } | |
| const result = oldTrigger.call(this, jqEventOrType, data); | |
| if (type === 'focus' || type === 'blur') { // jquery handles focus/blur fine | |
| return result; | |
| } | |
| this.each(function onEach() { | |
| nativeDispatch(this); | |
| }); | |
| return result; | |
| } | |
| window.$.fn.trigger = triggerWithNativeEventDispatch; | |