UNPKG

@aibsweb/faceted-search

Version:
67 lines (54 loc) 2.21 kB
"use strict"; 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;