UNPKG

@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
"use strict"; 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; }