{"version":3,"file":"debounced-CZ2SI6eC.js","sources":["../../../../../shared/node_modules/debounced/src/version.js","../../../../../shared/node_modules/debounced/src/events.js","../../../../../shared/node_modules/debounced/src/index.js"],"sourcesContent":["export default '1.0.2'\n","// All bubbling events\n// SEE: https://developer.mozilla.org/en-US/docs/Web/Events\n\nexport const nativeBubblingEventNames = [\n 'DOMContentLoaded',\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'animationstart',\n 'auxclick',\n 'change',\n 'click',\n 'compositionend',\n 'compositionstart',\n 'compositionupdate',\n 'contextmenu',\n 'copy',\n 'cut',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'dragstart',\n 'drop',\n 'error',\n 'focusin',\n 'focusout',\n 'fullscreenchange',\n 'fullscreenerror',\n 'hashchange',\n 'input',\n 'keydown',\n 'keyup',\n 'mousedown',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'paste',\n 'pointercancel',\n 'pointerdown',\n 'pointerlockchange',\n 'pointerlockerror',\n 'pointermove',\n 'pointerout',\n 'pointerover',\n 'pointerup',\n 'popstate',\n 'reset',\n 'scroll',\n 'select',\n 'submit',\n 'touchcancel',\n 'touchend',\n 'touchmove',\n 'touchstart',\n 'transitioncancel',\n 'transitionend',\n 'transitionrun',\n 'transitionstart',\n 'visibilitychange',\n 'wheel'\n]\n","import version from './version'\nimport { nativeBubblingEventNames } from './events'\n\nlet prefix = 'debounced'\n\nconst defaultOptions = {\n wait: 200, // ........ the number of milliseconds to wait\n leading: false, // ... fire event on the leading edge of the timeout\n trailing: true // .... fire event on the trailing edge of the timeout\n}\n\nconst registeredEvents = {}\nconst timeouts = {}\n\n//\n/**\n * Event dispatcher used to trigger all custom debounced events.\n * @param {Event} sourceEvent - The original native event being debounced\n * @param {String} type - The type of debounced event (leading, trailing)\n */\nconst dispatchDebouncedEvent = (sourceEvent, type) => {\n const { bubbles, cancelable, composed } = sourceEvent\n const debouncedEvent = new CustomEvent(`${prefix}:${sourceEvent.type}`, {\n bubbles,\n cancelable,\n composed,\n detail: { sourceEvent, type }\n })\n sourceEvent.target.dispatchEvent(debouncedEvent)\n}\n\n/**\n * Builds an event handler for the sourceEvent that dispatches the debounced event(s).\n * @param {Object} options - Debounce options\n * @param {Number} options.wait - Milliseconds to wait before dispatching the trailing debounced event\n * @param {Boolean} options.leading - Whether or not to dispatch a debounced event BEFORE the sourceEvent\n * @param {Boolean} options.trailing - Whether or not to dispatch a debounced event AFTER the sourceEvent\n * @returns {Function} - Event handler that dispatches the debounced event(s)\n */\nconst buildDebounceEventHandler = (options = {}) => {\n const { wait, leading, trailing } = { ...defaultOptions, ...options }\n return event => {\n const key = [event.type, event.target]\n\n // NOTE: Both leading and trailing debounced events are executed on the next tick of the event loop\n // This allows the sourceEvent and its handlers to complete before the debounced event is dispatched\n\n // dispatch leading debounced event\n if (leading && !timeouts[key]) setTimeout(() => dispatchDebouncedEvent(event, 'leading'))\n\n clearTimeout(timeouts[key]) // reset timeout\n\n // NOTE: setTimeout returns a positive integer\n // SEE: https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#return_value\n timeouts[key] = setTimeout(() => {\n // dispatch trailing debounced event\n if (trailing) dispatchDebouncedEvent(event, 'trailing')\n\n delete timeouts[key] // cleanup\n }, wait)\n }\n}\n\n/**\n * Unregisters an individual event from debouncing.\n * @param {String} name - Name of the sourceEvent to unregister\n */\nconst unregisterEvent = name => {\n document.removeEventListener(name, registeredEvents[name]?.handler)\n delete registeredEvents[name]\n return name\n}\n\n/**\n * Registers an individual event for debouncing.\n * @note Events can be re-registered (replaces existing entry)\n * @param {String} name - Name of the sourceEvent to debounce\n * @param {Object} options - Debounce options\n */\nconst registerEvent = (name, options = {}) => {\n unregisterEvent(name)\n options = { ...defaultOptions, ...options }\n options.handler = buildDebounceEventHandler(options)\n registeredEvents[name] = options\n document.addEventListener(name, options.handler)\n return { [name]: registeredEvents[name] }\n}\n\n/**\n * Unregisters a list of events.\n * @param {Array} eventNames - List of event names to unregister\n * @returns {Array} - List of event names that were unregistered\n */\nconst unregister = (eventNames = []) => {\n const names = { ...eventNames }\n eventNames.forEach(name => unregisterEvent(name))\n return names\n}\n\n/**\n * Initializes debounced events.\n *\n * @example\n * register([\n * 'change',\n * 'click'\n * // more events...\n * ], {\n * wait: 200,\n * leading: false,\n * trailing: true\n * })\n *\n * @param {Array} eventNames - List of event names to register\n * @param {Object} options - debounce options\n */\nconst register = (eventNames = [], options = {}) => {\n if (!eventNames || eventNames.length === 0) eventNames = nativeBubblingEventNames\n\n eventNames.forEach(name => registerEvent(name, options))\n return eventNames.reduce((memo, name) => {\n memo[name] = registeredEvents[name]\n return memo\n }, {})\n}\n\nexport default {\n initialize: register,\n register,\n unregister,\n registerEvent,\n unregisterEvent,\n get defaultEventNames() {\n return [...nativeBubblingEventNames]\n },\n get defaultOptions() {\n return { ...defaultOptions }\n },\n get prefix() {\n return prefix\n },\n set prefix(value) {\n prefix = value\n },\n get registeredEvents() {\n return { ...registeredEvents }\n },\n get registeredEventNames() {\n return Object.keys(registeredEvents)\n },\n get version() {\n return version\n }\n}\n"],"names":["version","nativeBubblingEventNames","prefix","defaultOptions","registeredEvents","timeouts","dispatchDebouncedEvent","sourceEvent","type","bubbles","cancelable","composed","debouncedEvent","buildDebounceEventHandler","options","wait","leading","trailing","event","key","unregisterEvent","name","_a","registerEvent","unregister","eventNames","names","register","memo","debounced","value"],"mappings":"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","x_google_ignoreList":[0,1,2]}