{"version":3,"file":"ComboboxOption.cjs","sources":["../../../../src/components/Combobox/ComboboxOption/ComboboxOption.tsx"],"sourcesContent":["import { useId } from 'react';\nimport {\n  Box,\n  BoxProps,\n  CompoundStylesApiProps,\n  ElementProps,\n  factory,\n  Factory,\n  useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\n\nexport type ComboboxOptionStylesNames = 'option';\n\nexport interface ComboboxOptionProps\n  extends BoxProps,\n    CompoundStylesApiProps<ComboboxOptionFactory>,\n    ElementProps<'div'> {\n  /** Option value */\n  value: string;\n\n  /** Determines whether the option is selected */\n  active?: boolean;\n\n  /** Determines whether the option can be selected */\n  disabled?: boolean;\n\n  /** Determines whether item is selected, useful for virtualized comboboxes */\n  selected?: boolean;\n}\n\nexport type ComboboxOptionFactory = Factory<{\n  props: ComboboxOptionProps;\n  ref: HTMLDivElement;\n  stylesNames: ComboboxOptionStylesNames;\n  compound: true;\n}>;\n\nconst defaultProps: Partial<ComboboxOptionProps> = {};\n\nexport const ComboboxOption = factory<ComboboxOptionFactory>((_props, ref) => {\n  const props = useProps('ComboboxOption', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    vars,\n    onClick,\n    id,\n    active,\n    onMouseDown,\n    onMouseOver,\n    disabled,\n    selected,\n    mod,\n    ...others\n  } = props;\n\n  const ctx = useComboboxContext();\n  const uuid = useId();\n  const _id = id || uuid;\n\n  return (\n    <Box\n      {...ctx.getStyles('option', { className, classNames, styles, style })}\n      {...others}\n      ref={ref}\n      id={_id}\n      mod={[\n        'combobox-option',\n        { 'combobox-active': active, 'combobox-disabled': disabled, 'combobox-selected': selected },\n        mod,\n      ]}\n      role=\"option\"\n      onClick={(event) => {\n        if (!disabled) {\n          ctx.onOptionSubmit?.(props.value, props);\n          onClick?.(event);\n        } else {\n          event.preventDefault();\n        }\n      }}\n      onMouseDown={(event) => {\n        event.preventDefault();\n        onMouseDown?.(event);\n      }}\n      onMouseOver={(event) => {\n        if (ctx.resetSelectionOnOptionHover) {\n          ctx.store.resetSelectedOption();\n        }\n        onMouseOver?.(event);\n      }}\n    />\n  );\n});\n\nComboboxOption.displayName = '@raikou/core/ComboboxOption';\n"],"names":["factory","useProps","useComboboxContext","useId","jsx","Box"],"mappings":";;;;;;;;;;;;;AAsCA,MAAM,eAA6C,EAAC;AAE7C,MAAM,cAAiB,GAAAA,eAAA,CAA+B,CAAC,MAAA,EAAQ,GAAQ,KAAA;AAC5E,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,gBAAkB,EAAA,YAAA,EAAc,MAAM,CAAA;AAC7D,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,MAAMC,mCAAmB,EAAA;AAC/B,EAAA,MAAM,OAAOC,WAAM,EAAA;AACnB,EAAA,MAAM,MAAM,EAAM,IAAA,IAAA;AAElB,EACE,uBAAAC,cAAA;AAAA,IAACC,OAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAI,SAAU,CAAA,QAAA,EAAU,EAAE,SAAW,EAAA,UAAA,EAAY,MAAQ,EAAA,KAAA,EAAO,CAAA;AAAA,MACnE,GAAG,MAAA;AAAA,MACJ,GAAA;AAAA,MACA,EAAI,EAAA,GAAA;AAAA,MACJ,GAAK,EAAA;AAAA,QACH,iBAAA;AAAA,QACA,EAAE,iBAAmB,EAAA,MAAA,EAAQ,mBAAqB,EAAA,QAAA,EAAU,qBAAqB,QAAS,EAAA;AAAA,QAC1F;AAAA,OACF;AAAA,MACA,IAAK,EAAA,QAAA;AAAA,MACL,OAAA,EAAS,CAAC,KAAU,KAAA;AAClB,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAI,GAAA,CAAA,cAAA,GAAiB,KAAM,CAAA,KAAA,EAAO,KAAK,CAAA;AACvC,UAAA,OAAA,GAAU,KAAK,CAAA;AAAA,SACV,MAAA;AACL,UAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AACvB,OACF;AAAA,MACA,WAAA,EAAa,CAAC,KAAU,KAAA;AACtB,QAAA,KAAA,CAAM,cAAe,EAAA;AACrB,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA,OACrB;AAAA,MACA,WAAA,EAAa,CAAC,KAAU,KAAA;AACtB,QAAA,IAAI,IAAI,2BAA6B,EAAA;AACnC,UAAA,GAAA,CAAI,MAAM,mBAAoB,EAAA;AAAA;AAEhC,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA;AACrB;AAAA,GACF;AAEJ,CAAC;AAED,cAAA,CAAe,WAAc,GAAA,6BAAA;;;;"}