import CopyToClipboard from 'shared/components/copy-to-clipboard'
import StatusCode from './status-code.js'

const names = {
  js: 'Javascript',
  bash: 'Bash prompt',
  sh: 'Shell prompt',
  json: 'JSON',
  yaml: 'file.yaml',
}

const Highlight = (props) => {
  let language = 'txt'
  let status = false
  if (props.language) language = props.language
  if (props.children?.props?.className) {
    language = props.children.props.className.split('-').pop()
    if (language.indexOf('.') !== -1) {
      ;[status, language] = language.split('.')
    }
  }

  const preProps = {
    className: `language-${language} hljs text-base lg:text-lg whitespace-pre overflow-scroll pr-4`,
  }
  if (props.raw) preProps.dangerouslySetInnerHTML = { __html: props.raw }

  return (
    <div className="hljs my-4">
      <div
        className={`
        flex flex-row justify-between items-center
        text-xs font-medium text-warning
        mt-1 border-b border-neutral-content border-opacity-25
        px-4 py-1 mb-2 lg:text-sm
      `}
      >
        <span>{names[language] ? names[language] : language}</span>
        {status ? <StatusCode status={status} /> : <CopyToClipboard content={props.children} />}
      </div>
      <pre {...preProps}>{props.children}</pre>
    </div>
  )
}

export default Highlight