aboutsummaryrefslogtreecommitdiff
path: root/src/Palette.js
blob: fd4776f847e43cd2916ff9c8817e713a38c388c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import React, {Component} from 'react'
import { rgb } from './Utils.js'

const colorPalette = [
    [0,0,0],
    [132,0,0],
    [0,132,0],
    [132,132,0],
    [0,0,132],
    [132,0,132],
    [0,132,132],
    [132,132,132],
    [198,198,198],
    [255,0,0],
    [0,255,0],
    [255,255,0],
    [0,0,255],
    [255,0,255],
    [0,255,255],
    [255,255,255],
  ]
  
  
  export default class Palette extends Component {
    render() {
      let paletteListItems = colorPalette.map((item) => {
        let { r, g, b } = rgb(item)
        let selected = rgb(this.props.selectedColor)
        let isSelected = r === selected.r && g === selected.g && b === selected.b

        let style = Object.assign({},
          {background: `rgb(${r},${g},${b})`},
          styles.paletteItem,
          isSelected && styles.selected
        )

        return <div
          onClick={() => this.props.onSelectColor([r, g, b])}
          style={style} 
          key={r*10000+g*1000+b}/>
      })
      let list1 = paletteListItems.slice(0, paletteListItems.length / 2)
      let list2 = paletteListItems.slice(paletteListItems.length / 2)
      return (
        <div>
          {list1}<br/>
          {list2}
        </div>)
    }
  }

  const styles = {
    paletteItem: {
      width: "30px",
      height: "30px",
      border: "3px solid black",
      display: "inline-block",
    },
    selected: {
      border: "3px solid red"
    }
  }