UNPKG

@cisstech/nge

Version:

NG Essentials is a collection of libraries for Angular developers.

87 lines 11 kB
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