{"version":3,"file":"useAutocomplete.cjs","names":["_react","require","_Field","_inputUtils","_jsxRuntime","_interopRequireDefault","e","__esModule","default","useAutocomplete","ariaDescribedBy","defaultValue","errorMessage","errorMessageList","hasMultipleChoices","hint","HintLinkComponent","inputValue","isFullWidth","isOptional","isReadOnly","isVirtualized","isVirtualizedProp","label","name","nameOverride","testId","value","controlledStateRef","useRef","getControlState","controlledValue","uncontrolledValue","isVirtualizedRef","Boolean","defaultValueProp","useMemo","undefined","valueProps","useInputValues","controlState","current","inputValueProp","ComponentControlledState","CONTROLLED","renderInput","useCallback","InputLabelProps","InputProps","params","jsx","Field","fieldType","hasVisibleLabel","id","htmlFor","renderFieldComponent","errorMessageElementId","labelElementId","_InputBase2","inputProps","required","exports"],"sources":["../../src/useAutocomplete.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2024-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n  AutocompleteRenderInputParams,\n  AutocompleteValue,\n  InputBase,\n} from \"@mui/material\";\nimport { useCallback, useMemo, useRef } from \"react\";\n\nimport { AutocompleteProps } from \"./Autocomplete.js\";\nimport { Field } from \"./Field.js\";\nimport {\n  ComponentControlledState,\n  getControlState,\n  useInputValues,\n} from \"./inputUtils.js\";\n\nexport type UseAutocompleteProps<\n  OptionType,\n  HasMultipleChoices extends boolean | undefined,\n  IsCustomValueAllowed extends boolean | undefined,\n> = Pick<\n  AutocompleteProps<OptionType, HasMultipleChoices, IsCustomValueAllowed>,\n  | \"ariaDescribedBy\"\n  | \"defaultValue\"\n  | \"errorMessage\"\n  | \"errorMessageList\"\n  | \"hasMultipleChoices\"\n  | \"hint\"\n  | \"HintLinkComponent\"\n  | \"inputValue\"\n  | \"isFullWidth\"\n  | \"isOptional\"\n  | \"isReadOnly\"\n  | \"isVirtualized\"\n  | \"label\"\n  | \"name\"\n  | \"testId\"\n  | \"value\"\n>;\n\nexport const useAutocomplete = <\n  OptionType,\n  HasMultipleChoices extends boolean | undefined,\n  IsCustomValueAllowed extends boolean | undefined,\n>({\n  ariaDescribedBy,\n  defaultValue,\n  errorMessage,\n  errorMessageList,\n  hasMultipleChoices,\n  hint,\n  HintLinkComponent,\n  inputValue,\n  isFullWidth,\n  isOptional,\n  isReadOnly,\n  isVirtualized: isVirtualizedProp,\n  label,\n  name: nameOverride,\n  testId,\n  value,\n}: UseAutocompleteProps<\n  OptionType,\n  HasMultipleChoices,\n  IsCustomValueAllowed\n>) => {\n  const controlledStateRef = useRef(\n    getControlState({\n      controlledValue: value,\n      uncontrolledValue: defaultValue,\n    }),\n  );\n\n  const isVirtualizedRef = useRef(Boolean(isVirtualizedProp));\n\n  const defaultValueProp = useMemo<\n    | AutocompleteValue<\n        OptionType,\n        HasMultipleChoices,\n        undefined,\n        IsCustomValueAllowed\n      >\n    | undefined\n  >(() => {\n    if (hasMultipleChoices) {\n      if (value === undefined) {\n        return defaultValue;\n      }\n      return [] as AutocompleteValue<\n        OptionType,\n        HasMultipleChoices,\n        undefined,\n        IsCustomValueAllowed\n      >;\n    }\n    return value === undefined ? defaultValue : undefined;\n  }, [defaultValue, hasMultipleChoices, value]);\n\n  const valueProps = useInputValues({\n    controlState: controlledStateRef.current,\n    defaultValue: defaultValueProp,\n    value,\n  });\n\n  const inputValueProp = useMemo(() => {\n    if (controlledStateRef.current === ComponentControlledState.CONTROLLED) {\n      return { inputValue };\n    }\n    return undefined;\n  }, [inputValue]);\n\n  const renderInput = useCallback(\n    ({\n      InputLabelProps,\n      InputProps,\n      ...params\n    }: AutocompleteRenderInputParams) => (\n      <Field\n        ariaDescribedBy={ariaDescribedBy}\n        errorMessage={errorMessage}\n        errorMessageList={errorMessageList}\n        fieldType=\"single\"\n        hasVisibleLabel\n        hint={hint}\n        HintLinkComponent={HintLinkComponent}\n        //@ts-expect-error htmlFor exists on `InputLabelProps`, but not the type.\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        id={InputLabelProps.htmlFor}\n        isFullWidth={isFullWidth}\n        isOptional={isOptional}\n        isReadOnly={isReadOnly}\n        label={label}\n        renderFieldComponent={({\n          ariaDescribedBy,\n          id,\n          errorMessageElementId,\n          labelElementId,\n        }) => (\n          <InputBase\n            {...params}\n            {...InputProps}\n            aria-describedby={ariaDescribedBy}\n            id={id}\n            inputProps={{\n              ...params.inputProps,\n              \"aria-errormessage\": errorMessageElementId,\n              \"aria-labelledby\": labelElementId,\n              \"aria-readonly\": isReadOnly,\n              \"data-se\": testId,\n            }}\n            name={nameOverride ?? id}\n            required={!isOptional}\n          />\n        )}\n      />\n    ),\n    [\n      ariaDescribedBy,\n      errorMessage,\n      errorMessageList,\n      hint,\n      HintLinkComponent,\n      isFullWidth,\n      isOptional,\n      isReadOnly,\n      label,\n      nameOverride,\n      testId,\n    ],\n  );\n\n  return {\n    inputValueProp,\n    isVirtualizedRef,\n    renderInput,\n    valueProps,\n  };\n};\n"],"mappings":"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","ignoreList":[]}