@gravity-ui/uikit
Version:
Gravity UI base styling and components
35 lines (34 loc) • 1.21 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseKeyGroups = parseKeyGroups;
const tslib_1 = require("tslib");
const capitalize_1 = tslib_1.__importDefault(require("lodash/capitalize.js"));
const uniqBy_1 = tslib_1.__importDefault(require("lodash/uniqBy.js"));
const utils_1 = require("./utils.js");
const GROUPS_SEPARATOR = /\s/;
const KEYS_SEPARATOR = '+';
function parseKeyGroups(defs, value) {
return (0, utils_1.split)(value, GROUPS_SEPARATOR).map((keys) => (0, uniqBy_1.default)((0, utils_1.split)(keys, KEYS_SEPARATOR)
.map(keyParser(defs))
.sort((a, b) => b.priority - a.priority), // high to low
(key) => key.id).map(renderKey));
}
function keyParser(defs) {
return function (raw) {
const keyId = getKeyId(defs, raw);
return {
raw,
id: keyId,
priority: defs.Priority[keyId] ?? 0,
displayName: defs.DisplayName[keyId],
};
};
}
function getKeyId(defs, val) {
val = val.toLowerCase();
return defs.NormalizeMap[val] ?? val;
}
function renderKey(key) {
return key.displayName ?? (0, capitalize_1.default)(key.id);
}
//# sourceMappingURL=parse.js.map
;