{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { useControlledState } from \"@react-stately/utils\";\nexport function useCheckboxGroupState(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _useControlledState = useControlledState(props.value, props.defaultValue || [], props.onChange),\n      _useControlledState2 = _slicedToArray(_useControlledState, 2),\n      selectedValues = _useControlledState2[0],\n      _setValue = _useControlledState2[1];\n\n  var state = {\n    value: selectedValues,\n    setValue: function setValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n\n      _setValue(value);\n    },\n    isDisabled: props.isDisabled || false,\n    isReadOnly: props.isReadOnly || false,\n    isSelected: function isSelected(value) {\n      return selectedValues.includes(value);\n    },\n    addValue: function addValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n\n      _setValue(function (values) {\n        if (!values.includes(value)) {\n          return values.concat(value);\n        }\n\n        return values;\n      });\n    },\n    removeValue: function removeValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n\n      _setValue(function (values) {\n        if (values.includes(value)) {\n          return values.filter(function (existingValue) {\n            return existingValue !== value;\n          });\n        }\n\n        return values;\n      });\n    },\n    toggleValue: function toggleValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n\n      _setValue(function (values) {\n        if (values.includes(value)) {\n          return values.filter(function (existingValue) {\n            return existingValue !== value;\n          });\n        }\n\n        return values.concat(value);\n      });\n    }\n  };\n  return state;\n}","map":{"version":3,"sources":["packages/@react-stately/checkbox/src/useCheckboxGroupState.ts"],"names":["props","useControlledState","state","value","setValue","isDisabled","isReadOnly","isSelected","selectedValues","addValue","values","removeValue","existingValue","toggleValue"],"mappings":";;OA6CO,SAAA,qBAAA,CAAA,KAAA,EAAmF;AAAA,MAApDA,KAAoD,KAAA,KAAA,CAAA,EAAA;AAApDA,IAAAA,KAAoD,GAAxB,EAA5BA;AAAoD;;AAAA,4BACvDC,kBAAkB,CAACD,KAAK,CAAN,KAAA,EAAcA,KAAK,CAALA,YAAAA,IAAd,EAAA,EAAwCA,KAAK,CAAhG,QAAmD,CADqC;AAAA;AAAA,MACpF,cADoF;AAAA,MACpF,SADoF;;AAGxF,MAAME,KAAyB,GAAG;AAChCC,IAAAA,KAAK,EAD2B,cAAA;AAEhCC,IAAAA,QAFgC,oBAExB,KAFwB,EAEhB;AACd,UAAIJ,KAAK,CAALA,UAAAA,IAAoBA,KAAK,CAA7B,UAAA,EAA0C;AACxC;AACD;;AAEDI,MAAAA,SAAQ,CAARA,KAAQ,CAARA;AAP8B,KAAA;AAShCC,IAAAA,UAAU,EAAEL,KAAK,CAALA,UAAAA,IAToB,KAAA;AAUhCM,IAAAA,UAAU,EAAEN,KAAK,CAALA,UAAAA,IAVoB,KAAA;AAWhCO,IAAAA,UAXgC,sBAWtB,KAXsB,EAWd;AAChB,aAAOC,cAAc,CAAdA,QAAAA,CAAP,KAAOA,CAAP;AAZ8B,KAAA;AAchCC,IAAAA,QAdgC,oBAcxB,KAdwB,EAchB;AACd,UAAIT,KAAK,CAALA,UAAAA,IAAoBA,KAAK,CAA7B,UAAA,EAA0C;AACxC;AACD;;AACDI,MAAAA,SAAQ,CAACM,UAAAA,MAAM,EAAI;AACjB,YAAI,CAACA,MAAM,CAANA,QAAAA,CAAL,KAAKA,CAAL,EAA6B;AAC3B,iBAAOA,MAAM,CAANA,MAAAA,CAAP,KAAOA,CAAP;AACD;;AACD,eAAA,MAAA;AAJFN,OAAQ,CAARA;AAlB8B,KAAA;AAyBhCO,IAAAA,WAzBgC,uBAyBrB,KAzBqB,EAyBb;AACjB,UAAIX,KAAK,CAALA,UAAAA,IAAoBA,KAAK,CAA7B,UAAA,EAA0C;AACxC;AACD;;AACDI,MAAAA,SAAQ,CAACM,UAAAA,MAAM,EAAI;AACjB,YAAIA,MAAM,CAANA,QAAAA,CAAJ,KAAIA,CAAJ,EAA4B;AAC1B,iBAAOA,MAAM,CAANA,MAAAA,CAAcE,UAAAA,aAAa;AAAA,mBAAIA,aAAa,KAAnD,KAAkC;AAAA,WAA3BF,CAAP;AACD;;AACD,eAAA,MAAA;AAJFN,OAAQ,CAARA;AA7B8B,KAAA;AAoChCS,IAAAA,WApCgC,uBAoCrB,KApCqB,EAoCb;AACjB,UAAIb,KAAK,CAALA,UAAAA,IAAoBA,KAAK,CAA7B,UAAA,EAA0C;AACxC;AACD;;AACDI,MAAAA,SAAQ,CAACM,UAAAA,MAAM,EAAI;AACjB,YAAIA,MAAM,CAANA,QAAAA,CAAJ,KAAIA,CAAJ,EAA4B;AAC1B,iBAAOA,MAAM,CAANA,MAAAA,CAAcE,UAAAA,aAAa;AAAA,mBAAIA,aAAa,KAAnD,KAAkC;AAAA,WAA3BF,CAAP;AACD;;AACD,eAAOA,MAAM,CAANA,MAAAA,CAAP,KAAOA,CAAP;AAJFN,OAAQ,CAARA;AAMD;AA9C+B,GAAlC;AAiDA,SAAA,KAAA;AACD","sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CheckboxGroupProps} from '@react-types/checkbox';\nimport {useControlledState} from '@react-stately/utils';\n\nexport interface CheckboxGroupState {\n  /** Current selected values. */\n  readonly value: readonly string[],\n\n  /** Whether the checkbox group is disabled. */\n  readonly isDisabled: boolean,\n\n  /** Whether the checkbox group is read only. */\n  readonly isReadOnly: boolean,\n\n  /** Returns whether the given value is selected. */\n  isSelected(value: string): boolean,\n\n  /** Sets the selected values. */\n  setValue(value: string[]): void,\n\n  /** Adds a value to the set of selected values. */\n  addValue(value: string): void,\n\n  /** Removes a value from the set of selected values. */\n  removeValue(value: string): void,\n\n  /** Toggles a value in the set of selected values. */\n  toggleValue(value: string): void\n}\n\n/**\n * Provides state management for a checkbox group component. Provides a name for the group,\n * and manages selection and focus state.\n */\nexport function useCheckboxGroupState(props: CheckboxGroupProps = {}): CheckboxGroupState {\n  let [selectedValues, setValue] = useControlledState(props.value, props.defaultValue || [], props.onChange);\n\n  const state: CheckboxGroupState = {\n    value: selectedValues,\n    setValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n\n      setValue(value);\n    },\n    isDisabled: props.isDisabled || false,\n    isReadOnly: props.isReadOnly || false,\n    isSelected(value) {\n      return selectedValues.includes(value);\n    },\n    addValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n      setValue(values => {\n        if (!values.includes(value)) {\n          return values.concat(value);\n        }\n        return values;\n      });\n    },\n    removeValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n      setValue(values => {\n        if (values.includes(value)) {\n          return values.filter(existingValue => existingValue !== value);\n        }\n        return values;\n      });\n    },\n    toggleValue(value) {\n      if (props.isReadOnly || props.isDisabled) {\n        return;\n      }\n      setValue(values => {\n        if (values.includes(value)) {\n          return values.filter(existingValue => existingValue !== value);\n        }\n        return values.concat(value);\n      });\n    }\n  };\n\n  return state;\n}\n"]},"metadata":{},"sourceType":"module"}