All files / mframejs/behavior debounce.ts

23.08% Statements 3/13
0% Branches 0/2
0% Functions 0/4
16.67% Lines 2/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  29x     29x                                                      
 
import { behavior } from '../decorator/exported';
 
@behavior('debounce')
export class DebounceBehavior {
    public name: string;
    constructor(binding: any, args: any) {
        const time = args[0] || 100;
        if (binding.eventHandlerBinded) {
 
            binding.eventHandlerBindedBackup = binding.eventHandlerBinded;
 
            binding.detachedBackup = binding.detached;
 
            binding.detached = function () {
                binding.detachedBackup();
            };
 
            binding.eventHandlerBinded = function () {
                if (this.timerBehavior) {
                    clearTimeout(this.timerBehavior);
                    this.timerBehavior = null;
                }
                this.timerBehavior = setTimeout(() => {
                    binding.eventHandlerBindedBackup();
                }, time);
            }.bind(binding);
 
        }
    }
}