import React, { useState, useEffect } from 'react'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Popover from 'react-bootstrap/Popover'; import Slider from 'rc-slider'; import { Color } from './Color'; export const BoxShadow = ({ value, onChange, cyLabel }) => { const defaultValue = { X: 0, Y: 0, Blur: 0, Spread: 0, Color: '#00000040' }; const [showPicker, setShowPicker] = useState(false); const popoverLabelstyle = { display: 'flex', zIndex: 4, fontSize: '87.7%', minWidth: '3.5rem', }; const popoverInputstyle = { paddingLeft: '3.5rem', paddingRight: '1.5rem', }; const input = ['X', 'Y', 'Blur', 'Spread']; const [boxShadow, setBoxShadow] = useState(defaultValue); const [debouncedShadow, setDebouncedShadow] = useState(defaultValue); const darkMode = localStorage.getItem('darkMode') === 'true'; const colorPickerStyle = { position: 'absolute', bottom: '260px', }; useEffect(() => { if (value) { const valueArr = value.split('px '); const newValue = { X: valueArr[0], Y: valueArr[1], Blur: valueArr[2], Spread: valueArr[3], Color: valueArr[4], }; setBoxShadow(newValue); setDebouncedShadow(newValue); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { if (boxShadow !== debouncedShadow) { onChange(Object.values(debouncedShadow).join('px ')); setBoxShadow(debouncedShadow); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [debouncedShadow]); const setBoxShadowValue = (item, value, debounced = false) => { const newValue = { ...boxShadow }; if (item === 'Blur' && value < 0) { newValue[item] = 0; debounced ? setDebouncedShadow(newValue) : setBoxShadow(newValue); } else { newValue[item] = value; debounced ? setDebouncedShadow(newValue) : setBoxShadow(newValue); } }; const clearBoxShadow = () => setDebouncedShadow(defaultValue); const renderSlider = (item, value) => { return (