{"version":3,"file":"index.cjs","sources":["../../../../src/components/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import { KeyboardEvent, useCallback, useState } from 'react';\n\nimport { useUpdateEffect } from '@/hooks/internal';\n\nimport type { SelectOptionProp, SelectionType } from '@/components/Select/common/types';\nimport {\n  SelectGroup,\n  SelectItem,\n  InternalSelect,\n  SelectItemDescription,\n} from '@/components/Select/common/InternalSelect';\nimport { MultiSelectProps } from './MultiSelect.types';\n\nexport const MultiSelect = ({\n  value: valueProp,\n  defaultValue,\n  onSelect: onSelectProp,\n  options,\n  children,\n  defaultOpen,\n  onOpenChange: onOpenChangeProp,\n  ...props\n}: MultiSelectProps) => {\n  const [selectedValues, setSelectedValues] = useState<string[]>(\n    valueProp ?? defaultValue ?? []\n  );\n  const [open, setOpen] = useState(defaultOpen ?? false);\n\n  const onOpenChange = useCallback(\n    (open: boolean) => {\n      setOpen(open);\n      if (typeof onOpenChangeProp === 'function') {\n        onOpenChangeProp(open);\n      }\n    },\n    [onOpenChangeProp]\n  );\n\n  useUpdateEffect(() => {\n    setSelectedValues(valueProp ?? []);\n  }, [valueProp]);\n\n  const onChange = useCallback(\n    (values: string[], type?: SelectionType, evt?: KeyboardEvent<HTMLElement>) => {\n      setSelectedValues(values);\n      if (typeof onSelectProp === 'function') {\n        onSelectProp(values, type, evt);\n      }\n    },\n    [onSelectProp]\n  );\n\n  const onSelect = useCallback(\n    (value: string, type?: SelectionType) => {\n      let newValues = [];\n      if (selectedValues.includes(value)) {\n        newValues = selectedValues.filter(currentValue => currentValue !== value);\n      } else {\n        newValues = [...selectedValues, value];\n      }\n\n      onChange(newValues, type);\n    },\n    [onChange, selectedValues]\n  );\n\n  const conditionalProps: Partial<SelectOptionProp> = {};\n  if (options) {\n    conditionalProps.options = options;\n  } else {\n    conditionalProps.children = children;\n  }\n\n  return (\n    <InternalSelect\n      onChange={onChange}\n      value={valueProp ?? selectedValues}\n      open={open}\n      onOpenChange={onOpenChange}\n      onSelect={onSelect}\n      multiple\n      {...conditionalProps}\n      {...props}\n    />\n  );\n};\n\nMultiSelect.Group = SelectGroup;\nMultiSelect.Item = SelectItem;\nMultiSelect.ItemDescription = SelectItemDescription;\n"],"names":["useState","useCallback","open","useUpdateEffect","jsx","InternalSelect","SelectGroup","SelectItem","SelectItemDescription"],"mappings":";;;;;;;;;AAaO,MAAM,cAAc,CAAC;AAAA,EAC1B,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,EAAc,gBAAA;AAAA,EACd,GAAG;AACL,CAAA,KAAwB;AACtB,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,cAAA;AAAA,IAC1C,SAAA,IAAa,gBAAgB;AAAC,GAChC;AACA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,cAAA,CAAS,eAAe,KAAK,CAAA;AAErD,EAAA,MAAM,YAAA,GAAeC,iBAAA;AAAA,IACnB,CAACC,KAAAA,KAAkB;AACjB,MAAA,OAAA,CAAQA,KAAI,CAAA;AACZ,MAAA,IAAI,OAAO,qBAAqB,UAAA,EAAY;AAC1C,QAAA,gBAAA,CAAiBA,KAAI,CAAA;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAAC,+BAAA,CAAgB,MAAM;AACpB,IAAA,iBAAA,CAAkB,SAAA,IAAa,EAAE,CAAA;AAAA,EACnC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,QAAA,GAAWF,iBAAA;AAAA,IACf,CAAC,MAAA,EAAkB,IAAA,EAAsB,GAAA,KAAqC;AAC5E,MAAA,iBAAA,CAAkB,MAAM,CAAA;AACxB,MAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,QAAA,YAAA,CAAa,MAAA,EAAQ,MAAM,GAAG,CAAA;AAAA,MAChC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,QAAA,GAAWA,iBAAA;AAAA,IACf,CAAC,OAAe,IAAA,KAAyB;AACvC,MAAA,IAAI,YAAY,EAAC;AACjB,MAAA,IAAI,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,EAAG;AAClC,QAAA,SAAA,GAAY,cAAA,CAAe,MAAA,CAAO,CAAA,YAAA,KAAgB,YAAA,KAAiB,KAAK,CAAA;AAAA,MAC1E,CAAA,MAAO;AACL,QAAA,SAAA,GAAY,CAAC,GAAG,cAAA,EAAgB,KAAK,CAAA;AAAA,MACvC;AAEA,MAAA,QAAA,CAAS,WAAW,IAAI,CAAA;AAAA,IAC1B,CAAA;AAAA,IACA,CAAC,UAAU,cAAc;AAAA,GAC3B;AAEA,EAAA,MAAM,mBAA8C,EAAC;AACrD,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,gBAAA,CAAiB,OAAA,GAAU,OAAA;AAAA,EAC7B,CAAA,MAAO;AACL,IAAA,gBAAA,CAAiB,QAAA,GAAW,QAAA;AAAA,EAC9B;AAEA,EAAA,uBACEG,cAAA;AAAA,IAACC,6BAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,OAAO,SAAA,IAAa,cAAA;AAAA,MACpB,IAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAQ,IAAA;AAAA,MACP,GAAG,gBAAA;AAAA,MACH,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,WAAA,CAAY,KAAA,GAAQC,0BAAA;AACpB,WAAA,CAAY,IAAA,GAAOC,yBAAA;AACnB,WAAA,CAAY,eAAA,GAAkBC,oCAAA;;"}