{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { useControlledState } from \"@react-stately/utils\";\nexport function useToggleState(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      isReadOnly = _props.isReadOnly,\n      onChange = _props.onChange;\n\n  var _useControlledState = useControlledState(props.isSelected, props.defaultSelected || false, function () {}),\n      _useControlledState2 = _slicedToArray(_useControlledState, 2),\n      isSelected = _useControlledState2[0],\n      setSelected = _useControlledState2[1];\n\n  function updateSelected(value) {\n    if (!isReadOnly) {\n      setSelected(value);\n\n      if (onChange) {\n        onChange(value);\n      }\n    }\n  }\n\n  function toggleState() {\n    if (!isReadOnly) {\n      setSelected(function (prev) {\n        var newVal = !prev;\n\n        if (onChange) {\n          onChange(newVal);\n        }\n\n        return newVal;\n      });\n    }\n  }\n\n  return {\n    isSelected: isSelected,\n    setSelected: updateSelected,\n    toggle: toggleState\n  };\n}","map":{"version":3,"sources":["packages/@react-stately/toggle/src/useToggleState.ts"],"names":["props","onChange","useControlledState","setSelected","prev","newVal","isSelected","toggle","toggleState"],"mappings":";;OA6BO,SAAA,cAAA,CAAA,KAAA,EAA8D;AAAA,MAAtCA,KAAsC,KAAA,KAAA,CAAA,EAAA;AAAtCA,IAAAA,KAAsC,GAAjB,EAArBA;AAAsC;;AAAA,eAAA,KAAA;AAAA,MAC/D,UAD+D,UAC/D,UAD+D;AAAA,MAClDC,QADkD,UAClDA,QADkD;;AAAA,4BAKnCC,kBAAkB,CAACF,KAAK,CAAN,UAAA,EAAmBA,KAAK,CAALA,eAAAA,IAAnB,KAAA,EAAmD,YAAM,CAA3G,CAAkD,CALiB;AAAA;AAAA,MAK/D,UAL+D;AAAA,MAK/D,WAL+D;;AAOnE,WAAA,cAAA,CAAA,KAAA,EAA+B;AAC7B,QAAI,CAAJ,UAAA,EAAiB;AACfG,MAAAA,WAAW,CAAXA,KAAW,CAAXA;;AACA,UAAA,QAAA,EAAc;AACZF,QAAAA,QAAQ,CAARA,KAAQ,CAARA;AACD;AACF;AACF;;AAED,WAAA,WAAA,GAAuB;AACrB,QAAI,CAAJ,UAAA,EAAiB;AACfE,MAAAA,WAAW,CAACC,UAAAA,IAAI,EAAI;AAClB,YAAIC,MAAM,GAAG,CAAb,IAAA;;AACA,YAAA,QAAA,EAAc;AACZJ,UAAAA,QAAQ,CAARA,MAAQ,CAARA;AACD;;AACD,eAAA,MAAA;AALFE,OAAW,CAAXA;AAOD;AACF;;AAED,SAAO;AACLG,IAAAA,UADK,EACLA,UADK;AAELH,IAAAA,WAAW,EAFN,cAAA;AAGLI,IAAAA,MAAM,EAAEC;AAHH,GAAP;AAKD","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 {ToggleProps} from '@react-types/checkbox';\nimport {useControlledState} from '@react-stately/utils';\n\nexport interface ToggleState {\n  /** Whether the toggle is selected. */\n  readonly isSelected: boolean,\n\n  /** Updates selection state. */\n  setSelected(isSelected: boolean): void,\n  \n  /** Toggle the selection state. */\n  toggle(): void\n}\n\n/**\n * Provides state management for toggle components like checkboxes and switches.\n */\nexport function useToggleState(props: ToggleProps = {}): ToggleState {\n  let {isReadOnly, onChange} = props;\n\n  // have to provide an empty function so useControlledState doesn't throw a fit\n  // can't use useControlledState's prop calling because we need the event object from the change\n  let [isSelected, setSelected] = useControlledState(props.isSelected, props.defaultSelected || false, () => {});\n\n  function updateSelected(value) {\n    if (!isReadOnly) {\n      setSelected(value);\n      if (onChange) {\n        onChange(value);\n      }\n    }\n  }\n\n  function toggleState() {\n    if (!isReadOnly) {\n      setSelected(prev => {\n        let newVal = !prev;\n        if (onChange) {\n          onChange(newVal);\n        }\n        return newVal;\n      });\n    }\n  }\n\n  return {\n    isSelected,\n    setSelected: updateSelected,\n    toggle: toggleState\n  };\n}\n"]},"metadata":{},"sourceType":"module"}