Skip to content

⬅️ Back to Table of Contents

📄 index.ts

📊 Analysis Summary

Metric Count
🔧 Functions 6
📦 Imports 5
📐 Interfaces 2

📚 Table of Contents

🛠️ File Location:

📂 packages/shared/useCounter/index.ts

📦 Imports

Name Source
MaybeRef vue
Ref vue
shallowReadonly vue
shallowRef vue
unref vue

Functions

useCounter(initialValue: MaybeRef<number>, options: UseCounterOptions): { count: any; inc: (delta?: number) => number; dec: (delta?: number) => number; get: () => any; set: (val: number) => number; reset: (val?: any) => number; }

Code
export function useCounter(initialValue: MaybeRef<number> = 0, options: UseCounterOptions = {}) {
  let _initialValue = unref(initialValue)
  const count = shallowRef(initialValue)

  const {
    max = Number.POSITIVE_INFINITY,
    min = Number.NEGATIVE_INFINITY,
  } = options

  const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min)
  const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max)
  const get = () => count.value
  const set = (val: number) => (count.value = Math.max(min, Math.min(max, val)))
  const reset = (val = _initialValue) => {
    _initialValue = val
    return set(val)
  }

  return { count: shallowReadonly(count), inc, dec, get, set, reset }
}
  • JSDoc:

    /**
     * Basic counter with utility functions.
     *
     * @see https://vueuse.org/useCounter
     * @param [initialValue]
     * @param options
     */
    

  • Parameters:

  • initialValue: MaybeRef<number>
  • options: UseCounterOptions
  • Return Type: { count: any; inc: (delta?: number) => number; dec: (delta?: number) => number; get: () => any; set: (val: number) => number; reset: (val?: any) => number; }
  • Calls:
  • unref (from vue)
  • shallowRef (from vue)
  • Math.max
  • Math.min
  • set
  • shallowReadonly (from vue)

inc(delta: number): number

Code
(delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min)
  • Parameters:
  • delta: number
  • Return Type: number

dec(delta: number): number

Code
(delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max)
  • Parameters:
  • delta: number
  • Return Type: number

get(): any

Code
() => count.value
  • Return Type: any

set(val: number): number

Code
(val: number) => (count.value = Math.max(min, Math.min(max, val)))
  • Parameters:
  • val: number
  • Return Type: number

reset(val: any): number

Code
(val = _initialValue) => {
    _initialValue = val
    return set(val)
  }
  • Parameters:
  • val: any
  • Return Type: number
  • Calls:
  • set

Interfaces

UseCounterOptions

Interface Code
export interface UseCounterOptions {
  min?: number
  max?: number
}

Properties

Name Type Optional Description
min number
max number

UseCounterReturn

Interface Code
export interface UseCounterReturn {
  /**
   * The current value of the counter.
   */
  readonly count: Readonly<Ref<number>>
  /**
   * Increment the counter.
   *
   * @param {number} [delta=1] The number to increment.
   */
  inc: (delta?: number) => void
  /**
   * Decrement the counter.
   *
   * @param {number} [delta=1] The number to decrement.
   */
  dec: (delta?: number) => void
  /**
   * Get the current value of the counter.
   */
  get: () => number
  /**
   * Set the counter to a new value.
   *
   * @param val The new value of the counter.
   */
  set: (val: number) => void
  /**
   * Reset the counter to an initial value.
   */
  reset: (val?: number) => number
}

Properties

Name Type Optional Description
count Readonly<Ref<number>>
inc (delta?: number) => void
dec (delta?: number) => void
get () => number
set (val: number) => void
reset (val?: number) => number