function $c5d017602d25d050$export$61fc7d43ac8f84b0(delay, callback, options) {
    var _ref = options || {}, _ref$atBegin = _ref.atBegin, atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
    return $c5d017602d25d050$export$de363e709c412c8a(delay, callback, {
        debounceMode: atBegin !== false
    });
}
Debounce execution of a function. Debouncing, unlike throttling,
guarantees that a function is only executed a single time, either at the
very beginning of a series of calls, or at the very end.

@param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
@param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
                                       to `callback` when the debounced-function is executed.
@param {object} [options] -           An object to configure options.
@param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
                                       after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
                                       (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).

@returns {Function} A new, debounced function.