UNPKG

molstar

Version:

A comprehensive macromolecular library.

64 lines (63 loc) 2.6 kB
"use strict"; /** * Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeFilters = exports.ListCol = exports.MatrixCol = exports.VectorCol = exports.EnumCol = exports.CoordCol = exports.FloatCol = exports.StrCol = exports.IntCol = void 0; function IntCol(description) { return { type: 'int', description: description }; } exports.IntCol = IntCol; function StrCol(description) { return { type: 'str', description: description }; } exports.StrCol = StrCol; function FloatCol(description) { return { type: 'float', description: description }; } exports.FloatCol = FloatCol; function CoordCol(description) { return { type: 'coord', description: description }; } exports.CoordCol = CoordCol; function EnumCol(values, subType, description) { return { type: 'enum', description: description, values: values, subType: subType }; } exports.EnumCol = EnumCol; function VectorCol(length, description) { return { type: 'vector', description: description, length: length }; } exports.VectorCol = VectorCol; function MatrixCol(columns, rows, description) { return { type: 'matrix', description: description, columns: columns, rows: rows }; } exports.MatrixCol = MatrixCol; function ListCol(subType, separator, description) { return { type: 'list', description: description, separator: separator, subType: subType }; } exports.ListCol = ListCol; function mergeFilters() { var filters = []; for (var _i = 0; _i < arguments.length; _i++) { filters[_i] = arguments[_i]; } var n = filters.length; var mergedFilter = {}; var fields = new Map(); filters.forEach(function (filter) { Object.keys(filter).forEach(function (category) { Object.keys(filter[category]).forEach(function (field) { var key = "".concat(category, ".").concat(field); var value = fields.get(key) || 0; fields.set(key, value + 1); }); }); }); fields.forEach(function (v, k) { if (v !== n) return; var _a = k.split('.'), categoryName = _a[0], fieldName = _a[1]; if (categoryName in mergedFilter) { mergedFilter[categoryName][fieldName] = true; } else { mergedFilter[categoryName] = { fieldName: true }; } }); return mergedFilter; } exports.mergeFilters = mergeFilters;