import React from 'react'
import { usePicker } from '../context.js'
import { formatInputValues, low, high } from '../utils/formatters.js'
import { controlBtnStyles } from '../styles/styles.js'
import TrashIcon, {
LinearIcon,
RadialIcon,
DegreesIcon,
StopIcon,
} from './icon.js'
const GradientType = () => {
const { gradientType, onChange, value, defaultStyles, pickerIdSuffix } =
usePicker()
const isLinear = gradientType === 'linear-gradient'
const isRadial = gradientType === 'radial-gradient'
const handleLinear = () => {
const remaining = value.split(/,(.+)/)[1]
onChange(`linear-gradient(90deg, ${remaining}`)
}
const handleRadial = () => {
const remaining = value.split(/,(.+)/)[1]
onChange(`radial-gradient(circle, ${remaining}`)
}
return (
{
return
}}
>
{
return
}}
>
)
}
const StopPicker = () => {
const {
currentLeft,
currentColor,
defaultStyles,
handleGradient,
pickerIdSuffix,
} = usePicker()
const handleMove = (newVal: string) => {
handleGradient(currentColor, formatInputValues(parseInt(newVal), 0, 100))
}
return (
handleMove(e.target.value)}
style={{
...defaultStyles.rbgcpControlInput,
...defaultStyles.rbgcpStopInput,
}}
// className="rbgcp-control-input rbgcp-stop-input"
/>
)
}
const DegreePicker = () => {
const { degrees, onChange, value, defaultStyles, pickerIdSuffix } =
usePicker()
const handleDegrees = (e: any) => {
const newValue = formatInputValues(e.target.value, 0, 360)
const remaining = value.split(/,(.+)/)[1]
onChange(`linear-gradient(${newValue ?? 0}deg, ${remaining}`)
}
return (
)
}
const DeleteBtn = () => {
const { colors, selectedColor, createGradientStr, defaultStyles, pickerIdSuffix } =
usePicker()
const deletePoint = () => {
if (colors?.length > 2) {
const formatted = colors?.map((fc: any, i: number) => ({
...fc,
value: i === selectedColor - 1 ? high(fc) : low(fc),
}))
const remaining = formatted?.filter(
(_: any, i: number) => i !== selectedColor
)
createGradientStr(remaining)
}
}
return (
{
return
}}
>
)
}
const GradientControls = ({
hideGradientType,
hideGradientAngle,
hideGradientStop,
}: {
hideGradientType?: boolean
hideGradientAngle?: boolean
hideGradientStop?: boolean
}) => {
const { gradientType, defaultStyles, pickerIdSuffix } = usePicker()
return (
{!hideGradientType &&
}
{!hideGradientAngle && gradientType === 'linear-gradient' && (
)}
{!hideGradientStop &&
}
)
}
export default GradientControls