{"mappings":";;;;;;AAAA;;;;;;;;;;CAUC;;;;;AAyBM,SAAS,0CAAqB,KAAiC,EAAE,KAAyB,EAAE,QAA4C;IAC7I,MAAM,cAAc,CAAA,GAAA,qBAAa,EAAE;QACjC,YAAY,MAAM,UAAU,IAAI,MAAM,UAAU;QAChD,YAAY,MAAM,UAAU,CAAC,MAAM,KAAK;QACxC,iBAAiB,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK;QACxD,UAAS,UAAU;YACjB,IAAI,YACF,MAAM,QAAQ,CAAC,MAAM,KAAK;iBAE1B,MAAM,WAAW,CAAC,MAAM,KAAK;YAG/B,IAAI,MAAM,QAAQ,EAChB,MAAM,QAAQ,CAAC;QAEnB;IACF;IAEA,IAAI,QAAC,IAAI,QAAE,IAAI,iBAAE,aAAa,kBAAE,cAAc,sBAAE,kBAAkB,EAAC,GAAG,CAAA,GAAA,yCAAgB,EAAE,GAAG,CAAC;IAC5F,qBAAqB,MAAM,kBAAkB,IAAI;IAEjD,sCAAsC;IACtC,IAAI,sBAAC,kBAAkB,EAAC,GAAG,CAAA,GAAA,6BAAqB,EAAE;QAChD,GAAG,KAAK;QACR,OAAO,YAAY,UAAU;QAC7B,mDAAmD;QACnD,MAAM;QACN,oBAAoB;IACtB;IAEA,oEAAoE;IACpE,IAAI,mBAAmB,CAAA,GAAA,aAAK,EAAE,CAAA,GAAA,gCAAwB;IACtD,IAAI,mBAAmB;QACrB,MAAM,UAAU,CAAC,MAAM,KAAK,EAAE,mBAAmB,SAAS,GAAG,qBAAqB,iBAAiB,OAAO;IAC5G;IAEA,CAAA,GAAA,gBAAQ,EAAE;IAEV,+CAA+C;IAC/C,IAAI,6BAA6B,MAAM,kBAAkB,CAAC,SAAS,GAAG,MAAM,kBAAkB,GAAG;IACjG,IAAI,oBAAoB,uBAAuB,WAAW,MAAM,iBAAiB,GAAG;IAEpF,IAAI,MAAM,CAAA,GAAA,yCAAU,EAAE;QACpB,GAAG,KAAK;QACR,YAAY,MAAM,UAAU,IAAI,MAAM,UAAU;QAChD,YAAY,MAAM,UAAU,IAAI,MAAM,UAAU;QAChD,MAAM,MAAM,IAAI,IAAI;QACpB,MAAM,MAAM,IAAI,IAAI;QACpB,YAAY,MAAM,UAAU,IAAI,MAAM,UAAU;4BAChD;QACA,CAAC,CAAA,GAAA,iCAAyB,EAAE,EAAE;YAC5B,oBAAoB;+BACpB;YACA,iBAAiB,MAAM,eAAe;YACtC,kBAAkB,MAAM,gBAAgB;YACxC,kBAAiB,CAAmB;gBAClC,iBAAiB,OAAO,GAAG;gBAC3B;YACF;QACF;IACF,GAAG,aAAa;IAEhB,OAAO;QACL,GAAG,GAAG;QACN,YAAY;YACV,GAAG,IAAI,UAAU;YACjB,oBAAoB;gBAClB,KAAK,CAAC,mBAAmB;gBACzB,MAAM,SAAS,GAAG,iBAAiB;gBACnC;aACD,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,QAAQ;QACjC;IACF;AACF","sources":["packages/react-aria/src/checkbox/useCheckboxGroupItem.ts"],"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 {AriaCheckboxProps, CheckboxAria, useCheckbox} from './useCheckbox';\nimport {checkboxGroupData} from './utils';\nimport {CheckboxGroupState} from 'react-stately/useCheckboxGroupState';\nimport {\n  DEFAULT_VALIDATION_RESULT,\n  privateValidationStateProp,\n  useFormValidationState\n} from 'react-stately/private/form/useFormValidationState';\nimport {RefObject, ValidationResult} from '@react-types/shared';\nimport {useEffect, useRef} from 'react';\nimport {useToggleState} from 'react-stately/useToggleState';\n\nexport interface AriaCheckboxGroupItemProps extends Omit<AriaCheckboxProps, 'isSelected' | 'defaultSelected'> {\n  value: string\n}\n\n/**\n * Provides the behavior and accessibility implementation for a checkbox component contained within a checkbox group.\n * Checkbox groups allow users to select multiple items from a list of options.\n * @param props - Props for the checkbox.\n * @param state - State for the checkbox, as returned by `useCheckboxGroupState`.\n * @param inputRef - A ref for the HTML input element.\n */\nexport function useCheckboxGroupItem(props: AriaCheckboxGroupItemProps, state: CheckboxGroupState, inputRef: RefObject<HTMLInputElement | null>): CheckboxAria {\n  const toggleState = useToggleState({\n    isReadOnly: props.isReadOnly || state.isReadOnly,\n    isSelected: state.isSelected(props.value),\n    defaultSelected: state.defaultValue.includes(props.value),\n    onChange(isSelected) {\n      if (isSelected) {\n        state.addValue(props.value);\n      } else {\n        state.removeValue(props.value);\n      }\n\n      if (props.onChange) {\n        props.onChange(isSelected);\n      }\n    }\n  });\n\n  let {name, form, descriptionId, errorMessageId, validationBehavior} = checkboxGroupData.get(state)!;\n  validationBehavior = props.validationBehavior ?? validationBehavior;\n\n  // Local validation for this checkbox.\n  let {realtimeValidation} = useFormValidationState({\n    ...props,\n    value: toggleState.isSelected,\n    // Server validation is handled at the group level.\n    name: undefined,\n    validationBehavior: 'aria'\n  });\n\n  // Update the checkbox group state when realtime validation changes.\n  let nativeValidation = useRef(DEFAULT_VALIDATION_RESULT);\n  let updateValidation = () => {\n    state.setInvalid(props.value, realtimeValidation.isInvalid ? realtimeValidation : nativeValidation.current);\n  };\n\n  useEffect(updateValidation);\n\n  // Combine group and checkbox level validation.\n  let combinedRealtimeValidation = state.realtimeValidation.isInvalid ? state.realtimeValidation : realtimeValidation;\n  let displayValidation = validationBehavior === 'native' ? state.displayValidation : combinedRealtimeValidation;\n\n  let res = useCheckbox({\n    ...props,\n    isReadOnly: props.isReadOnly || state.isReadOnly,\n    isDisabled: props.isDisabled || state.isDisabled,\n    name: props.name || name,\n    form: props.form || form,\n    isRequired: props.isRequired ?? state.isRequired,\n    validationBehavior,\n    [privateValidationStateProp]: {\n      realtimeValidation: combinedRealtimeValidation,\n      displayValidation,\n      resetValidation: state.resetValidation,\n      commitValidation: state.commitValidation,\n      updateValidation(v: ValidationResult) {\n        nativeValidation.current = v;\n        updateValidation();\n      }\n    }\n  }, toggleState, inputRef);\n\n  return {\n    ...res,\n    inputProps: {\n      ...res.inputProps,\n      'aria-describedby': [\n        props['aria-describedby'],\n        state.isInvalid ? errorMessageId : null,\n        descriptionId\n      ].filter(Boolean).join(' ') || undefined\n    }\n  };\n}\n"],"names":[],"version":3,"file":"useCheckboxGroupItem.mjs.map"}