{"version":3,"file":"ChipGroup.cjs","sources":["../../../../src/components/Chip/ChipGroup/ChipGroup.tsx"],"sourcesContent":["import { useUncontrolled } from '@raikou/hooks';\nimport { useProps } from '../../../core';\nimport { ChipGroupProvider } from '../ChipGroup.context';\n\nexport interface ChipGroupProps<T extends boolean = false> {\n  /** Determines whether it is allowed to select multiple values, `false` by default */\n  multiple?: T;\n\n  /** Controlled component value */\n  value?: T extends true ? string[] : string | null;\n\n  /** Uncontrolled component initial value */\n  defaultValue?: T extends true ? string[] : string | null;\n\n  /** Called when value changes. If `multiple` prop is set, called with an array of selected values. If not, called with a string value of selected chip. */\n  onChange?: (value: T extends true ? string[] : string) => void;\n\n  /** `Chip` components and any other elements */\n  children?: React.ReactNode;\n}\n\nconst defaultProps: Partial<ChipGroupProps<false>> = {};\n\nexport function ChipGroup<T extends boolean>(props: ChipGroupProps<T>) {\n  const { value, defaultValue, onChange, multiple, children } = useProps(\n    'ChipGroup',\n    defaultProps as any,\n    props\n  );\n\n  const [_value, setValue] = useUncontrolled<string | null | string[]>({\n    value,\n    defaultValue,\n    finalValue: multiple ? ([] as string[]) : null,\n    onChange,\n  });\n\n  const isChipSelected = (val: string) =>\n    Array.isArray(_value) ? _value.includes(val) : val === _value;\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const val = event.currentTarget.value;\n    if (Array.isArray(_value)) {\n      setValue(_value.includes(val) ? _value.filter((v) => v !== val) : [..._value, val]);\n    } else {\n      setValue(val);\n    }\n  };\n\n  return (\n    <ChipGroupProvider value={{ isChipSelected, onChange: handleChange, multiple }}>\n      {children}\n    </ChipGroupProvider>\n  );\n}\n\nChipGroup.displayName = '@raikou/core/ChipGroup';\n"],"names":["useProps","useUncontrolled","jsx","ChipGroupProvider"],"mappings":";;;;;;;;;;;;AAqBA,MAAM,eAA+C,EAAC;AAE/C,SAAS,UAA6B,KAA0B,EAAA;AACrE,EAAA,MAAM,EAAE,KAAO,EAAA,YAAA,EAAc,QAAU,EAAA,QAAA,EAAU,UAAa,GAAAA,iBAAA;AAAA,IAC5D,WAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA,GAAIC,qBAA0C,CAAA;AAAA,IACnE,KAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA,EAAY,QAAY,GAAA,EAAkB,GAAA,IAAA;AAAA,IAC1C;AAAA,GACD,CAAA;AAED,EAAM,MAAA,cAAA,GAAiB,CAAC,GAAA,KACtB,KAAM,CAAA,OAAA,CAAQ,MAAM,CAAA,GAAI,MAAO,CAAA,QAAA,CAAS,GAAG,CAAA,GAAI,GAAQ,KAAA,MAAA;AAEzD,EAAM,MAAA,YAAA,GAAe,CAAC,KAA+C,KAAA;AACnE,IAAM,MAAA,GAAA,GAAM,MAAM,aAAc,CAAA,KAAA;AAChC,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,MAAM,CAAG,EAAA;AACzB,MAAA,QAAA,CAAS,MAAO,CAAA,QAAA,CAAS,GAAG,CAAA,GAAI,OAAO,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,KAAM,GAAG,CAAI,GAAA,CAAC,GAAG,MAAA,EAAQ,GAAG,CAAC,CAAA;AAAA,KAC7E,MAAA;AACL,MAAA,QAAA,CAAS,GAAG,CAAA;AAAA;AACd,GACF;AAEA,EACE,uBAAAC,cAAA,CAACC,uCAAkB,KAAO,EAAA,EAAE,gBAAgB,QAAU,EAAA,YAAA,EAAc,QAAS,EAAA,EAC1E,QACH,EAAA,CAAA;AAEJ;AAEA,SAAA,CAAU,WAAc,GAAA,wBAAA;;;;"}