{"version":3,"file":"SearchBar.mjs","sources":["../../../../../../../../../web/src/adminPortal/shared/components/SearchBar.tsx"],"sourcesContent":["import SearchIcon from '@mui/icons-material/Search';\nimport { styled, SxProps, Theme } from '@mui/material';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { Keys } from '../utils/keys';\nimport { InjectedComponents } from './componentInjection';\nimport { InputCoreProps } from './Input';\n\nconst SearchBarContainer = styled('div')({\n  position: 'relative',\n  width: '100%',\n});\n\nconst IconContainer = styled('div')(({ theme }) => ({\n  alignItems: 'center',\n  display: 'flex',\n  justifyContent: 'center',\n  position: 'absolute',\n  bottom: 0,\n  marginBottom: theme.spacing(1),\n}));\n\nconst SearchIconContainer = styled(IconContainer)(({ theme }) => ({\n  padding: theme.spacing(0.5, 1, 0, 1),\n}));\n\nconst SlashIconContainer = styled(IconContainer)(({ theme }) => ({\n  bottom: -2,\n  right: 0,\n  display: 'flex',\n  position: 'absolute',\n  alignItems: 'center',\n  marginBottom: theme.spacing(1),\n  justifyContent: 'center',\n  marginRight: theme.spacing(1),\n}));\n\nconst SlashIcon = styled('div')(({ theme }) => ({\n  border: '1px solid',\n  borderRadius: theme.shape.borderRadius,\n  padding: theme.spacing(0, 1),\n}));\n\nconst SearchInputContainer = styled('div')(({ theme }) => ({\n  '& input': {\n    paddingLeft: `${theme.spacing(4)} !important`,\n    paddingRight: `${theme.spacing(6)} !important`,\n  },\n  '&:hover': {\n    cursor: 'pointer',\n  },\n}));\n\nexport type SearchBarCoreProps = Pick<InputCoreProps, 'label' | 'id' | 'onChange' | 'placeholder' | 'value'>;\n\nexport const SearchBarCore = ({\n  InputComponent: Input,\n  searchIconContainerSx,\n  slashIconSx,\n  slashIconContainerSx,\n  ...inputProps\n}: SearchBarCoreProps &\n  InjectedComponents<'Input'> & {\n    searchIconContainerSx?: SxProps<Theme>;\n    slashIconSx?: SxProps<Theme>;\n    slashIconContainerSx?: SxProps<Theme>;\n  }): JSX.Element => {\n  const [inputRef, setInputRef] = useState<HTMLInputElement | null>(null);\n  const [focused, setFocused] = useState(false);\n  const onFocus = useCallback(() => setFocused(true), []);\n  const onBlur = useCallback(() => setFocused(false), []);\n\n  useEffect(() => {\n    const handleKey = (e: KeyboardEvent) => {\n      if (inputRef && !focused) {\n        if ((e.metaKey && e.key === Keys.K) || e.key === Keys.ForwardSlash) {\n          e.stopPropagation();\n          inputRef.focus();\n          if (e.key === Keys.ForwardSlash) {\n            e.preventDefault();\n          }\n        }\n      }\n    };\n\n    document.addEventListener('keydown', handleKey);\n\n    return () => document.removeEventListener('keydown', handleKey);\n  }, [inputRef, focused]);\n\n  return (\n    <SearchBarContainer>\n      <SearchIconContainer sx={searchIconContainerSx}>\n        <SearchIcon fontSize=\"small\" />\n      </SearchIconContainer>\n      <SlashIconContainer sx={slashIconContainerSx}>\n        <SlashIcon sx={slashIconSx}>/</SlashIcon>\n      </SlashIconContainer>\n      <SearchInputContainer>\n        <Input {...inputProps} fullWidth inputRef={setInputRef} onBlur={onBlur} onFocus={onFocus} />\n      </SearchInputContainer>\n    </SearchBarContainer>\n  );\n};\n"],"names":["SearchBarContainer","styled","position","width","IconContainer","theme","alignItems","display","justifyContent","bottom","marginBottom","spacing","SearchIconContainer","padding","SlashIconContainer","right","marginRight","SlashIcon","border","borderRadius","shape","SearchInputContainer","paddingLeft","paddingRight","cursor","SearchBarCore","InputComponent","Input","searchIconContainerSx","slashIconSx","slashIconContainerSx","inputProps","inputRef","setInputRef","useState","focused","setFocused","onFocus","useCallback","onBlur","useEffect","handleKey","e","metaKey","key","Keys","K","ForwardSlash","stopPropagation","focus","preventDefault","document","addEventListener","removeEventListener","React","sx","SearchIcon","fontSize","fullWidth"],"mappings":"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"}