2016-12-17 16:43:25 +01:00
|
|
|
import React from 'react'
|
|
|
|
import Radium from 'radium'
|
|
|
|
import Immutable from 'immutable'
|
2016-12-19 11:46:48 +01:00
|
|
|
import Color from 'color'
|
2016-12-17 16:43:25 +01:00
|
|
|
|
|
|
|
import Heading from 'rebass/dist/Heading'
|
|
|
|
import Toolbar from 'rebass/dist/Toolbar'
|
|
|
|
import NavItem from 'rebass/dist/NavItem'
|
|
|
|
import Space from 'rebass/dist/Space'
|
|
|
|
|
2016-12-18 17:28:59 +01:00
|
|
|
import LayerIcon from '../icons/layer.jsx'
|
2016-12-17 16:43:25 +01:00
|
|
|
import { LayerEditor } from './editor.jsx'
|
|
|
|
import scrollbars from '../scrollbars.scss'
|
|
|
|
import PureRenderMixin from 'react-addons-pure-render-mixin';
|
|
|
|
import theme from '../theme.js'
|
2016-12-17 19:58:30 +01:00
|
|
|
import {SortableElement, SortableHandle} from 'react-sortable-hoc';
|
2016-12-17 16:43:25 +01:00
|
|
|
|
2016-12-18 17:28:59 +01:00
|
|
|
|
|
|
|
@SortableHandle
|
|
|
|
class LayerTypeDragHandle extends React.Component {
|
|
|
|
static propTypes = LayerIcon.propTypes
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return <LayerIcon
|
|
|
|
{...this.props}
|
|
|
|
style={{width: 15, height: 15, paddingRight: 3}}
|
|
|
|
/>
|
|
|
|
}
|
|
|
|
}
|
2016-12-17 19:58:30 +01:00
|
|
|
|
|
|
|
@SortableElement
|
2016-12-17 16:43:25 +01:00
|
|
|
@Radium
|
|
|
|
class LayerListItem extends React.Component {
|
|
|
|
static propTypes = {
|
2016-12-17 19:58:30 +01:00
|
|
|
layerId: React.PropTypes.string.isRequired,
|
2016-12-18 17:28:59 +01:00
|
|
|
layerType: React.PropTypes.string.isRequired,
|
2016-12-17 16:43:25 +01:00
|
|
|
onLayerSelected: React.PropTypes.func.isRequired,
|
|
|
|
}
|
|
|
|
|
|
|
|
constructor(props) {
|
|
|
|
super(props)
|
|
|
|
this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
2016-12-17 19:58:30 +01:00
|
|
|
return <li
|
|
|
|
key={this.props.layerId}
|
|
|
|
onClick={() => this.props.onLayerSelected(this.props.layerId)}
|
|
|
|
style={{
|
|
|
|
fontWeight: 400,
|
|
|
|
color: theme.colors.lowgray,
|
|
|
|
fontSize: theme.fontSizes[5],
|
2016-12-17 16:43:25 +01:00
|
|
|
borderBottom: 1,
|
|
|
|
borderLeft: 2,
|
|
|
|
borderRight: 0,
|
|
|
|
borderStyle: "solid",
|
2016-12-17 19:58:30 +01:00
|
|
|
userSelect: 'none',
|
|
|
|
listStyle: 'none',
|
|
|
|
zIndex: 2000,
|
|
|
|
cursor: 'pointer',
|
|
|
|
position: 'relative',
|
|
|
|
padding: theme.scale[1],
|
2016-12-19 11:46:48 +01:00
|
|
|
borderColor: Color(theme.colors.gray).lighten(0.1).string(),
|
2016-12-17 19:58:30 +01:00
|
|
|
backgroundColor: theme.colors.gray,
|
|
|
|
":hover": {
|
2016-12-19 11:46:48 +01:00
|
|
|
backgroundColor: Color(theme.colors.gray).lighten(0.15).string(),
|
2016-12-17 19:58:30 +01:00
|
|
|
}
|
2016-12-17 16:43:25 +01:00
|
|
|
}}>
|
2016-12-18 17:28:59 +01:00
|
|
|
<LayerTypeDragHandle type={this.props.layerType} />
|
|
|
|
<span>{this.props.layerId}</span>
|
2016-12-17 19:58:30 +01:00
|
|
|
</li>
|
2016-12-17 16:43:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default Radium(LayerListItem);
|