import { createElement, Component, createPortal, createRef } from '@wordpress/element' import PickerModal, { getNoColorPropFor } from './picker-modal.js' import OutsideClickHandler from 'react-outside-click-handler' import { Transition } from 'react-spring' import bezierEasing from 'bezier-easing' import classnames from 'classnames' export default class SinglePicker extends Component { state = { isTransitioning: false, sameColorPickerInvolved: false } el = createRef() render() { return (
{ e.stopPropagation() this.props.onPickingChange() }} style={ (this.props.value || {}).color !== getNoColorPropFor(this.props.option) ? { background: (this.props.value || {}) .color } : {} }> {this.props.picker.title} {(this.props.isTransitioning === this.props.picker.id || this.props.is_picking === this.props.picker.id) && createPortal( this.props.stopTransitioning()} config={{ duration: 100, easing: bezierEasing(0.25, 0.1, 0.25, 1.0) }} from={ this.props.shouldAnimate ? { transform: 'scale3d(0.95, 0.95, 1)', opacity: 0 } : { opacity: 1 } } enter={ this.props.shouldAnimate ? { transform: 'scale3d(1, 1, 1)', opacity: 1 } : { opacity: 1 } } leave={ this.props.shouldAnimate ? { transform: 'scale3d(0.95, 0.95, 1)', opacity: 0 } : { opacity: 1 } }> {is_picking => is_picking === this.props.picker.id && (props => ( )) } , this.el.current .closest('.ct-control') .querySelector('.ct-color-modal-wrapper') )}
) } }