import React from 'react'
import Color from 'color'
import Heading from 'rebass/dist/Heading'
import Toolbar from 'rebass/dist/Toolbar'
import NavItem from 'rebass/dist/NavItem'
import Space from 'rebass/dist/Space'
import CopyIcon from 'react-icons/lib/md/content-copy'
import VisibilityIcon from 'react-icons/lib/md/visibility'
import VisibilityOffIcon from 'react-icons/lib/md/visibility-off'
import DeleteIcon from 'react-icons/lib/md/delete'
import LayerIcon from '../icons/LayerIcon'
import LayerEditor from './LayerEditor'
import {SortableElement, SortableHandle} from 'react-sortable-hoc'
import colors from '../../config/colors.js'
import { fontSizes, margins } from '../../config/scales.js'
@SortableHandle
class LayerTypeDragHandle extends React.Component {
static propTypes = LayerIcon.propTypes
render() {
return
}
}
class IconAction extends React.Component {
static propTypes = {
action: React.PropTypes.string.isRequired,
active: React.PropTypes.bool,
}
constructor(props) {
super(props)
this.state = { hover: false }
}
renderIcon() {
const iconStyle = {
fill: this.props.active ? (this.state.hover ? colors.lowgray : colors.midgray) : colors.gray,
}
switch(this.props.action) {
case 'copy': return
case 'show': return
case 'hide': return
case 'delete': return
default: return null
}
}
render() {
return
this.setState({hover: true})}
onMouseOut={e => this.setState({hover: false})}
>
{this.renderIcon()}
}
}
@SortableElement
class LayerListItem extends React.Component {
static propTypes = {
layerId: React.PropTypes.string.isRequired,
layerType: React.PropTypes.string.isRequired,
isSelected: React.PropTypes.bool,
visibility: React.PropTypes.bool,
onLayerSelected: React.PropTypes.func.isRequired,
onLayerDestroyed: React.PropTypes.func,
onLayerVisibilityToggled: React.PropTypes.func,
}
static defaultProps = {
isSelected: false,
visibility: true,
onLayerDestroyed: () => {},
onLayerVisibilityToggled: () => {},
}
static childContextTypes = {
reactIconBase: React.PropTypes.object
}
constructor(props) {
super(props)
this.state = {
hover: false
}
}
getChildContext() {
return {
reactIconBase: { size: 12 }
}
}
render() {
const itemStyle = {
fontWeight: 400,
color: colors.lowgray,
fontSize: fontSizes[5],
borderLeft: 0,
borderTop: 0,
borderBottom: 1,
borderRight: 0,
borderStyle: "solid",
userSelect: 'none',
listStyle: 'none',
zIndex: 2000,
cursor: 'pointer',
position: 'relative',
padding: margins[1],
borderColor: Color(colors.gray).lighten(0.1).string(),
backgroundColor: colors.gray,
}
if(this.state.hover) {
console.log('hooover')
itemStyle.backgroundColor = Color(colors.gray).lighten(0.10)
}
if(this.props.isSelected) {
itemStyle.backgroundColor = Color(colors.gray).lighten(0.15)
}
const iconProps = {
active: this.state.hover || this.props.isSelected
}
return this.props.onLayerSelected(this.props.layerId)}
onMouseOver={e => this.setState({hover: true})}
onMouseOut={e => this.setState({hover: false})}
style={itemStyle}>
{this.props.layerId}
this.props.onLayerDestroyed(this.props.layerId)}
/>
this.props.onLayerVisibilityToggled(this.props.layerId)}
/>
this.props.onLayerVisibilityToggled(this.props.layerId)}
/>
}
}
export default LayerListItem;