@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
87 lines • 11 kB
JavaScript
import { Inject, Injectable, Optional } from '@angular/core';
import { ImgIcon, NGE_UI_ICON_CONFIG } from './icons';
import { FILE_THEME } from './icons.files';
import { FOLDER_THEME } from './icons.folders';
import * as i0 from "@angular/core";
export class NgeIconService {
constructor(config) {
this.config = config;
}
fromFileName(fileName, options) {
const { defaultIcon } = FILE_THEME;
const baseUrl = this.config?.fileIconsBaseUrl || 'assets/vendors/nge/ui/icon/icons/files/';
let iconName = '';
if (fileName) {
if (options.isDirectory) {
iconName = this.findFolderIcon(iconName, options, fileName);
}
else {
iconName = this.findFileIcon(fileName, iconName);
}
return new ImgIcon(baseUrl + iconName, options);
}
return new ImgIcon(baseUrl + defaultIcon.name + '.svg', options);
}
findFileIcon(fileName, iconName) {
const extension = this.extname(fileName);
const file = this.config?.extraFileIcons?.find((item) => {
return (item.fileExtensions || []).includes(extension);
}) ||
FILE_THEME.icons.find((item) => {
return (item.fileExtensions || []).includes(extension);
}) ||
FILE_THEME.defaultIcon;
iconName = file.name + '.svg';
return iconName;
}
findFolderIcon(iconName, options, fileName) {
iconName = FOLDER_THEME.defaultIcon.name;
if (options.isRoot) {
iconName = FOLDER_THEME.rootFolder?.name || iconName;
}
else {
const icon = this.config?.extraFolderIcons?.find((item) => {
return item.folderNames.includes(fileName.toLowerCase());
}) ||
FOLDER_THEME.icons?.find((item) => {
return item.folderNames.includes(fileName.toLowerCase());
});
iconName = icon?.name || iconName;
}
if (options.expanded) {
iconName += '-open';
}
iconName += '.svg';
return iconName;
}
basename(path) {
path = path.replace(/\\/g, '/');
return path.slice(path.lastIndexOf('/') + 1, path.length);
}
extname(path) {
const base = this.basename(path);
if (!base) {
return base;
}
if (base.startsWith('.')) {
return '';
}
const dotIndex = base.lastIndexOf('.');
if (dotIndex === -1) {
return '';
}
return base.substring(dotIndex + 1).toLowerCase();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeIconService, deps: [{ token: NGE_UI_ICON_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeIconService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeIconService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [NGE_UI_ICON_CONFIG]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdlL3VpL2ljb24vc3JjL2ljb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUQsT0FBTyxFQUFtQixPQUFPLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOztBQUc5QyxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUdtQixNQUF3QjtRQUF4QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUN4QyxDQUFDO0lBRUosWUFBWSxDQUFDLFFBQWdCLEVBQUUsT0FBd0I7UUFDckQsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLFVBQVUsQ0FBQTtRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixJQUFJLHlDQUF5QyxDQUFBO1FBRTFGLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNqQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3hCLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDN0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUNsRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFFRCxP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LEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ25ELENBQUM7OEdBaEZVLGNBQWMsa0JBR2Ysa0JBQWtCO2tIQUhqQixjQUFjLGNBREQsTUFBTTs7MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFHN0IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZpbGVJY29uT3B0aW9ucywgSW1nSWNvbiwgTmdlVWlJY29uQ29uZmlnLCBOR0VfVUlfSUNPTl9DT05GSUcgfSBmcm9tICcuL2ljb25zJ1xuaW1wb3J0IHsgRklMRV9USEVNRSB9IGZyb20gJy4vaWNvbnMuZmlsZXMnXG5pbXBvcnQgeyBGT0xERVJfVEhFTUUgfSBmcm9tICcuL2ljb25zLmZvbGRlcnMnXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTmdlSWNvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoTkdFX1VJX0lDT05fQ09ORklHKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnPzogTmdlVWlJY29uQ29uZmlnXG4gICkge31cblxuICBmcm9tRmlsZU5hbWUoZmlsZU5hbWU6IHN0cmluZywgb3B0aW9uczogRmlsZUljb25PcHRpb25zKTogSW1nSWNvbiB7XG4gICAgY29uc3QgeyBkZWZhdWx0SWNvbiB9ID0gRklMRV9USEVNRVxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZz8uZmlsZUljb25zQmFzZVVybCB8fCAnYXNzZXRzL3ZlbmRvcnMvbmdlL3VpL2ljb24vaWNvbnMvZmlsZXMvJ1xuXG4gICAgbGV0IGljb25OYW1lID0gJydcbiAgICBpZiAoZmlsZU5hbWUpIHtcbiAgICAgIGlmIChvcHRpb25zLmlzRGlyZWN0b3J5KSB7XG4gICAgICAgIGljb25OYW1lID0gdGhpcy5maW5kRm9sZGVySWNvbihpY29uTmFtZSwgb3B0aW9ucywgZmlsZU5hbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpY29uTmFtZSA9IHRoaXMuZmluZEZpbGVJY29uKGZpbGVOYW1lLCBpY29uTmFtZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgSW1nSWNvbihiYXNlVXJsICsgaWNvbk5hbWUsIG9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbWdJY29uKGJhc2VVcmwgKyBkZWZhdWx0SWNvbi5uYW1lICsgJy5zdmcnLCBvcHRpb25zKVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRmlsZUljb24oZmlsZU5hbWU6IHN0cmluZywgaWNvbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IHRoaXMuZXh0bmFtZShmaWxlTmFtZSlcbiAgICBjb25zdCBmaWxlID1cbiAgICAgIHRoaXMuY29uZmlnPy5leHRyYUZpbGVJY29ucz8uZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gKGl0ZW0uZmlsZUV4dGVuc2lvbnMgfHwgW10pLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICAgIH0pIHx8XG4gICAgICBGSUxFX1RIRU1FLmljb25zLmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIChpdGVtLmZpbGVFeHRlbnNpb25zIHx8IFtdKS5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgICB9KSB8fFxuICAgICAgRklMRV9USEVNRS5kZWZhdWx0SWNvblxuXG4gICAgaWNvbk5hbWUgPSBmaWxlLm5hbWUgKyAnLnN2ZydcbiAgICByZXR1cm4gaWNvbk5hbWVcbiAgfVxuXG4gIHByaXZhdGUgZmluZEZvbGRlckljb24oaWNvbk5hbWU6IHN0cmluZywgb3B0aW9uczogRmlsZUljb25PcHRpb25zLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWNvbk5hbWUgPSBGT0xERVJfVEhFTUUuZGVmYXVsdEljb24ubmFtZVxuICAgIGlmIChvcHRpb25zLmlzUm9vdCkge1xuICAgICAgaWNvbk5hbWUgPSBGT0xERVJfVEhFTUUucm9vdEZvbGRlcj8ubmFtZSB8fCBpY29uTmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpY29uID1cbiAgICAgICAgdGhpcy5jb25maWc/LmV4dHJhRm9sZGVySWNvbnM/LmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5mb2xkZXJOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICB9KSB8fFxuICAgICAgICBGT0xERVJfVEhFTUUuaWNvbnM/LmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5mb2xkZXJOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICB9KVxuICAgICAgaWNvbk5hbWUgPSBpY29uPy5uYW1lIHx8IGljb25OYW1lXG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZXhwYW5kZWQpIHtcbiAgICAgIGljb25OYW1lICs9ICctb3BlbidcbiAgICB9XG5cbiAgICBpY29uTmFtZSArPSAnLnN2ZydcbiAgICByZXR1cm4gaWNvbk5hbWVcbiAgfVxuXG4gIHByaXZhdGUgYmFzZW5hbWUocGF0aDogc3RyaW5nKSB7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgcmV0dXJuIHBhdGguc2xpY2UocGF0aC5sYXN0SW5kZXhPZignLycpICsgMSwgcGF0aC5sZW5ndGgpXG4gIH1cblxuICBwcml2YXRlIGV4dG5hbWUocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuYmFzZW5hbWUocGF0aClcbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHJldHVybiBiYXNlXG4gICAgfVxuICAgIGlmIChiYXNlLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGNvbnN0IGRvdEluZGV4ID0gYmFzZS5sYXN0SW5kZXhPZignLicpXG4gICAgaWYgKGRvdEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIHJldHVybiBiYXNlLnN1YnN0cmluZyhkb3RJbmRleCArIDEpLnRvTG93ZXJDYXNlKClcbiAgfVxufVxuIl19