@taiga-ui/event-plugins
Version:
This is a library for optimizing performance sensitive events and declarative preventDefault and stopPropagation
21 lines • 2.96 kB
JavaScript
import { TimedEventPlugin } from './timed-event.plugin';
export class DebounceEventPlugin extends TimedEventPlugin {
constructor() {
super(...arguments);
this.regExp = /\.debounce~(?<time>\d+)(?<units>ms|s)/;
}
addEventListener(element, eventName, handler) {
let timeout;
const unsubscribe = this.manager.addEventListener(element, this.unwrap(eventName), (event) => {
clearTimeout(timeout);
timeout = setTimeout(() => {
handler(event);
}, this.getDelay(eventName));
});
return () => {
clearTimeout(timeout);
unsubscribe();
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXZlbnQtcGx1Z2lucy9zcmMvcGx1Z2lucy9kZWJvdW5jZS5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQUF6RDs7UUFDZ0MsV0FBTSxHQUFHLHVDQUF1QyxDQUFDO0lBMEJqRixDQUFDO0lBeEJtQixnQkFBZ0IsQ0FDNUIsT0FBb0IsRUFDcEIsU0FBaUIsRUFDakIsT0FBaUI7UUFFakIsSUFBSSxPQUFrRCxDQUFDO1FBRXZELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQzdDLE9BQU8sRUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUN0QixDQUFDLEtBQVksRUFBUSxFQUFFO1lBQ25CLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV0QixPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25CLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUNKLENBQUM7UUFFRixPQUFPLEdBQUcsRUFBRTtZQUNSLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixXQUFXLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RpbWVkRXZlbnRQbHVnaW59IGZyb20gJy4vdGltZWQtZXZlbnQucGx1Z2luJztcblxuZXhwb3J0IGNsYXNzIERlYm91bmNlRXZlbnRQbHVnaW4gZXh0ZW5kcyBUaW1lZEV2ZW50UGx1Z2luIHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgcmVnRXhwID0gL1xcLmRlYm91bmNlfig/PHRpbWU+XFxkKykoPzx1bml0cz5tc3xzKS87XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgICAgICBoYW5kbGVyOiBGdW5jdGlvbixcbiAgICApOiBGdW5jdGlvbiB7XG4gICAgICAgIGxldCB0aW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHRoaXMubWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIHRoaXMudW53cmFwKGV2ZW50TmFtZSksXG4gICAgICAgICAgICAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9LCB0aGlzLmdldERlbGF5KGV2ZW50TmFtZSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=