fontawesome-subset
Version:
Utility to create subsets for FontAwesome and FontAwesome Pro.
66 lines (65 loc) • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFamilyMetaBySubset = exports.iconHasStyle = exports.addIconError = exports.findIconByName = void 0;
const constants_1 = require("./constants");
/**
* Find an icon using the IconYAML provided by FontAwesome.
* @param yaml
* @param iconNameOrAlias The name, unicode value, or supported alias of the icon.
*/
function findIconByName(yaml, iconNameOrAlias) {
const icon = yaml[iconNameOrAlias];
if (icon)
return icon;
const keyForAlias = Object.keys(yaml).find((k) => {
const icon = yaml[k];
if (!icon)
return false;
return (icon.unicode === iconNameOrAlias ||
("aliases" in icon &&
(icon.aliases?.names?.includes(iconNameOrAlias) ||
icon.aliases?.unicodes?.composite?.includes(iconNameOrAlias) ||
icon.aliases?.unicodes?.secondary?.includes(iconNameOrAlias))));
});
if (keyForAlias)
return yaml[keyForAlias];
return undefined;
}
exports.findIconByName = findIconByName;
/**
* Add an icon to the debug / warning error report.
*
* @param errors
* @param fontFamily
* @param icon
*/
function addIconError(errors, fontFamily, icon) {
const iconArray = Array.isArray(icon) ? icon : [icon];
if (!errors[fontFamily]?.push(...iconArray)) {
errors[fontFamily] = iconArray;
}
}
exports.addIconError = addIconError;
/**
* Check if an icon supports the requested style.
*
* @param icon
* @param subset
* @param packageType
*/
function iconHasStyle(icon, subset, packageType) {
const desiredStyle = (0, exports.getFamilyMetaBySubset)(subset);
return !!icon.familyStylesByLicense[packageType].find((familyStyle) => familyStyle.style === desiredStyle.style && familyStyle.family === desiredStyle.family);
}
exports.iconHasStyle = iconHasStyle;
/**
* Convert FontAwesome's confusing new naming scheme to the previous 'styles'
* listed in the old icon meta.
*
* @param subset
*/
const getFamilyMetaBySubset = (subset) => ({
family: constants_1.SUBSET_FAMILY_MAP[subset],
style: constants_1.SUBSET_STYLE_MAP[subset],
});
exports.getFamilyMetaBySubset = getFamilyMetaBySubset;