@bigfishtv/cockpit
Version:
153 lines (131 loc) • 3.73 kB
JavaScript
;
exports.__esModule = true;
exports.add = add;
exports.addAll = addAll;
exports.addWithCategory = addWithCategory;
exports.addAllWithCategory = addAllWithCategory;
exports.get = get;
exports.getAll = getAll;
exports.getByCategory = getByCategory;
exports.getUncategorizedKeys = getUncategorizedKeys;
exports.getCategories = getCategories;
var _iconLibrary = require('./iconLibrary');
var iconLibrary = _interopRequireWildcard(_iconLibrary);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var icons = {}; /**
* @module Core/iconRegistry
*/
var categories = {};
/**
* Adds icon to registry
* @param {String} key
* @param {JSX} pathTag - JSX svg path tag
*/
function add(key, pathTag) {
icons[key] = pathTag;
}
/**
* Adds multiple icons to registry
* @param {JSX[]} icons - Array of JSX svg path tags
*/
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
*/
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
*/
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}
*/
function get(key) {
return icons[key];
}
/**
* Gets all icons in registry
* @return {Object}
*/
function getAll() {
return icons;
}
/**
* Gets all icons in category
* @param {String} category
* @return {Object} icons
*/
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
*/
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
*/
function getCategories() {
return categories;
}
iconLibrary.init();