UNPKG

aurelia-bootstrap

Version:
63 lines (49 loc) 1.86 kB
/* */ define(['exports', 'aurelia-binding'], function (exports, _aureliaBinding) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DebounceBindingBehavior = undefined; function debounce(newValue) { var _this = this; var state = this.debounceState; if (state.immediate) { state.immediate = false; this.debouncedMethod(newValue); return; } clearTimeout(state.timeoutId); state.timeoutId = setTimeout(function () { return _this.debouncedMethod(newValue); }, state.delay); } var DebounceBindingBehavior = exports.DebounceBindingBehavior = function () { function DebounceBindingBehavior() { } DebounceBindingBehavior.prototype.bind = function bind(binding, source) { var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200; var methodToDebounce = 'updateTarget'; if (binding.callSource) { methodToDebounce = 'callSource'; } else if (binding.updateSource && binding.mode === _aureliaBinding.bindingMode.twoWay) { methodToDebounce = 'updateSource'; } binding.debouncedMethod = binding[methodToDebounce]; binding.debouncedMethod.originalName = methodToDebounce; binding[methodToDebounce] = debounce; binding.debounceState = { delay: delay, timeoutId: null, immediate: methodToDebounce === 'updateTarget' }; }; DebounceBindingBehavior.prototype.unbind = function unbind(binding, source) { var methodToRestore = binding.debouncedMethod.originalName; binding[methodToRestore] = binding.debouncedMethod; binding.debouncedMethod = null; clearTimeout(binding.debounceState.timeoutId); binding.debounceState = null; }; return DebounceBindingBehavior; }(); });