UNPKG

@bigfishtv/cockpit

Version:

108 lines (95 loc) 2.26 kB
/** * @module Core/iconRegistry */ import * as iconLibrary from './iconLibrary' const icons = {} const categories = {} /** * Adds icon to registry * @param {String} key * @param {JSX} pathTag - JSX svg path tag */ export function add(key, pathTag) { icons[key] = pathTag } /** * Adds multiple icons to registry * @param {JSX[]} icons - Array of JSX svg path tags */ export function addAll(_icons) { Object.keys(_icons).map(key => add(key, _icons[key])) } /** * Adds icon to registry and stores its category * @param {String} key * @param {JSX} pathTag - JSX svg path tag * @param {String} category */ export function addWithCategory(key, pathTag, category) { if (!(category in categories)) categories[category] = [] categories[category].push(key) icons[key] = pathTag } /** * [addAllWithCategory description] * @param {JSX[]} icons - Array of JSX svg path tags * @param {String} category */ export function addAllWithCategory(category, _icons) { if (!(category in categories)) categories[category] = [] Object.keys(_icons).forEach(key => { categories[category].push(key) add(key, _icons[key]) }) } /** * Gets icon from registry * @param {String} key * @return {JSX} */ export function get(key) { return icons[key] } /** * Gets all icons in registry * @return {Object} */ export function getAll() { return icons } /** * Gets all icons in category * @param {String} category * @return {Object} icons */ export function getByCategory(category) { const filteredIcons = {} if (category in categories) { const keys = categories[category] keys.forEach(key => (filteredIcons[key] = icons[key])) } return filteredIcons } /** * Gets any icons that weren't added with a category * @return {String[]} icons */ export function getUncategorizedKeys() { let categorizedKeys = [] for (let category of Object.keys(categories)) { categorizedKeys = [...categorizedKeys, ...categories[category]] } const uncategorizedKeys = [] for (let key of Object.keys(icons)) { if (categorizedKeys.indexOf(key) < 0) uncategorizedKeys.push(key) } return uncategorizedKeys } /** * Gets categories * @return {Object} object of categories */ export function getCategories() { return categories } iconLibrary.init()