{"version":3,"sources":["../src/use-steps.ts"],"sourcesContent":["import { useCallback, useState } from \"react\"\n\nexport interface UseStepsProps {\n  count?: number\n  index?: number\n}\n\nexport const useSteps = ({ count, index = 0 }: UseStepsProps) => {\n  const [activeStep, setActiveStep] = useState(index)\n\n  const maxStep = typeof count === \"number\" ? count - 1 : 0\n  const activeStepPercent = activeStep / maxStep\n\n  const isActiveStep = useCallback(\n    (step: number) => step === activeStep,\n    [activeStep],\n  )\n\n  const isCompleteStep = useCallback(\n    (step: number) => step < activeStep,\n    [activeStep],\n  )\n\n  const isIncompleteStep = useCallback(\n    (step: number) => step > activeStep,\n    [activeStep],\n  )\n\n  const getStepStatus = useCallback(\n    (step: number): \"active\" | \"complete\" | \"incomplete\" => {\n      if (step < activeStep) return \"complete\"\n      if (step > activeStep) return \"incomplete\"\n\n      return \"active\"\n    },\n    [activeStep],\n  )\n\n  const onStepNext = useCallback(\n    () =>\n      setActiveStep((step) =>\n        typeof count === \"number\" ? Math.min(count, step + 1) : step + 1,\n      ),\n    [count],\n  )\n\n  const onStepPrev = useCallback(\n    () => setActiveStep((step) => Math.max(0, step - 1)),\n    [],\n  )\n\n  return {\n    activeStep,\n    activeStepPercent,\n    getStepStatus,\n    isActiveStep,\n    isCompleteStep,\n    isIncompleteStep,\n    setActiveStep,\n    onStepNext,\n    onStepPrev,\n  }\n}\n\nexport type UseStepsReturn = ReturnType<typeof useSteps>\n"],"mappings":";;;AAAA,SAAS,aAAa,gBAAgB;AAO/B,IAAM,WAAW,CAAC,EAAE,OAAO,QAAQ,EAAE,MAAqB;AAC/D,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,UAAU,OAAO,UAAU,WAAW,QAAQ,IAAI;AACxD,QAAM,oBAAoB,aAAa;AAEvC,QAAM,eAAe;AAAA,IACnB,CAAC,SAAiB,SAAS;AAAA,IAC3B,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,SAAiB,OAAO;AAAA,IACzB,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,mBAAmB;AAAA,IACvB,CAAC,SAAiB,OAAO;AAAA,IACzB,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,gBAAgB;AAAA,IACpB,CAAC,SAAuD;AACtD,UAAI,OAAO,WAAY,QAAO;AAC9B,UAAI,OAAO,WAAY,QAAO;AAE9B,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,aAAa;AAAA,IACjB,MACE;AAAA,MAAc,CAAC,SACb,OAAO,UAAU,WAAW,KAAK,IAAI,OAAO,OAAO,CAAC,IAAI,OAAO;AAAA,IACjE;AAAA,IACF,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,aAAa;AAAA,IACjB,MAAM,cAAc,CAAC,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}