{"version":3,"file":"use-combobox-target-props.cjs","sources":["../../../../src/components/Combobox/use-combobox-target-props/use-combobox-target-props.ts"],"sourcesContent":["import { useState } from 'react';\nimport { useComboboxContext } from '../Combobox.context';\n\ninterface UseComboboxTargetPropsInput {\n  targetType: 'input' | 'button' | undefined;\n  withAriaAttributes: boolean | undefined;\n  withKeyboardNavigation: boolean | undefined;\n  withExpandedAttribute: boolean | undefined;\n  onKeyDown: React.KeyboardEventHandler<HTMLInputElement> | undefined;\n  autoComplete: string | undefined;\n}\n\nexport function useComboboxTargetProps({\n  onKeyDown,\n  withKeyboardNavigation,\n  withAriaAttributes,\n  withExpandedAttribute,\n  targetType,\n  autoComplete,\n}: UseComboboxTargetPropsInput) {\n  const ctx = useComboboxContext();\n  const [selectedOptionId, setSelectedOptionId] = useState<string | null>(null);\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    onKeyDown?.(event);\n\n    if (ctx.readOnly) {\n      return;\n    }\n\n    if (withKeyboardNavigation) {\n      // Ignore during composition in IME\n      if (event.nativeEvent.isComposing) {\n        return;\n      }\n\n      if (event.nativeEvent.code === 'ArrowDown') {\n        event.preventDefault();\n\n        if (!ctx.store.dropdownOpened) {\n          ctx.store.openDropdown('keyboard');\n          setSelectedOptionId(ctx.store.selectActiveOption());\n          ctx.store.updateSelectedOptionIndex('selected', { scrollIntoView: true });\n        } else {\n          setSelectedOptionId(ctx.store.selectNextOption());\n        }\n      }\n\n      if (event.nativeEvent.code === 'ArrowUp') {\n        event.preventDefault();\n\n        if (!ctx.store.dropdownOpened) {\n          ctx.store.openDropdown('keyboard');\n          setSelectedOptionId(ctx.store.selectActiveOption());\n          ctx.store.updateSelectedOptionIndex('selected', { scrollIntoView: true });\n        } else {\n          setSelectedOptionId(ctx.store.selectPreviousOption());\n        }\n      }\n\n      if (event.nativeEvent.code === 'Enter' || event.nativeEvent.code === 'NumpadEnter') {\n        // This is a workaround for handling differences in behavior of isComposing property in Safari\n        // See: https://dninomiya.github.io/form-guide/stop-enter-submit\n        if (event.nativeEvent.keyCode === 229) {\n          return;\n        }\n\n        const selectedOptionIndex = ctx.store.getSelectedOptionIndex();\n\n        if (ctx.store.dropdownOpened && selectedOptionIndex !== -1) {\n          event.preventDefault();\n          ctx.store.clickSelectedOption();\n        } else if (targetType === 'button') {\n          event.preventDefault();\n          ctx.store.openDropdown('keyboard');\n        }\n      }\n\n      if (event.nativeEvent.code === 'Escape') {\n        ctx.store.closeDropdown('keyboard');\n      }\n\n      if (event.nativeEvent.code === 'Space') {\n        if (targetType === 'button') {\n          event.preventDefault();\n          ctx.store.toggleDropdown('keyboard');\n        }\n      }\n    }\n  };\n\n  const ariaAttributes = withAriaAttributes\n    ? {\n        'aria-haspopup': 'listbox',\n        'aria-expanded':\n          (withExpandedAttribute && !!(ctx.store.listId && ctx.store.dropdownOpened)) || undefined,\n        'aria-controls': ctx.store.dropdownOpened ? ctx.store.listId : undefined,\n        'aria-activedescendant': ctx.store.dropdownOpened\n          ? selectedOptionId || undefined\n          : undefined,\n        autoComplete,\n        'data-expanded': ctx.store.dropdownOpened || undefined,\n        'data-raikou-stop-propagation': ctx.store.dropdownOpened || undefined,\n      }\n    : {};\n\n  return {\n    ...ariaAttributes,\n    onKeyDown: handleKeyDown,\n  };\n}\n"],"names":["useComboboxContext","useState"],"mappings":"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"}