{"version":3,"sources":["../../../src/Checkbox/CheckboxGroup/CheckboxGroup.hooks.ts"],"names":["useState","useCheckboxGroup","items","value","setValue","item","_a","_b","_value","props","__objRest","onChangeChecked","checked","oldCheckedValues","oldValue","__spreadProps","__spreadValues","useIndeterminateCheckboxGroup","getCheckboxProps","isAllChecked"],"mappings":";+kBAAA,OAAS,YAAAA,MAAgB,QAQlB,IAAMC,EAAmB,CAACC,EAAgD,CAAC,IAAM,CACtF,GAAM,CAACC,EAAOC,CAAQ,EAAIJ,EACxBE,EAAM,IAAKG,GAAUA,EAAK,QAAUA,EAAK,MAAQ,MAAU,EAAE,OAAO,OAAO,CAC7E,EAyBA,MAAO,CACL,MAAAF,EACA,SAAAC,EACA,iBA1BwBE,GAGgF,CAHhF,IAAAC,EAAAD,EACxB,OAAOE,CAdX,EAa4BD,EAErBE,EAAAC,EAFqBH,EAErB,CADH,UAGA,IAAMI,EAAmBC,GAAqB,CAC5C,GAAIA,EAAS,CACXR,EAAUS,GAAqB,CAAC,GAAGA,EAAkBL,CAAM,CAAC,EAE5D,MACF,CAEAJ,EAAUS,GAAqBA,EAAiB,OAAQC,GAAaA,IAAaN,CAAM,CAAC,CAC3F,EAEMI,EAAUT,EAAM,SAASK,CAAM,EAErC,OAAOO,EAAAC,EAAA,GACFP,GADE,CAEL,gBAAAE,EACA,QAAAC,CACF,EACF,CAMA,CACF,EAKaK,EAAiCf,GAAuD,CACnG,GAAM,CAAE,MAAAC,EAAO,iBAAAe,EAAkB,SAAAd,CAAS,EAAIH,EAAiBC,CAAK,EAE9DiB,EAAejB,EAClB,OAAQG,GAAS,CAACA,EAAK,QAAQ,EAC/B,MAAM,CAAC,CAAE,MAAOG,CAAO,IAAOL,EAAQA,EAAM,SAASK,CAAM,EAAI,EAAM,EAmBxE,MAAO,CACL,MAAAL,EACA,iBAAAe,EACA,eApBqB,IAAM,CAC3B,GAAIf,EAAM,OAAS,EAAG,CACpBC,EAAS,CAAC,CAAC,EACX,MACF,CAEAA,EAASF,EAAM,OAAQG,GAAS,CAACA,EAAK,QAAQ,EAAE,IAAKA,GAASA,EAAK,KAAK,CAAC,CAC3E,EAcE,aAAAc,EACA,8BAbqCV,GAC9BO,EAAA,CACL,gBAAiB,CAACG,EAClB,QAAShB,EAAM,OAAS,GACrBM,EAUP,CACF","sourcesContent":["import { useState } from \"react\";\nimport type { CheckboxProps } from \"..\";\nimport type { PickRequired } from \"../../types\";\nimport type { CheckboxLabelProps } from \"../Checkbox.types\";\n\n/**\n * @see https://clayground.vercel.app/components/checkbox/checkbox-group#usecheckboxgroup\n */\nexport const useCheckboxGroup = (items: PickRequired<CheckboxProps, \"value\">[] = []) => {\n  const [value, setValue] = useState(\n    items.map((item) => (item.checked ? item.value : undefined)).filter(Boolean),\n  );\n\n  const getCheckboxProps = ({\n    value: _value,\n    ...props\n  }: PickRequired<Omit<CheckboxLabelProps, \"onChangeChecked\" | \"checked\">, \"value\">): CheckboxLabelProps => {\n    const onChangeChecked = (checked: boolean) => {\n      if (checked) {\n        setValue((oldCheckedValues) => [...oldCheckedValues, _value]);\n\n        return;\n      }\n\n      setValue((oldCheckedValues) => oldCheckedValues.filter((oldValue) => oldValue !== _value));\n    };\n\n    const checked = value.includes(_value);\n\n    return {\n      ...props,\n      onChangeChecked,\n      checked,\n    };\n  };\n\n  return {\n    value,\n    setValue,\n    getCheckboxProps,\n  };\n};\n\n/**\n * @see https://clayground.vercel.app/components/checkbox/checkbox-group#useindeterminatecheckboxgroup\n */\nexport const useIndeterminateCheckboxGroup = (items: PickRequired<CheckboxLabelProps, \"value\">[]) => {\n  const { value, getCheckboxProps, setValue } = useCheckboxGroup(items);\n\n  const isAllChecked = items\n    .filter((item) => !item.disabled)\n    .every(({ value: _value }) => (value ? value.includes(_value) : false));\n\n  const toggleAllCheck = () => {\n    if (value.length > 0) {\n      setValue([]);\n      return;\n    }\n\n    setValue(items.filter((item) => !item.disabled).map((item) => item.value));\n  };\n\n  const getIndeterminateCheckboxProps = (props: CheckboxLabelProps) => {\n    return {\n      isIndeterminate: !isAllChecked,\n      checked: value.length > 0,\n      ...props,\n    };\n  };\n\n  return {\n    value,\n    getCheckboxProps,\n    toggleAllCheck,\n    isAllChecked,\n    getIndeterminateCheckboxProps,\n  };\n};\n"]}