|
@@ -2,16 +2,17 @@
|
|
|
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
|
*
|
|
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
|
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
|
*/
|
|
|
|
|
|
import { Color } from '../../../mol-util/color';
|
|
|
-import { ColorNames, ColorNamesValueMap } from '../../../mol-util/color/names';
|
|
|
import { ParamDefinition as PD } from '../../../mol-util/param-definition';
|
|
|
-import { camelCaseToWords } from '../../../mol-util/string';
|
|
|
+import { camelCaseToWords, stringToWords } from '../../../mol-util/string';
|
|
|
import * as React from 'react';
|
|
|
import { _Props, _State } from '../base';
|
|
|
import { ParamProps } from './parameters';
|
|
|
import { TextInput } from './common';
|
|
|
+import { DefaultColorSwatch } from '../../../mol-util/color/swatches';
|
|
|
|
|
|
export class CombinedColorControl extends React.PureComponent<ParamProps<PD.Color>, { isExpanded: boolean }> {
|
|
|
state = { isExpanded: false }
|
|
@@ -49,7 +50,7 @@ export class CombinedColorControl extends React.PureComponent<ParamProps<PD.Colo
|
|
|
// const def = this.props.param.defaultValue;
|
|
|
return <div className='msp-combined-color-swatch'>
|
|
|
{/* <button title='Default Color' key={def} className='msp-form-control msp-btn' data-color={def} onClick={this.onClickSwatch} style={{ background: Color.toStyle(def) }}></button> */}
|
|
|
- {SwatchColors.map(c => <button key={c} className='msp-form-control msp-btn' data-color={c} onClick={this.onClickSwatch} style={{ background: Color.toStyle(c) }}></button>)}
|
|
|
+ {DefaultColorSwatch.map(c => <button key={c[1]} className='msp-form-control msp-btn' data-color={c[1]} onClick={this.onClickSwatch} style={{ background: Color.toStyle(c[1]) }}></button>)}
|
|
|
</div>;
|
|
|
}
|
|
|
|
|
@@ -84,16 +85,6 @@ export class CombinedColorControl extends React.PureComponent<ParamProps<PD.Colo
|
|
|
placeholder='e.g. 127 127 127' delayMs={250} />
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div className='msp-control-row'>
|
|
|
- <span>Color List</span>
|
|
|
- <div>
|
|
|
- <select value={this.props.value} onChange={this.onChangeSelect}>
|
|
|
- {ColorValueOption(this.props.value)}
|
|
|
- {ColorOptions()}
|
|
|
- </select>
|
|
|
- <div style={this.stripStyle()} />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
</div>}
|
|
|
</>;
|
|
|
}
|
|
@@ -121,25 +112,24 @@ function isValidColorString(s: string) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-// the 1st color is the default value.
|
|
|
-const SwatchColors = [
|
|
|
- 0x000000, 0x808080, 0xFFFFFF, 0xD33115, 0xE27300, 0xFCC400,
|
|
|
- 0x68BC00, 0x16A5A5, 0x009CE0, 0x7B64FF, 0xFA28FF, 0x7D2187
|
|
|
-].map(Color);
|
|
|
-
|
|
|
let _colors: React.ReactFragment | undefined = void 0;
|
|
|
-function ColorOptions() {
|
|
|
+export function ColorOptions() {
|
|
|
if (_colors) return _colors;
|
|
|
- _colors = <>{Object.keys(ColorNames).map(name =>
|
|
|
- <option key={name} value={(ColorNames as { [k: string]: Color })[name]} style={{ background: `${Color.toStyle((ColorNames as { [k: string]: Color })[name])}` }} >
|
|
|
- {name}
|
|
|
+ _colors = <>{DefaultColorSwatch.map(v =>
|
|
|
+ <option key={v[1]} value={v[1]} style={{ background: `${Color.toStyle(v[1])}` }} >
|
|
|
+ {stringToWords(v[0])}
|
|
|
</option>
|
|
|
)}</>;
|
|
|
return _colors;
|
|
|
}
|
|
|
|
|
|
-function ColorValueOption(color: Color) {
|
|
|
- return !ColorNamesValueMap.has(color) ? <option key={Color.toHexString(color)} value={color} style={{ background: `${Color.toStyle(color)}` }} >
|
|
|
+const DefaultColorSwatchMap = (function () {
|
|
|
+ const map = new Map<Color, string>()
|
|
|
+ for (const v of DefaultColorSwatch) map.set(v[1], v[0])
|
|
|
+ return map
|
|
|
+})()
|
|
|
+export function ColorValueOption(color: Color) {
|
|
|
+ return !DefaultColorSwatchMap.has(color) ? <option key={Color.toHexString(color)} value={color} style={{ background: `${Color.toStyle(color)}` }} >
|
|
|
{Color.toRgbString(color)}
|
|
|
</option> : null
|
|
|
}
|