UNPKG

molstar

Version:

A comprehensive macromolecular library.

89 lines 4 kB
"use strict"; /** * 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