@nova-ui/bits
Version:
SolarWinds Nova Framework
79 lines • 10.4 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Injectable } from "@angular/core";
import { icons } from "./icons";
import { IconCategoryNamespace } from "./public-api";
import * as i0 from "@angular/core";
/**
* @ignore
*/
export class IconService {
constructor() {
this.icons = icons;
this.updateIconStatusesAndNames();
}
getIconData(iconName) {
return this.names[iconName];
}
getStatusIcon(status) {
return this.statuses[status];
}
getIconResized(iconCode, iconNewSize, viewBox) {
return `<g transform="translate(-${iconNewSize / 2}, -${iconNewSize / 2})">
<svg height="${iconNewSize}" width="${iconNewSize}" viewBox="${viewBox ? viewBox : "0 0 20 20"}">
${iconCode}
</svg>
</g>`;
}
/**
* Allows registering additional icons from other sources
*
* @param iconsList
*/
registerIcons(iconsList) {
this.icons.push(...iconsList);
this.updateIconStatusesAndNames();
}
updateIconStatusesAndNames() {
this.statuses = this.icons
.filter((iconData) => {
if (iconData.cat_namespace === IconCategoryNamespace.Status) {
return iconData;
}
})
.reduce((acc, curr) => {
acc[curr.name.split(IconCategoryNamespace.Status)[1]] =
curr.code;
return acc;
}, {});
// ensure unique icons by name, so only the last one is available
this.names = this.icons.reduce((acc, curr) => {
acc[curr.name] = curr;
return acc;
}, {});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconService, providedIn: "root" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconService, decorators: [{
type: Injectable,
args: [{ providedIn: "root" }]
}], ctorParameters: () => [] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pY29uL2ljb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFFakIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGNBQWMsQ0FBQzs7QUFXL0Q7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUtwQjtRQUpPLFVBQUssR0FBZSxLQUFLLENBQUM7UUFLN0IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFnQjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFjO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYyxDQUNqQixRQUFnQixFQUNoQixXQUFtQixFQUNuQixPQUFnQjtRQUVoQixPQUFPLDRCQUE0QixXQUFXLEdBQUcsQ0FBQyxNQUM5QyxXQUFXLEdBQUcsQ0FDbEI7bUNBQzJCLFdBQVcsWUFBWSxXQUFXLGNBQ3pELE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUN4QjswQkFDa0IsUUFBUTs7cUJBRWIsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxTQUFxQjtRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTywwQkFBMEI7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSzthQUNyQixNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQixJQUFJLFFBQVEsQ0FBQyxhQUFhLEtBQUsscUJBQXFCLENBQUMsTUFBTSxFQUFFO2dCQUN6RCxPQUFPLFFBQVEsQ0FBQzthQUNuQjtRQUNMLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN2QixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVYLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsrR0E5RFEsV0FBVzttSEFBWCxXQUFXLGNBREUsTUFBTTs7NEZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBpY29ucyB9IGZyb20gXCIuL2ljb25zXCI7XG5pbXBvcnQgeyBJY29uQ2F0ZWdvcnlOYW1lc3BhY2UsIEljb25EYXRhIH0gZnJvbSBcIi4vcHVibGljLWFwaVwiO1xuXG4vKiogQGlnbm9yZSAqL1xuaW50ZXJmYWNlIElTdGF0dXMge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cbi8qKiBAaWdub3JlICovXG5pbnRlcmZhY2UgSU5hbWUge1xuICAgIFtrZXk6IHN0cmluZ106IEljb25EYXRhO1xufVxuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIEljb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgaWNvbnM6IEljb25EYXRhW10gPSBpY29ucztcbiAgICBwcml2YXRlIHN0YXR1c2VzOiBJU3RhdHVzO1xuICAgIHByaXZhdGUgbmFtZXM6IElOYW1lO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSWNvblN0YXR1c2VzQW5kTmFtZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvbkRhdGEoaWNvbk5hbWU6IHN0cmluZyk6IEljb25EYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZXNbaWNvbk5hbWVdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdGF0dXNJY29uKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzZXNbc3RhdHVzXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvblJlc2l6ZWQoXG4gICAgICAgIGljb25Db2RlOiBzdHJpbmcsXG4gICAgICAgIGljb25OZXdTaXplOiBudW1iZXIsXG4gICAgICAgIHZpZXdCb3g/OiBzdHJpbmdcbiAgICApOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtJHtpY29uTmV3U2l6ZSAvIDJ9LCAtJHtcbiAgICAgICAgICAgIGljb25OZXdTaXplIC8gMlxuICAgICAgICB9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGhlaWdodD1cIiR7aWNvbk5ld1NpemV9XCIgd2lkdGg9XCIke2ljb25OZXdTaXplfVwiIHZpZXdCb3g9XCIke1xuICAgICAgICAgICAgdmlld0JveCA/IHZpZXdCb3ggOiBcIjAgMCAyMCAyMFwiXG4gICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICR7aWNvbkNvZGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZz5gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsbG93cyByZWdpc3RlcmluZyBhZGRpdGlvbmFsIGljb25zIGZyb20gb3RoZXIgc291cmNlc1xuICAgICAqXG4gICAgICogQHBhcmFtIGljb25zTGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3Rlckljb25zKGljb25zTGlzdDogSWNvbkRhdGFbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmljb25zLnB1c2goLi4uaWNvbnNMaXN0KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUljb25TdGF0dXNlc0FuZE5hbWVzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJY29uU3RhdHVzZXNBbmROYW1lcygpIHtcbiAgICAgICAgdGhpcy5zdGF0dXNlcyA9IHRoaXMuaWNvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGljb25EYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGljb25EYXRhLmNhdF9uYW1lc3BhY2UgPT09IEljb25DYXRlZ29yeU5hbWVzcGFjZS5TdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGljb25EYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucmVkdWNlKChhY2M6IGFueSwgY3VycikgPT4ge1xuICAgICAgICAgICAgICAgIGFjY1tjdXJyLm5hbWUuc3BsaXQoSWNvbkNhdGVnb3J5TmFtZXNwYWNlLlN0YXR1cylbMV1dID1cbiAgICAgICAgICAgICAgICAgICAgY3Vyci5jb2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgLy8gZW5zdXJlIHVuaXF1ZSBpY29ucyBieSBuYW1lLCBzbyBvbmx5IHRoZSBsYXN0IG9uZSBpcyBhdmFpbGFibGVcbiAgICAgICAgdGhpcy5uYW1lcyA9IHRoaXMuaWNvbnMucmVkdWNlKChhY2M6IGFueSwgY3VycikgPT4ge1xuICAgICAgICAgICAgYWNjW2N1cnIubmFtZV0gPSBjdXJyO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cbn1cbiJdfQ==