import React from 'react'
import { ImageBackground, StyleSheet } from 'react-native'
import { INACTIVE_VARIANT, NEGATIVE_VARIANT } from './constants'

import { variantProp } from '../utils/props/variantProp'

const inactiveBackground = `%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='24'%3E%3Cdefs%3E%3Cpattern id='inactive' patternUnits='userSpaceOnUse' width='8' height='8'%3E%3Crect width='8' height='8' fill='rgba(255, 255, 255, 0)'%3E%3C/rect%3E%3Ccircle cx='4' cy='4' r='2' fill='rgba(0, 0, 0, 0.4)' stroke='rgba(0, 0, 0, 0.4)' stroke-width='0'%3E%3C/circle%3E%3Ccircle cx='0' cy='0' r='2' fill='rgba(0, 0, 0, 0.4)' stroke='rgba(0, 0, 0, 0.4)' stroke-width='0'%3E%3C/circle%3E%3Ccircle cx='0' cy='8' r='2' fill='rgba(0, 0, 0, 0.4)' stroke='rgba(0, 0, 0, 0.4)' stroke-width='0'%3E%3C/circle%3E%3Ccircle cx='8' cy='0' r='2' fill='rgba(0, 0, 0, 0.4)' stroke='rgba(0, 0, 0, 0.4)' stroke-width='0'%3E%3C/circle%3E%3Ccircle cx='8' cy='8' r='2' fill='rgba(0, 0, 0, 0.4)' stroke='rgba(0, 0, 0, 0.4)' stroke-width='0'%3E%3C/circle%3E%3C/pattern%3E%3C/defs%3E%3Cpath d='M 0 0 L 0 140 L 2000 2000 L 2000 0 Z' style='fill: url(&quot;%23inactive&quot;);'%3E%3C/path%3E%3C/svg%3E`
const negativeBackground = `%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='24'%3E%3Cdefs%3E%3Cpattern id='negative' patternUnits='userSpaceOnUse' width='8' height='8'%3E%3Crect width='8' height='8' fill='rgba(255, 255, 255, 0)'%3E%3C/rect%3E%3Cpath d='M 0,8 l 8,-8 M -2,2 l 4,-4 M 6,10 l 4,-4' stroke-width='1' shape-rendering='auto' stroke='rgba(255, 255, 255, 0.4)' stroke-linecap='square'%3E%3C/path%3E%3C/pattern%3E%3C/defs%3E%3Cpath d='M 0 0 L 0 140 L 2000 2000 L 2000 0 Z' style='fill: url(&quot;%23negative&quot;);'%3E%3C/path%3E%3C/svg%3E`

export const ProgressBarBackground = React.forwardRef(({ variant }, ref) => {
  let source = null
  if (variant?.style === INACTIVE_VARIANT) {
    source = inactiveBackground
  } else if (variant?.style === NEGATIVE_VARIANT) {
    source = negativeBackground
  } else {
    return null
  }
  return (
    <ImageBackground
      ref={ref}
      source={{ uri: `data:image/svg+xml,${source}` }}
      style={staticStyles.imageBackground}
    />
  )
})

ProgressBarBackground.displayName = 'ProgressBarBackground'

ProgressBarBackground.propTypes = {
  /**
   * Progress bar variant.
   */
  variant: variantProp.propType
}

const staticStyles = StyleSheet.create({ imageBackground: { height: '100%' } })
