{"version":3,"sources":["../../src/use-clamp/index.ts"],"sourcesContent":["import { useCounter } from '../use-counter'\nimport { useUpdateEffect } from '../use-update-effect'\nimport { unwrapGettable } from '../utils/unwrap'\n\nimport type { UseCounterReturnsAction } from '../use-counter'\nimport type { Gettable } from '../utils/basic'\n\nexport type UseClampReturns = readonly [number, UseCounterReturnsAction]\n\n/**\n * A React Hook that clamps a number between a minimum and maximum value, supporting dynamic changes to the value, minimum, and maximum.\n *\n * Essentially, it's a more semantic version of [useCounter](/reference/use-counter) with `min` and `max` options set.\n */\nexport function useClamp(input: Gettable<number>, min: Gettable<number>, max: Gettable<number>): UseClampReturns {\n  const inputValue = unwrapGettable(input)\n\n  const [result, actions] = useCounter(inputValue, {\n    max: unwrapGettable(max),\n    min: unwrapGettable(min),\n  })\n\n  useUpdateEffect(() => {\n    actions.set(inputValue)\n  }, [inputValue])\n\n  return [result, actions] as const\n}\n"],"names":["useClamp","input","min","max","inputValue","unwrapGettable","useCounter","result","actions","useUpdateEffect","set"],"mappings":";;;;+BAcgBA;;;eAAAA;;;0BAdW;+BACK;sBACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYxB,SAASA,SAASC,KAAuB,EAAEC,GAAqB,EAAEC,GAAqB;IAC5F,IAAMC,aAAaC,IAAAA,sBAAc,EAACJ;IAElC,IAA0BK,+BAAAA,IAAAA,sBAAU,EAACF,YAAY;QAC/CD,KAAKE,IAAAA,sBAAc,EAACF;QACpBD,KAAKG,IAAAA,sBAAc,EAACH;IACtB,QAHOK,SAAmBD,gBAAXE,UAAWF;IAK1BG,IAAAA,gCAAe,EAAC;QACdD,QAAQE,GAAG,CAACN;IACd,GAAG;QAACA;KAAW;IAEf,OAAO;QAACG;QAAQC;KAAQ;AAC1B"}