molstar
Version:
A comprehensive macromolecular library.
89 lines • 4 kB
JavaScript
/**
* Copyright (c) 2019-2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPalette = exports.getPaletteParams = void 0;
var tslib_1 = require("tslib");
var legend_1 = require("../legend");
var param_definition_1 = require("../param-definition");
var distinct_1 = require("./distinct");
var lists_1 = require("./lists");
var scale_1 = require("./scale");
var DefaultGetPaletteProps = {
type: 'generate',
colorList: 'red-yellow-blue'
};
function getPaletteParams(props) {
if (props === void 0) { props = {}; }
var p = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, DefaultGetPaletteProps), props);
return {
palette: param_definition_1.ParamDefinition.MappedStatic(p.type, {
colors: param_definition_1.ParamDefinition.Group({
list: param_definition_1.ParamDefinition.ColorList(p.colorList),
}, { isFlat: true }),
generate: param_definition_1.ParamDefinition.Group((0, tslib_1.__assign)((0, tslib_1.__assign)({}, distinct_1.DistinctColorsParams), { maxCount: param_definition_1.ParamDefinition.Numeric(75, { min: 1, max: 250, step: 1 }) }), { isFlat: true })
}, {
options: [
['colors', 'Color List'],
['generate', 'Generate Distinct']
]
})
};
}
exports.getPaletteParams = getPaletteParams;
var DefaultPaletteProps = param_definition_1.ParamDefinition.getDefaultValues(getPaletteParams());
var DefaultLabelOptions = {
valueLabel: function (i) { return "" + (i + 1); },
minLabel: 'Start',
maxLabel: 'End'
};
function getPalette(count, props, labelOptions) {
var _a;
if (labelOptions === void 0) { labelOptions = {}; }
var color;
var legend;
if (props.palette.name === 'colors' && props.palette.params.list.kind === 'interpolate') {
var list = props.palette.params.list;
var domain = [0, count - 1];
var _b = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, DefaultLabelOptions), labelOptions), minLabel = _b.minLabel, maxLabel = _b.maxLabel;
var colors = list.colors;
if (colors.length === 0)
colors = (0, lists_1.getColorListFromName)(DefaultGetPaletteProps.colorList).list;
var scale = scale_1.ColorScale.create({ listOrName: colors, domain: domain, minLabel: minLabel, maxLabel: maxLabel });
legend = scale.legend;
color = scale.color;
}
else {
var colors_1;
if (props.palette.name === 'colors') {
colors_1 = props.palette.params.list.colors.map(function (c) { return Array.isArray(c) ? c[0] : c; });
if (colors_1.length === 0)
colors_1 = (0, lists_1.getColorListFromName)('dark-2').list.map(function (c) { return Array.isArray(c) ? c[0] : c; });
}
else {
count = Math.min(count, props.palette.params.maxCount);
colors_1 = (0, distinct_1.distinctColors)(count, props.palette.params);
}
var valueLabel = (_a = labelOptions.valueLabel) !== null && _a !== void 0 ? _a : DefaultLabelOptions.valueLabel;
var colorsLength_1 = colors_1.length;
var table = [];
for (var i = 0; i < count; ++i) {
var j = i % colorsLength_1;
if (table[j] === undefined) {
table[j] = [valueLabel(i), colors_1[j]];
}
else {
table[j][0] += ", " + valueLabel(i);
}
}
legend = (0, legend_1.TableLegend)(table);
color = function (i) { return colors_1[i % colorsLength_1]; };
}
return { color: color, legend: legend };
}
exports.getPalette = getPalette;
//# sourceMappingURL=palette.js.map
;