@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
81 lines (80 loc) • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.renameProprietaryIcons = void 0;
const ng_morph_1 = require("ng-morph");
const constants_1 = require("../../../constants");
function renameProprietaryIcons({ logger }, pattern = constants_1.ALL_FILES) {
const sourceFiles = (0, ng_morph_1.getSourceFiles)(pattern);
sourceFiles.forEach((file) => {
let text = file.getFullText();
const regex = /['"`]tuiIcon(?!Button\b)[A-Z][a-zA-Z0-9]*\b/g;
const invalidIcons = new Set();
text = text.replaceAll(regex, (icon) => {
if (/['"`]tuiIcon(?!Tds)\w*/.exec(icon)) {
logger.warn(`[WARNING] in ${file.getSourceFile().getFilePath()}: Invalid icon name ${icon}. Please select an icon from the proprietary pack.`);
invalidIcons.add(icon.slice(1));
return icon;
}
return convertString(icon);
});
if (invalidIcons.size > 0) {
const message = `TODO (Taiga UI migration): invalid icons ${Array.from(invalidIcons).join(', ')}. Please select an icon from the proprietary pack`;
const todo = file.getFilePath().endsWith('html')
? `<!-- ${message} -->`
: `// ${message}`;
text = `${todo}\n${text}`;
}
file.replaceWithText(text);
});
}
exports.renameProprietaryIcons = renameProprietaryIcons;
function convertString(input) {
const result = input
.replace(/['"`]tuiIconTds/, '')
.replace(/SmallPragmatic$/, '')
.replace(/MediumPragmatic$/, '')
.replace(/Small$/, '')
.replace(/Medium$/, '')
.replace(/Flags$/, '')
.replace(/Service$/, '')
.replace(/Logo$/, '')
.replace(/LogoSiteheader$/, '')
.replace(/LogoSquare$/, '')
.replaceAll(/([A-Z0-9])/g, '-$1')
.toLowerCase();
const pack = extractPackName(input);
const subfolder = extractSubfolder(input);
return `${input.slice(0, 1)}@tui.${pack}${subfolder ? `.${subfolder}` : ''}.${result.startsWith('-') ? result.slice(1) : result}`;
}
function extractPackName(input) {
if (input.endsWith('Pragmatic')) {
return 'pragmatic';
}
if (input.endsWith('Service')) {
return 'service';
}
if (input.endsWith('Logo') ||
input.endsWith('LogoSquare') ||
input.endsWith('LogoSiteheader')) {
return 'logo';
}
if (input.endsWith('Flags')) {
return 'flags';
}
return 'fancy';
}
function extractSubfolder(input) {
if (input.includes('Medium')) {
return 'medium';
}
if (input.includes('Small')) {
return 'small';
}
if (input.includes('LogoSquare')) {
return 'square';
}
if (input.includes('LogoSiteheader')) {
return 'siteheader';
}
return null;
}