diff --git a/CHANGELOG.md b/CHANGELOG.md index 70223ba..c6e716f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [0.2.0] - Nov 28, 2023 + +- added custom `ready` event support +- added event switch from `pointerenter` to `pointerover` and `pointerleave` to `pointerout` when event delegation is used + ## [0.1.0] - Nov 26, 2023 - initial release diff --git a/dist/ivent.cjs b/dist/ivent.cjs index fc72a19..a207153 100644 --- a/dist/ivent.cjs +++ b/dist/ivent.cjs @@ -1,5 +1,5 @@ /*! - * ivent v0.1.1 (https://github.com/nk-crew/ivent) + * ivent v0.2.0 (https://github.com/nk-crew/ivent) * Copyright 2023 nK * Licensed under MIT (https://github.com/nk-crew/ivent/blob/master/LICENSE) */ @@ -20,7 +20,9 @@ const namespaceRegex = /[^.]*(?=\..*)\.|.*/; const stripNameRegex = /\..*/; const customEvents = { mouseenter: 'mouseover', - mouseleave: 'mouseout' + mouseleave: 'mouseout', + pointerenter: 'pointerover', + pointerleave: 'pointerout' }; function parseEventName(name) { // Get the native events from namespaced events ('click.ghostkit.button' --> 'click') @@ -160,6 +162,15 @@ function addHandler(element, originalTypeEvent, handler, delegationFunction, one fn.oneOff = oneOff; fn.uidEvent = uid; handlers[uid] = fn; + + // Add support for custom event handler `ready` for DOMContentLoaded. + if (element === document && typeEvent === 'ready' && !isDelegated) { + typeEvent = 'DOMContentLoaded'; + if (document.readyState !== 'loading') { + fn(new CustomEvent('ready')); + return; + } + } element.addEventListener(typeEvent, fn, isDelegated); } function removeHandler(element, events, typeEvent, handler, delegationSelector) { diff --git a/dist/ivent.cjs.map b/dist/ivent.cjs.map index 3d52135..07f270d 100644 --- a/dist/ivent.cjs.map +++ b/dist/ivent.cjs.map @@ -1 +1 @@ -{"version":3,"file":"ivent.cjs","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js","../src/methods/trigger.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","Object","keys","length","removeHandler","elementEvent","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","delegationSelector","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","iventHandler","fn","delegateTarget","oneOff","type","apply","iventDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","values","find","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","addEventListener","removeEventListener","Boolean","on","one","getjQuery","window","jQuery","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ivent.cjs","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js","../src/methods/trigger.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n pointerenter: 'pointerover',\n pointerleave: 'pointerout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n // Add support for custom event handler `ready` for DOMContentLoaded.\n if (element === document && typeEvent === 'ready' && !isDelegated) {\n typeEvent = 'DOMContentLoaded';\n\n if (document.readyState !== 'loading') {\n fn(new CustomEvent('ready'));\n return;\n }\n }\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","pointerenter","pointerleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","Object","keys","length","removeHandler","elementEvent","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","delegationSelector","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","iventHandler","fn","delegateTarget","oneOff","type","apply","iventDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","values","find","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","document","readyState","CustomEvent","addEventListener","removeEventListener","Boolean","on","one","getjQuery","window","jQuery","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file diff --git a/dist/ivent.esm.js b/dist/ivent.esm.js index b554742..c770d69 100644 --- a/dist/ivent.esm.js +++ b/dist/ivent.esm.js @@ -1,5 +1,5 @@ /*! - * ivent v0.1.1 (https://github.com/nk-crew/ivent) + * ivent v0.2.0 (https://github.com/nk-crew/ivent) * Copyright 2023 nK * Licensed under MIT (https://github.com/nk-crew/ivent/blob/master/LICENSE) */ @@ -24,7 +24,9 @@ const namespaceRegex = /[^.]*(?=\..*)\.|.*/; const stripNameRegex = /\..*/; const customEvents = { mouseenter: 'mouseover', - mouseleave: 'mouseout' + mouseleave: 'mouseout', + pointerenter: 'pointerover', + pointerleave: 'pointerout' }; function parseEventName(name) { // Get the native events from namespaced events ('click.ghostkit.button' --> 'click') @@ -172,6 +174,15 @@ function addHandler(element, originalTypeEvent, handler, delegationFunction, one fn.oneOff = oneOff; fn.uidEvent = uid; handlers[uid] = fn; + + // Add support for custom event handler `ready` for DOMContentLoaded. + if (element === document && typeEvent === 'ready' && !isDelegated) { + typeEvent = 'DOMContentLoaded'; + if (document.readyState !== 'loading') { + fn(new CustomEvent('ready')); + return; + } + } element.addEventListener(typeEvent, fn, isDelegated); } function removeHandler(element, events, typeEvent, handler, delegationSelector) { diff --git a/dist/ivent.esm.js.map b/dist/ivent.esm.js.map index 4283d96..9a93142 100644 --- a/dist/ivent.esm.js.map +++ b/dist/ivent.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"ivent.esm.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js","../src/methods/trigger.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","Object","keys","length","removeHandler","elementEvent","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","delegationSelector","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","iventHandler","fn","delegateTarget","oneOff","type","apply","iventDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","values","find","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","addEventListener","removeEventListener","Boolean","on","one","getjQuery","window","jQuery","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ivent.esm.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js","../src/methods/trigger.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n pointerenter: 'pointerover',\n pointerleave: 'pointerout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n // Add support for custom event handler `ready` for DOMContentLoaded.\n if (element === document && typeEvent === 'ready' && !isDelegated) {\n typeEvent = 'DOMContentLoaded';\n\n if (document.readyState !== 'loading') {\n fn(new CustomEvent('ready'));\n return;\n }\n }\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","pointerenter","pointerleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","Object","keys","length","removeHandler","elementEvent","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","delegationSelector","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","iventHandler","fn","delegateTarget","oneOff","type","apply","iventDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","values","find","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","document","readyState","CustomEvent","addEventListener","removeEventListener","Boolean","on","one","getjQuery","window","jQuery","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file diff --git a/dist/ivent.esm.min.js b/dist/ivent.esm.min.js index 789c961..b36ecd4 100644 --- a/dist/ivent.esm.min.js +++ b/dist/ivent.esm.min.js @@ -1,6 +1,6 @@ /*! - * ivent v0.1.1 (https://github.com/nk-crew/ivent) + * ivent v0.2.0 (https://github.com/nk-crew/ivent) * Copyright 2023 nK * Licensed under MIT (https://github.com/nk-crew/ivent/blob/master/LICENSE) */ -let e=1;function t(t,n){return n&&`${n}::${e++}`||t.uidEvent||e++}const n={};function o(e){const o=t(e);return e.uidEvent=o,n[o]=n[o]||{},n[o]}const r=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]),c=/[^.]*(?=\..*)\.|.*/,l=/\..*/,u={mouseenter:"mouseover",mouseleave:"mouseout"};function a(e){const t=e.replace(l,"");return{event:u[t]||t,originalEvent:t,namespace:e.replace(c,"")||!1,isNative:r.has(t)}}function i(e,t,n){const o="string"==typeof t,r=o?n:t||n,c=a(e);let l=c.event;return c.isNative||(l=e),[o,r,l,c]}const s=/::\d+$/;function f(e,t,n,r){"string"==typeof t&&e&&t.split(" ").forEach((t=>{const[c,l,u,a]=i(t,n,r),f=o(e),d=f[u]||{},p=t.startsWith(".");if(void 0===l){if(p)for(const n of Object.keys(f))m(e,f,n,t.slice(1));for(const[n,o]of Object.entries(d)){const r=n.replace(s,"");a.namespace&&!t.includes(r)||v(e,f,u,o.callable,o.delegationSelector)}}else{if(!Object.keys(d).length)return;v(e,f,u,l,c?n:null)}}))}function d(e,t={}){for(const[n,o]of Object.entries(t))try{e[n]=o}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>o})}return e}function p(e,t,n=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function g(e,n,r,c,l){let[u,a,s,g]=i(n,r,c);if(g.event!==g.originalEvent){const e=e=>function(t){return(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))&&e.call(this,t)};a=e(a)}const v=o(e),m=v[s]||(v[s]={}),b=p(m,a,u?r:null);if(b)return void(b.oneOff=b.oneOff&&l);const y=t(a,g.namespace),h=u?function(e,t,n){return function o(r){const c=e.querySelectorAll(t);for(let{target:l}=r;l&&l!==this;l=l.parentNode)for(const u of c)if(u===l)return d(r,{delegateTarget:l}),o.oneOff&&f(e,r.type,t,n),n.apply(l,[r]);return!1}}(e,r,a):function(e,t){return function n(o){return d(o,{delegateTarget:e}),n.oneOff&&f(e,o.type,t),t.apply(e,[o])}}(e,a);h.delegationSelector=u?r:null,h.callable=a,h.oneOff=l,h.uidEvent=y,m[y]=h,e.addEventListener(s,h,u)}function v(e,t,n,o,r){const c=p(t[n],o,r);c&&(e.removeEventListener(n,c,Boolean(r)),delete t[n][c.uidEvent])}function m(e,t,n,o){const r=t[n]||{};for(const[c,l]of Object.entries(r))c.includes(o)&&v(e,t,n,l.callable,l.delegationSelector)}function b(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{g(e,t,n,o,!1)}))}function y(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{g(e,t,n,o,!0)}))}function h(e,t,n){if("string"!=typeof t||!e)return null;const o=window.jQuery?window.jQuery:null;let r=null,c=!0,l=!0,u=!1;a(t).namespace&&o&&(r=o.Event(t,n),o(e).trigger(r),c=!r.isPropagationStopped(),l=!r.isImmediatePropagationStopped(),u=r.isDefaultPrevented());const i=d(new Event(t,{bubbles:c,cancelable:!0}),n);return u&&i.preventDefault(),l&&e.dispatchEvent(i),i.defaultPrevented&&r&&r.preventDefault(),i}export{f as off,b as on,y as one,h as trigger};//# sourceMappingURL=ivent.esm.min.js.map +let e=1;function t(t,n){return n&&`${n}::${e++}`||t.uidEvent||e++}const n={};function o(e){const o=t(e);return e.uidEvent=o,n[o]=n[o]||{},n[o]}const r=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]),c=/[^.]*(?=\..*)\.|.*/,l=/\..*/,a={mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"};function i(e){const t=e.replace(l,"");return{event:a[t]||t,originalEvent:t,namespace:e.replace(c,"")||!1,isNative:r.has(t)}}function u(e,t,n){const o="string"==typeof t,r=o?n:t||n,c=i(e);let l=c.event;return c.isNative||(l=e),[o,r,l,c]}const s=/::\d+$/;function f(e,t,n,r){"string"==typeof t&&e&&t.split(" ").forEach((t=>{const[c,l,a,i]=u(t,n,r),f=o(e),d=f[a]||{},p=t.startsWith(".");if(void 0===l){if(p)for(const n of Object.keys(f))m(e,f,n,t.slice(1));for(const[n,o]of Object.entries(d)){const r=n.replace(s,"");i.namespace&&!t.includes(r)||v(e,f,a,o.callable,o.delegationSelector)}}else{if(!Object.keys(d).length)return;v(e,f,a,l,c?n:null)}}))}function d(e,t={}){for(const[n,o]of Object.entries(t))try{e[n]=o}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>o})}return e}function p(e,t,n=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function g(e,n,r,c,l){let[a,i,s,g]=u(n,r,c);if(g.event!==g.originalEvent){const e=e=>function(t){return(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))&&e.call(this,t)};i=e(i)}const v=o(e),m=v[s]||(v[s]={}),y=p(m,i,a?r:null);if(y)return void(y.oneOff=y.oneOff&&l);const b=t(i,g.namespace),h=a?function(e,t,n){return function o(r){const c=e.querySelectorAll(t);for(let{target:l}=r;l&&l!==this;l=l.parentNode)for(const a of c)if(a===l)return d(r,{delegateTarget:l}),o.oneOff&&f(e,r.type,t,n),n.apply(l,[r]);return!1}}(e,r,i):function(e,t){return function n(o){return d(o,{delegateTarget:e}),n.oneOff&&f(e,o.type,t),t.apply(e,[o])}}(e,i);h.delegationSelector=a?r:null,h.callable=i,h.oneOff=l,h.uidEvent=b,m[b]=h,e!==document||"ready"!==s||a||(s="DOMContentLoaded","loading"===document.readyState)?e.addEventListener(s,h,a):h(new CustomEvent("ready"))}function v(e,t,n,o,r){const c=p(t[n],o,r);c&&(e.removeEventListener(n,c,Boolean(r)),delete t[n][c.uidEvent])}function m(e,t,n,o){const r=t[n]||{};for(const[c,l]of Object.entries(r))c.includes(o)&&v(e,t,n,l.callable,l.delegationSelector)}function y(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{g(e,t,n,o,!1)}))}function b(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{g(e,t,n,o,!0)}))}function h(e,t,n){if("string"!=typeof t||!e)return null;const o=window.jQuery?window.jQuery:null;let r=null,c=!0,l=!0,a=!1;i(t).namespace&&o&&(r=o.Event(t,n),o(e).trigger(r),c=!r.isPropagationStopped(),l=!r.isImmediatePropagationStopped(),a=r.isDefaultPrevented());const u=d(new Event(t,{bubbles:c,cancelable:!0}),n);return a&&u.preventDefault(),l&&e.dispatchEvent(u),u.defaultPrevented&&r&&r.preventDefault(),u}export{f as off,y as on,b as one,h as trigger};//# sourceMappingURL=ivent.esm.min.js.map diff --git a/dist/ivent.esm.min.js.map b/dist/ivent.esm.min.js.map index 412ceee..641aead 100644 --- a/dist/ivent.esm.min.js.map +++ b/dist/ivent.esm.min.js.map @@ -1 +1 @@ -{"version":3,"file":"ivent.esm.min.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/methods/trigger.js","../src/utils/get-jquery.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","elementEvent","Object","keys","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","removeHandler","delegationSelector","length","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","findHandler","values","find","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","contains","call","this","handlers","previousFunction","selector","domElements","querySelectorAll","target","parentNode","domElement","type","apply","iventDelegationHandler","iventHandler","addEventListener","removeEventListener","Boolean","on","one","trigger","args","$","window","jQuery","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ivent.esm.min.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/methods/trigger.js","../src/utils/get-jquery.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n pointerenter: 'pointerover',\n pointerleave: 'pointerout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n // Add support for custom event handler `ready` for DOMContentLoaded.\n if (element === document && typeEvent === 'ready' && !isDelegated) {\n typeEvent = 'DOMContentLoaded';\n\n if (document.readyState !== 'loading') {\n fn(new CustomEvent('ready'));\n return;\n }\n }\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","pointerenter","pointerleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","elementEvent","Object","keys","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","removeHandler","delegationSelector","length","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","findHandler","values","find","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","contains","call","this","handlers","previousFunction","selector","domElements","querySelectorAll","target","parentNode","domElement","type","apply","iventDelegationHandler","iventHandler","document","readyState","addEventListener","CustomEvent","removeEventListener","Boolean","on","one","trigger","args","$","window","jQuery","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file diff --git a/dist/ivent.js b/dist/ivent.js index be5c15c..8669826 100644 --- a/dist/ivent.js +++ b/dist/ivent.js @@ -1,5 +1,5 @@ /*! - * ivent v0.1.1 (https://github.com/nk-crew/ivent) + * ivent v0.2.0 (https://github.com/nk-crew/ivent) * Copyright 2023 nK * Licensed under MIT (https://github.com/nk-crew/ivent/blob/master/LICENSE) */ @@ -30,7 +30,9 @@ const stripNameRegex = /\..*/; const customEvents = { mouseenter: 'mouseover', - mouseleave: 'mouseout' + mouseleave: 'mouseout', + pointerenter: 'pointerover', + pointerleave: 'pointerout' }; function parseEventName(name) { // Get the native events from namespaced events ('click.ghostkit.button' --> 'click') @@ -178,6 +180,15 @@ fn.oneOff = oneOff; fn.uidEvent = uid; handlers[uid] = fn; + + // Add support for custom event handler `ready` for DOMContentLoaded. + if (element === document && typeEvent === 'ready' && !isDelegated) { + typeEvent = 'DOMContentLoaded'; + if (document.readyState !== 'loading') { + fn(new CustomEvent('ready')); + return; + } + } element.addEventListener(typeEvent, fn, isDelegated); } function removeHandler(element, events, typeEvent, handler, delegationSelector) { diff --git a/dist/ivent.js.map b/dist/ivent.js.map index 88c53cc..ad1267f 100644 --- a/dist/ivent.js.map +++ b/dist/ivent.js.map @@ -1 +1 @@ -{"version":3,"file":"ivent.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js","../src/methods/trigger.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","Object","keys","length","removeHandler","elementEvent","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","delegationSelector","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","iventHandler","fn","delegateTarget","oneOff","type","apply","iventDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","values","find","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","addEventListener","removeEventListener","Boolean","on","one","getjQuery","window","jQuery","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ivent.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js","../src/methods/trigger.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n pointerenter: 'pointerover',\n pointerleave: 'pointerout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n // Add support for custom event handler `ready` for DOMContentLoaded.\n if (element === document && typeEvent === 'ready' && !isDelegated) {\n typeEvent = 'DOMContentLoaded';\n\n if (document.readyState !== 'loading') {\n fn(new CustomEvent('ready'));\n return;\n }\n }\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","pointerenter","pointerleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","Object","keys","length","removeHandler","elementEvent","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","delegationSelector","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","iventHandler","fn","delegateTarget","oneOff","type","apply","iventDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","values","find","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","document","readyState","CustomEvent","addEventListener","removeEventListener","Boolean","on","one","getjQuery","window","jQuery","trigger","args","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file diff --git a/dist/ivent.min.js b/dist/ivent.min.js index 4c71dd8..75ea0d1 100644 --- a/dist/ivent.min.js +++ b/dist/ivent.min.js @@ -1,6 +1,6 @@ /*! - * ivent v0.1.1 (https://github.com/nk-crew/ivent) + * ivent v0.2.0 (https://github.com/nk-crew/ivent) * Copyright 2023 nK * Licensed under MIT (https://github.com/nk-crew/ivent/blob/master/LICENSE) */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ivent={})}(this,(function(e){"use strict";let t=1;function n(e,n){return n&&`${n}::${t++}`||e.uidEvent||t++}const o={};function r(e){const t=n(e);return e.uidEvent=t,o[t]=o[t]||{},o[t]}const c=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]),i=/[^.]*(?=\..*)\.|.*/,l=/\..*/,s={mouseenter:"mouseover",mouseleave:"mouseout"};function u(e){const t=e.replace(l,"");return{event:s[t]||t,originalEvent:t,namespace:e.replace(i,"")||!1,isNative:c.has(t)}}function a(e,t,n){const o="string"==typeof t,r=o?n:t||n,c=u(e);let i=c.event;return c.isNative||(i=e),[o,r,i,c]}const f=/::\d+$/;function d(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{const[c,i,l,s]=a(t,n,o),u=r(e),d=u[l]||{},p=t.startsWith(".");if(void 0===i){if(p)for(const n of Object.keys(u))b(e,u,n,t.slice(1));for(const[n,o]of Object.entries(d)){const r=n.replace(f,"");s.namespace&&!t.includes(r)||m(e,u,l,o.callable,o.delegationSelector)}}else{if(!Object.keys(d).length)return;m(e,u,l,i,c?n:null)}}))}function p(e,t={}){for(const[n,o]of Object.entries(t))try{e[n]=o}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>o})}return e}function g(e,t,n=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function v(e,t,o,c,i){let[l,s,u,f]=a(t,o,c);if(f.event!==f.originalEvent){const e=e=>function(t){return(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))&&e.call(this,t)};s=e(s)}const v=r(e),m=v[u]||(v[u]={}),b=g(m,s,l?o:null);if(b)return void(b.oneOff=b.oneOff&&i);const y=n(s,f.namespace),h=l?function(e,t,n){return function o(r){const c=e.querySelectorAll(t);for(let{target:i}=r;i&&i!==this;i=i.parentNode)for(const l of c)if(l===i)return p(r,{delegateTarget:i}),o.oneOff&&d(e,r.type,t,n),n.apply(i,[r]);return!1}}(e,o,s):function(e,t){return function n(o){return p(o,{delegateTarget:e}),n.oneOff&&d(e,o.type,t),t.apply(e,[o])}}(e,s);h.delegationSelector=l?o:null,h.callable=s,h.oneOff=i,h.uidEvent=y,m[y]=h,e.addEventListener(u,h,l)}function m(e,t,n,o,r){const c=g(t[n],o,r);c&&(e.removeEventListener(n,c,Boolean(r)),delete t[n][c.uidEvent])}function b(e,t,n,o){const r=t[n]||{};for(const[c,i]of Object.entries(r))c.includes(o)&&m(e,t,n,i.callable,i.delegationSelector)}e.off=d,e.on=function(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{v(e,t,n,o,!1)}))},e.one=function(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{v(e,t,n,o,!0)}))},e.trigger=function(e,t,n){if("string"!=typeof t||!e)return null;const o=window.jQuery?window.jQuery:null;let r=null,c=!0,i=!0,l=!1;u(t).namespace&&o&&(r=o.Event(t,n),o(e).trigger(r),c=!r.isPropagationStopped(),i=!r.isImmediatePropagationStopped(),l=r.isDefaultPrevented());const s=p(new Event(t,{bubbles:c,cancelable:!0}),n);return l&&s.preventDefault(),i&&e.dispatchEvent(s),s.defaultPrevented&&r&&r.preventDefault(),s}}));//# sourceMappingURL=ivent.min.js.map +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ivent={})}(this,(function(e){"use strict";let t=1;function n(e,n){return n&&`${n}::${t++}`||e.uidEvent||t++}const o={};function r(e){const t=n(e);return e.uidEvent=t,o[t]=o[t]||{},o[t]}const c=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]),i=/[^.]*(?=\..*)\.|.*/,l=/\..*/,u={mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"};function a(e){const t=e.replace(l,"");return{event:u[t]||t,originalEvent:t,namespace:e.replace(i,"")||!1,isNative:c.has(t)}}function s(e,t,n){const o="string"==typeof t,r=o?n:t||n,c=a(e);let i=c.event;return c.isNative||(i=e),[o,r,i,c]}const f=/::\d+$/;function d(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{const[c,i,l,u]=s(t,n,o),a=r(e),d=a[l]||{},p=t.startsWith(".");if(void 0===i){if(p)for(const n of Object.keys(a))y(e,a,n,t.slice(1));for(const[n,o]of Object.entries(d)){const r=n.replace(f,"");u.namespace&&!t.includes(r)||m(e,a,l,o.callable,o.delegationSelector)}}else{if(!Object.keys(d).length)return;m(e,a,l,i,c?n:null)}}))}function p(e,t={}){for(const[n,o]of Object.entries(t))try{e[n]=o}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>o})}return e}function g(e,t,n=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function v(e,t,o,c,i){let[l,u,a,f]=s(t,o,c);if(f.event!==f.originalEvent){const e=e=>function(t){return(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))&&e.call(this,t)};u=e(u)}const v=r(e),m=v[a]||(v[a]={}),y=g(m,u,l?o:null);if(y)return void(y.oneOff=y.oneOff&&i);const b=n(u,f.namespace),h=l?function(e,t,n){return function o(r){const c=e.querySelectorAll(t);for(let{target:i}=r;i&&i!==this;i=i.parentNode)for(const l of c)if(l===i)return p(r,{delegateTarget:i}),o.oneOff&&d(e,r.type,t,n),n.apply(i,[r]);return!1}}(e,o,u):function(e,t){return function n(o){return p(o,{delegateTarget:e}),n.oneOff&&d(e,o.type,t),t.apply(e,[o])}}(e,u);h.delegationSelector=l?o:null,h.callable=u,h.oneOff=i,h.uidEvent=b,m[b]=h,e!==document||"ready"!==a||l||(a="DOMContentLoaded","loading"===document.readyState)?e.addEventListener(a,h,l):h(new CustomEvent("ready"))}function m(e,t,n,o,r){const c=g(t[n],o,r);c&&(e.removeEventListener(n,c,Boolean(r)),delete t[n][c.uidEvent])}function y(e,t,n,o){const r=t[n]||{};for(const[c,i]of Object.entries(r))c.includes(o)&&m(e,t,n,i.callable,i.delegationSelector)}e.off=d,e.on=function(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{v(e,t,n,o,!1)}))},e.one=function(e,t,n,o){"string"==typeof t&&e&&t.split(" ").forEach((t=>{v(e,t,n,o,!0)}))},e.trigger=function(e,t,n){if("string"!=typeof t||!e)return null;const o=window.jQuery?window.jQuery:null;let r=null,c=!0,i=!0,l=!1;a(t).namespace&&o&&(r=o.Event(t,n),o(e).trigger(r),c=!r.isPropagationStopped(),i=!r.isImmediatePropagationStopped(),l=r.isDefaultPrevented());const u=p(new Event(t,{bubbles:c,cancelable:!0}),n);return l&&u.preventDefault(),i&&e.dispatchEvent(u),u.defaultPrevented&&r&&r.preventDefault(),u}}));//# sourceMappingURL=ivent.min.js.map diff --git a/dist/ivent.min.js.map b/dist/ivent.min.js.map index 75cc330..c19f4c9 100644 --- a/dist/ivent.min.js.map +++ b/dist/ivent.min.js.map @@ -1 +1 @@ -{"version":3,"file":"ivent.min.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/trigger.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","elementEvent","Object","keys","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","removeHandler","delegationSelector","length","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","findHandler","values","find","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","contains","call","this","handlers","previousFunction","selector","domElements","querySelectorAll","target","parentNode","domElement","type","apply","iventDelegationHandler","iventHandler","addEventListener","removeEventListener","Boolean","exports","on","one","trigger","args","$","window","jQuery","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ivent.min.js","sources":["../src/utils/make-event-uid.js","../src/utils/get-element-events.js","../src/utils/parse-event-name.js","../src/utils/normalize-parameters.js","../src/methods/off.js","../src/utils/hydrate-obj.js","../src/utils/handlers.js","../src/methods/trigger.js","../src/methods/on.js","../src/methods/one.js","../src/utils/get-jquery.js"],"sourcesContent":["let uidEvent = 1;\n\nexport default function makeEventUid(element, uid) {\n // eslint-disable-next-line no-plusplus\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n","import makeEventUid from './make-event-uid';\n\nconst eventRegistry = {}; // Events storage\n\nexport default function getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n","const nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n pointerenter: 'pointerover',\n pointerleave: 'pointerout',\n};\n\nexport default function parseEventName(name) {\n // Get the native events from namespaced events ('click.ghostkit.button' --> 'click')\n const eventName = name.replace(stripNameRegex, '');\n\n return {\n event: customEvents[eventName] || eventName,\n originalEvent: eventName,\n namespace: name.replace(namespaceRegex, '') || false,\n isNative: nativeEvents.has(eventName),\n };\n}\n","import parseEventName from './parse-event-name';\n\nexport default function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: Bootstrap tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n\n const parsedEvent = parseEventName(originalTypeEvent);\n let typeEvent = parsedEvent.event;\n\n if (!parsedEvent.isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent, parsedEvent];\n}\n","/* eslint-disable no-restricted-syntax */\nimport getElementEvents from '../utils/get-element-events';\nimport normalizeParameters from '../utils/normalize-parameters';\n// eslint-disable-next-line import/no-cycle\nimport { removeHandler, removeNamespacedHandlers } from '../utils/handlers';\n\nconst stripUidRegex = /::\\d+$/;\n\nexport default function off(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n const [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, evt] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!parsedEvent.namespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, evt.callable, evt.delegationSelector);\n }\n }\n });\n}\n","export default function hydrateObj(obj, meta = {}) {\n // eslint-disable-next-line no-restricted-syntax\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n","/* eslint-disable no-restricted-syntax */\n\n// eslint-disable-next-line import/no-cycle\nimport off from '../methods/off';\n\nimport hydrateObj from './hydrate-obj';\nimport makeEventUid from './make-event-uid';\nimport getElementEvents from './get-element-events';\nimport normalizeParameters from './normalize-parameters';\n\nfunction iventHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction iventDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n // eslint-disable-next-line no-restricted-syntax\n for (const domElement of domElements) {\n if (domElement !== target) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n // eslint-disable-next-line no-use-before-define\n off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n\n return false;\n };\n}\n\nexport function findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nexport function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n // eslint-disable-next-line prefer-const\n let [isDelegated, callable, typeEvent, parsedEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (parsedEvent.event !== parsedEvent.originalEvent) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n\n return false;\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, parsedEvent.namespace);\n const fn = isDelegated\n ? iventDelegationHandler(element, handler, callable)\n : iventHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n // Add support for custom event handler `ready` for DOMContentLoaded.\n if (element === document && typeEvent === 'ready' && !isDelegated) {\n typeEvent = 'DOMContentLoaded';\n\n if (document.readyState !== 'loading') {\n fn(new CustomEvent('ready'));\n return;\n }\n }\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nexport function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nexport function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n","import getjQuery from '../utils/get-jquery';\nimport hydrateObj from '../utils/hydrate-obj';\nimport parseEventName from '../utils/parse-event-name';\n\nexport default function trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const parsedEvent = parseEventName(event);\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (parsedEvent.namespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function on(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, false);\n });\n}\n","import { addHandler } from '../utils/handlers';\n\nexport default function one(element, event, handler, delegationFunction) {\n if (typeof event !== 'string' || !element) {\n return;\n }\n\n event.split(' ').forEach((originalTypeEvent) => {\n addHandler(element, originalTypeEvent, handler, delegationFunction, true);\n });\n}\n","export default function getjQuery() {\n if (window.jQuery) {\n return window.jQuery;\n }\n\n return null;\n}\n"],"names":["uidEvent","makeEventUid","element","uid","eventRegistry","getElementEvents","nativeEvents","Set","namespaceRegex","stripNameRegex","customEvents","mouseenter","mouseleave","pointerenter","pointerleave","parseEventName","name","eventName","replace","event","originalEvent","namespace","isNative","has","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","callable","parsedEvent","typeEvent","stripUidRegex","off","split","forEach","events","storeElementEvent","isNamespace","startsWith","elementEvent","Object","keys","removeNamespacedHandlers","slice","keyHandlers","evt","entries","handlerKey","includes","removeHandler","delegationSelector","length","hydrateObj","obj","meta","key","value","defineProperty","configurable","get","findHandler","values","find","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","contains","call","this","handlers","previousFunction","selector","domElements","querySelectorAll","target","parentNode","domElement","type","apply","iventDelegationHandler","iventHandler","document","readyState","addEventListener","CustomEvent","removeEventListener","Boolean","exports","on","one","trigger","args","$","window","jQuery","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","preventDefault","dispatchEvent"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index e5b9834..d9062b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ivent", - "version": "0.1.1", + "version": "0.2.0", "description": "Helper functions for browser event listener", "license": "MIT", "homepage": "https://github.com/nk-crew/ivent",