{"version":3,"file":"event-handler-tnNGb1zM.js","sources":["../../../app/frontend/entrypoints/marketing/mdb/dom/event-handler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst $ = getjQuery();\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\nconst nativeEvents = [\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];\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(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 for (let i = domElements.length; i--; '') {\n if (domElements[i] === target) {\n event.delegateTarget = target;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n }\n\n // To please ESLint\n return null;\n };\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events);\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]];\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event;\n }\n }\n\n return null;\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string';\n const originalHandler = delegation ? delegationFn : handler;\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '');\n const custom = customEvents[typeEvent];\n\n if (custom) {\n typeEvent = custom;\n }\n\n const isNative = nativeEvents.indexOf(typeEvent) > -1;\n\n if (!isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [delegation, originalHandler, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n if (!handler) {\n handler = delegationFn;\n delegationFn = null;\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(\n originalTypeEvent,\n handler,\n delegationFn\n );\n const events = getEvent(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff;\n\n return;\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = delegation\n ? bootstrapDelegationHandler(element, handler, delegationFn)\n : bootstrapHandler(element, handler);\n\n fn.delegationSelector = delegation ? handler : null;\n fn.originalHandler = originalHandler;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, delegation);\n}\n\nfunction 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\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n Object.keys(storeElementEvent).forEach((handlerKey) => {\n if (handlerKey.indexOf(namespace) > -1) {\n const event = storeElementEvent[handlerKey];\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false);\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(\n originalTypeEvent,\n handler,\n delegationFn\n );\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getEvent(element);\n const isNamespace = originalTypeEvent.charAt(0) === '.';\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return;\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n return;\n }\n\n if (isNamespace) {\n Object.keys(events).forEach((elementEvent) => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n });\n }\n\n const storeElementEvent = events[typeEvent] || {};\n Object.keys(storeElementEvent).forEach((keyHandlers) => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) {\n const event = storeElementEvent[keyHandlers];\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const typeEvent = event.replace(stripNameRegex, '');\n const inNamespace = event !== typeEvent;\n const isNative = nativeEvents.indexOf(typeEvent) > -1;\n\n let jQueryEvent;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n let evt = null;\n\n if (inNamespace && $) {\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 if (isNative) {\n evt = document.createEvent('HTMLEvents');\n evt.initEvent(typeEvent, bubbles, true);\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true,\n });\n }\n\n // merge custom informations in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach((key) => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key];\n },\n });\n });\n }\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n },\n};\n\nexport const EventHandlerMulti = {\n on(element, eventsName, handler, delegationFn) {\n const events = eventsName.split(' ');\n\n for (let i = 0; i < events.length; i++) {\n EventHandler.on(element, events[i], handler, delegationFn);\n }\n },\n off(element, originalTypeEvent, handler, delegationFn) {\n const events = originalTypeEvent.split(' ');\n\n for (let i = 0; i < events.length; i++) {\n EventHandler.off(element, events[i], handler, delegationFn);\n }\n },\n};\n\nexport default EventHandler;\n"],"names":["$","getjQuery","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","getUidEvent","element","uid","getEvent","bootstrapHandler","fn","handler","event","EventHandler","bootstrapDelegationHandler","selector","domElements","target","i","findHandler","events","delegationSelector","uidEventList","len","normalizeParams","originalTypeEvent","delegationFn","delegation","originalHandler","typeEvent","custom","addHandler","oneOff","handlers","previousFn","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","key"],"mappings":"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"}