@jjwesterkamp/event-delegation
Version:
Event delegation for browser DOM events. Flexible, cross-browser compatible and Typescript-focused.
29 lines (28 loc) • 1.51 kB
JavaScript
import { createBuilder } from './lib/createBuilder';
import { createCompositeBuilder } from './lib/createCompositeBuilder';
import { isString } from './lib/assertions';
import { normalizeRoot } from './lib/normalizeRoot';
var EventDelegation = {
// ----------------------------------------------------------------------------------------
// Create a global delegated event listener.
// ----------------------------------------------------------------------------------------
global: function () {
return createBuilder(document.body);
},
// ----------------------------------------------------------------------------------------
// Create one delegated event listener for a specified root element.
// ----------------------------------------------------------------------------------------
within: function (rootOrSelector) {
return createBuilder(normalizeRoot(rootOrSelector));
},
// ----------------------------------------------------------------------------------------
// Create many delegated event listeners for multiple specified root elements.
// ----------------------------------------------------------------------------------------
withinMany: function (rootsOrSelector) {
var roots = isString(rootsOrSelector)
? Array.from(document.querySelectorAll(rootsOrSelector))
: rootsOrSelector;
return createCompositeBuilder(roots.map(createBuilder));
},
};
export default EventDelegation;