import { observable, action, computed, autorun, runInAction, toJS } from 'mobx'; class ColorStore { @observable colors = [ '#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42', '#ff80ed', '#00a1de', '#814c84', '#5a6478', '#425b5e', '#f9d500', '#ac0f16', '#f45a5a', '#c0ffee', '#e1b303', '#6b8c21', '#e0f5dc', '#ffd700', '#d5eecc', '#e9806e', '#f41d1d', '#008282', '#496991', '#b0e0e6', '#4346ff', '#e5e0ac', '#fff68f', '#b0e0e6', '#d3ffce', '#ffd700', '#f7347a', '#bada55', '#fbf286', '#e9d286', '#ecca67', '#029557', '#3f632a', '#112a02', '#002a69', '#da8a33', '#999999', '#babab4', '#c0c0c0', '#ecca67', '#f5cd58', '#1f38d0', ]; @observable currentIndex = 0; @observable nameToColor = new Map(); @action addNameToColor = (name: string) => { if (this.nameToColor.has(name)) { return; } this.nameToColor.set(name, this.colors[this.currentIndex]); this.currentIndex = (this.currentIndex + 1) % this.colors.length; }; @action getColorByName = (name: string) => { return this.nameToColor.get(name); }; } export default ColorStore;