@taiga-ui/event-plugins
Version:
This is a library for optimizing performance sensitive events and declarative preventDefault and stopPropagation
24 lines • 3.36 kB
JavaScript
export class TimedEventPlugin {
supports(event) {
return this.regExp.test(event);
}
getDelay(event) {
const match = this.regExp.exec(event);
if (!match?.groups) {
throw new Error(`Invalid event: ${event}`);
}
const { time, units } = match.groups;
switch (units) {
case 'ms':
return Number(time);
case 's':
return Number(time) * 1000;
default:
throw new Error(`Invalid event: ${event}`);
}
}
unwrap(event) {
return event.replace(this.regExp, '');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWQtZXZlbnQucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXZlbnQtcGx1Z2lucy9zcmMvcGx1Z2lucy90aW1lZC1ldmVudC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFnQixnQkFBZ0I7SUFXM0IsUUFBUSxDQUFDLEtBQWE7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsUUFBUSxDQUFDLEtBQWE7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUM5QztRQUVELE1BQU0sRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUVuQyxRQUFRLEtBQUssRUFBRTtZQUNYLEtBQUssSUFBSTtnQkFDTCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixLQUFLLEdBQUc7Z0JBQ0osT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQy9CO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRVMsTUFBTSxDQUFDLEtBQWE7UUFDMUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0V2ZW50TWFuYWdlcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB0eXBlIHtFdmVudE1hbmFnZXJQbHVnaW59IGZyb20gJy4uL3R5cGVzL2V2ZW50LW1hbmFnZXItcGx1Z2luJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRpbWVkRXZlbnRQbHVnaW4gaW1wbGVtZW50cyBFdmVudE1hbmFnZXJQbHVnaW4ge1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSByZWdFeHA6IFJlZ0V4cDtcblxuICAgIHB1YmxpYyBtYW5hZ2VyITogRXZlbnRNYW5hZ2VyO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgICBldmVudDogc3RyaW5nLFxuICAgICAgICBoYW5kbGVyOiBGdW5jdGlvbixcbiAgICApOiBGdW5jdGlvbjtcblxuICAgIHB1YmxpYyBzdXBwb3J0cyhldmVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ0V4cC50ZXN0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RGVsYXkoZXZlbnQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5yZWdFeHAuZXhlYyhldmVudCk7XG5cbiAgICAgICAgaWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXZlbnQ6ICR7ZXZlbnR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7dGltZSwgdW5pdHN9ID0gbWF0Y2guZ3JvdXBzO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ21zJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKHRpbWUpO1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcih0aW1lKSAqIDEwMDA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBldmVudDogJHtldmVudH1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB1bndyYXAoZXZlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldmVudC5yZXBsYWNlKHRoaXMucmVnRXhwLCAnJyk7XG4gICAgfVxufVxuIl19