@bigfishtv/cockpit
Version:
137 lines (119 loc) • 3.08 kB
JavaScript
/**
* @module Core/iconRegistry
*/
import * as iconLibrary from './iconLibrary';
var icons = {};
var 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(function (key) {
return 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(function (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) {
var filteredIcons = {};
if (category in categories) {
var keys = categories[category];
keys.forEach(function (key) {
return filteredIcons[key] = icons[key];
});
}
return filteredIcons;
}
/**
* Gets any icons that weren't added with a category
* @return {String[]} icons
*/
export function getUncategorizedKeys() {
var categorizedKeys = [];
for (var _iterator = Object.keys(categories), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var category = _ref;
categorizedKeys = [].concat(categorizedKeys, categories[category]);
}
var uncategorizedKeys = [];
for (var _iterator2 = Object.keys(icons), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var key = _ref2;
if (categorizedKeys.indexOf(key) < 0) uncategorizedKeys.push(key);
}
return uncategorizedKeys;
}
/**
* Gets categories
* @return {Object} object of categories
*/
export function getCategories() {
return categories;
}
iconLibrary.init();