Class TimingAbstract

Provides timing related higher-order functions.

Index
  • Wraps a callback in a debounced timeout. Delay execution of the callback function until the function has not been called for the given delay in milliseconds.

    Type Parameters

    • Args extends unknown[] = unknown[]

    Parameters

    • callback: (...args: Args) => void

      A function to execute once the debounced threshold has been passed.

    • delay: number

      An amount of time in milliseconds to delay.

    Returns (...args: Args) => void

    A wrapped function that can be called to debounce execution.

    /**
    * Debounce the update invocation by 500ms.
    */
    const updateDebounced = Timing.debounce(() => doc.update(), 500);

    // Use the function like:
    updateDebounced();
    /**
    * Debounce the update invocation by 500ms.
    *
    * @param {string} value - A value to update.
    */
    const updateDebounced = Timing.debounce((value) => doc.update(value), 500);

    // Use the function like:
    updateDebounced('new value');
  • Creates a double click event handler that distinguishes between single and double clicks. Calls the single callback on a single click and the double callback on a double click. The default double click delay to invoke the double callback is 400 milliseconds.

    Type Parameters

    Parameters

    • opts: { delay: number; double: (event: E) => void; single: (event: E) => void }

      Optional parameters.

      • delay: number

        Double click delay.

      • double: (event: E) => void

        Double click callback.

      • single: (event: E) => void

        Single click callback.

    Returns (event: E) => void

    The gated double-click handler.

    // Given a button element.
    button.addEventListener('click', Timing.doubleClick({
    single: (event) => console.log('Single click: ', event),
    double: (event) => console.log('Double click: ', event)
    });