diff --git a/README.md b/README.md index 741eb5d..c895a6b 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,9 @@ debounced.unregisterEvent('keyup') // unregister a list of events debounced.unregister(['click', 'input', 'keydown']) + +// unregister all events +debounced.unregister(debounced.registeredEventNames) ``` ### Debounced Event Prefix diff --git a/dist/debounced.js b/dist/debounced.js index f80535a..58f1740 100644 --- a/dist/debounced.js +++ b/dist/debounced.js @@ -119,6 +119,7 @@ var unregisterEvent = (name) => { var _a; document.removeEventListener(name, (_a = registeredEvents[name]) == null ? void 0 : _a.handler); delete registeredEvents[name]; + return name; }; var registerEvent = (name, options = {}) => { unregisterEvent(name); @@ -126,12 +127,21 @@ var registerEvent = (name, options = {}) => { options.handler = buildDebounceEventHandler(options); registeredEvents[name] = options; document.addEventListener(name, options.handler); + return { [name]: registeredEvents[name] }; +}; +var unregister = (eventNames = []) => { + const names = __spreadValues({}, eventNames); + eventNames.forEach((name) => unregisterEvent(name)); + return names; }; -var unregister = (eventNames = []) => eventNames.forEach((name) => unregisterEvent(name)); var register = (eventNames = [], options = {}) => { if (!eventNames || eventNames.length === 0) eventNames = nativeBubblingEventNames; eventNames.forEach((name) => registerEvent(name, options)); + return eventNames.reduce((memo, name) => { + memo[name] = registeredEvents[name]; + return memo; + }, {}); }; var src_default = { initialize: register, diff --git a/src/index.js b/src/index.js index 00756f7..48498fe 100644 --- a/src/index.js +++ b/src/index.js @@ -64,6 +64,7 @@ const buildDebounceEventHandler = (options = {}) => { const unregisterEvent = name => { document.removeEventListener(name, registeredEvents[name]?.handler) delete registeredEvents[name] + return name } /** @@ -78,13 +79,19 @@ const registerEvent = (name, options = {}) => { options.handler = buildDebounceEventHandler(options) registeredEvents[name] = options document.addEventListener(name, options.handler) + return { [name]: registeredEvents[name] } } /** * Unregisters a list of events. - * @param {Array} eventNames - List of event names to unregister + * @param {Array} eventNames - List of event names to unregister + * @returns {Array} - List of event names that were unregistered */ -const unregister = (eventNames = []) => eventNames.forEach(name => unregisterEvent(name)) +const unregister = (eventNames = []) => { + const names = { ...eventNames } + eventNames.forEach(name => unregisterEvent(name)) + return names +} /** * Initializes debounced events. @@ -101,6 +108,10 @@ const unregister = (eventNames = []) => eventNames.forEach(name => unregisterEve const register = (eventNames = [], options = {}) => { if (!eventNames || eventNames.length === 0) eventNames = nativeBubblingEventNames eventNames.forEach(name => registerEvent(name, options)) + return eventNames.reduce((memo, name) => { + memo[name] = registeredEvents[name] + return memo + }, {}) } export default {