import { createElement, useState, useRef, useContext } from '@wordpress/element' import OutsideClickHandler from './react-outside-click-handler' import classnames from 'classnames' import SingleColorPicker from './color-picker/single-picker' import { __ } from 'ct-i18n' import BoxShadowModal from './box-shadow/box-shadow-modal' const clamp = (min, max, value) => Math.max(min, Math.min(max, value)) const BoxShadow = ({ value, option, onChange }) => { const [{ isPicking, isTransitioning }, setAnimationState] = useState({ isPicking: null, isTransitioning: null, }) const [focusedComponent, setFocusedComponent] = useState(null) const el = useRef() const colorPicker = useRef() const hOffsetRef = useRef() const vOffsetRef = useRef() const blurRef = useRef() const spreadRef = useRef() const containerRef = useRef() const modalRef = useRef() const shadowModalRef = useRef() return (
{ if (!isPicking) { return } setAnimationState({ isTransitioning: isPicking.split(':')[0], isPicking: null, }) }} wrapperProps={{ ref: containerRef, onClick: (e) => { e.preventDefault() let futureIsPicking = isPicking ? isPicking.split(':')[0] === 'opts' ? null : `opts:${isPicking.split(':')[0]}` : 'opts' setAnimationState({ isTransitioning: 'opts', isPicking: futureIsPicking, }) }, }}> {value.inherit ? __('Inherit', 'blocksy') : value.enable ? __('Adjust', 'blocksy') : __('None', 'blocksy')} {value.enable && !value.inherit && ( { if (!value.enable) { return } setAnimationState({ isTransitioning: 'default', isPicking, }) }} stopTransitioning={() => setAnimationState({ isPicking, isTransitioning: false, }) } onChange={(colorValue) => onChange({ ...value, color: colorValue, }) } value={value.color} /> )} onChange({ ...value, inherit: false, }) } option={option} isPicking={isPicking} isTransitioning={isTransitioning} hOffsetRef={hOffsetRef} vOffsetRef={vOffsetRef} blurRef={blurRef} spreadRef={spreadRef} picker={{ id: 'opts', }} onPickingChange={(isPicking) => { if (!value.enable) { return } setAnimationState({ isTransitioning: 'opts', isPicking, }) }} stopTransitioning={() => setAnimationState({ isPicking, isTransitioning: false, }) } />
) } export default BoxShadow