{"version":3,"file":"SwitchGroup.cjs","sources":["../../../../src/components/Switch/SwitchGroup/SwitchGroup.tsx"],"sourcesContent":["import { useUncontrolled } from '@raikou/hooks';\nimport { factory, Factory, RaikouSize, useProps } from '../../../core';\nimport { Input, InputWrapperProps, InputWrapperStylesNames } from '../../Input';\nimport { InputsGroupFieldset } from '../../InputsGroupFieldset';\nimport { SwitchGroupProvider } from '../SwitchGroup.context';\n\nexport type SwitchGroupStylesNames = InputWrapperStylesNames;\n\nexport interface SwitchGroupProps extends Omit<InputWrapperProps, 'onChange'> {\n  /** `Switch` components */\n  children: React.ReactNode;\n\n  /** Controlled component value */\n  value?: string[];\n\n  /** Default value for uncontrolled component */\n  defaultValue?: string[];\n\n  /** Called when value changes */\n  onChange?: (value: string[]) => void;\n\n  /** Props passed down to the `Input.Wrapper` */\n  wrapperProps?: Record<string, any>;\n\n  /** Controls size of the `Input.Wrapper`, `'sm'` by default */\n  size?: RaikouSize | (string & {});\n\n  /** If set, value cannot be changed */\n  readOnly?: boolean;\n}\n\nexport type SwitchGroupFactory = Factory<{\n  props: SwitchGroupProps;\n  ref: HTMLDivElement;\n  stylesNames: SwitchGroupStylesNames;\n}>;\n\nconst defaultProps: Partial<SwitchGroupProps> = {};\n\nexport const SwitchGroup = factory<SwitchGroupFactory>((props, ref) => {\n  const { value, defaultValue, onChange, size, wrapperProps, children, readOnly, ...others } =\n    useProps('SwitchGroup', defaultProps, props);\n\n  const [_value, setValue] = useUncontrolled({\n    value,\n    defaultValue,\n    finalValue: [],\n    onChange,\n  });\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const itemValue = event.currentTarget.value;\n    !readOnly &&\n      setValue(\n        _value.includes(itemValue)\n          ? _value.filter((item) => item !== itemValue)\n          : [..._value, itemValue]\n      );\n  };\n\n  return (\n    <SwitchGroupProvider value={{ value: _value, onChange: handleChange, size }}>\n      <Input.Wrapper\n        size={size}\n        ref={ref}\n        {...wrapperProps}\n        {...others}\n        labelElement=\"div\"\n        __staticSelector=\"SwitchGroup\"\n      >\n        <InputsGroupFieldset role=\"group\">{children}</InputsGroupFieldset>\n      </Input.Wrapper>\n    </SwitchGroupProvider>\n  );\n});\n\nSwitchGroup.classes = Input.Wrapper.classes;\nSwitchGroup.displayName = '@raikou/core/SwitchGroup';\n"],"names":["factory","useProps","useUncontrolled","jsx","SwitchGroupProvider","Input","InputsGroupFieldset"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqCA,MAAM,eAA0C,EAAC;AAE1C,MAAM,WAAc,GAAAA,eAAA,CAA4B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACrE,EAAA,MAAM,EAAE,KAAA,EAAO,YAAc,EAAA,QAAA,EAAU,MAAM,YAAc,EAAA,QAAA,EAAU,QAAU,EAAA,GAAG,MAAO,EAAA,GACvFC,iBAAS,CAAA,aAAA,EAAe,cAAc,KAAK,CAAA;AAE7C,EAAA,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA,GAAIC,qBAAgB,CAAA;AAAA,IACzC,KAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAY,EAAC;AAAA,IACb;AAAA,GACD,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,CAAC,KAA+C,KAAA;AACnE,IAAM,MAAA,SAAA,GAAY,MAAM,aAAc,CAAA,KAAA;AACtC,IAAA,CAAC,QACC,IAAA,QAAA;AAAA,MACE,MAAO,CAAA,QAAA,CAAS,SAAS,CAAA,GACrB,OAAO,MAAO,CAAA,CAAC,IAAS,KAAA,IAAA,KAAS,SAAS,CAAA,GAC1C,CAAC,GAAG,QAAQ,SAAS;AAAA,KAC3B;AAAA,GACJ;AAEA,EACE,uBAAAC,cAAA,CAACC,2CAAoB,KAAO,EAAA,EAAE,OAAO,MAAQ,EAAA,QAAA,EAAU,YAAc,EAAA,IAAA,EACnE,EAAA,QAAA,kBAAAD,cAAA;AAAA,IAACE,WAAM,CAAA,OAAA;AAAA,IAAN;AAAA,MACC,IAAA;AAAA,MACA,GAAA;AAAA,MACC,GAAG,YAAA;AAAA,MACH,GAAG,MAAA;AAAA,MACJ,YAAa,EAAA,KAAA;AAAA,MACb,gBAAiB,EAAA,aAAA;AAAA,MAEjB,QAAC,kBAAAF,cAAA,CAAAG,uCAAA,EAAA,EAAoB,IAAK,EAAA,OAAA,EAAS,QAAS,EAAA;AAAA;AAAA,GAEhD,EAAA,CAAA;AAEJ,CAAC;AAED,WAAY,CAAA,OAAA,GAAUD,YAAM,OAAQ,CAAA,OAAA;AACpC,WAAA,CAAY,WAAc,GAAA,0BAAA;;;;"}