@aibsweb/faceted-search
Version:
A generalized faceted search application.
67 lines (54 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getRenderedStringWidth = getRenderedStringWidth;
exports["default"] = exports.graphQLDimensionNameToCriticalDimension = exports.calculateLongestStringWidth = void 0;
var _get = _interopRequireDefault(require("lodash/get"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* Measure rendered width of string
*
* @param {String} str -> the string to measure
* @param {String} font -> https://developer.mozilla.org/en-US/docs/Web/CSS/font
* @return {number}
*/
function getRenderedStringWidth(str, font) {
var context = window.document.createElement('canvas').getContext('2d');
context.font = font;
var _context$measureText = context.measureText(str),
width = _context$measureText.width;
return Math.ceil(width);
}
/**
* Given a list of strings, returns the px length of the longest string
* @param {Array} stringList list of strings to measure
*/
var calculateLongestStringWidth = function calculateLongestStringWidth(stringList) {
var font = '16px "roboto", sans-serif'; // Find the longest label
var longestLength = stringList.reduce(function (acc, string) {
return Math.max(acc, getRenderedStringWidth(string, font));
}, 0);
return longestLength;
};
/**
* Maps a graphQl dimension name to a critical dimension value if possible.
*
* @param {string} graphName
*/
exports.calculateLongestStringWidth = calculateLongestStringWidth;
var graphQLDimensionNameToCriticalDimension = function graphQLDimensionNameToCriticalDimension(graphName) {
var nameMap = {
'nucleus.cortical_layer': 'cortical_layer__name',
'nucleus.donor.sex.name': 'donor__sex',
'nucleus.donor.name': 'donor__name',
'nucleus.neuron_phenotype.cluster.name': 'neuron_phenotype__cluster__name',
'nucleus.neuron_phenotype.class.name': 'neuron_phenotype__class__name'
};
return (0, _get["default"])(nameMap, "".concat(graphName), graphName);
};
exports.graphQLDimensionNameToCriticalDimension = graphQLDimensionNameToCriticalDimension;
var _default = {
getRenderedStringWidth: getRenderedStringWidth
};
exports["default"] = _default;