@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
68 lines (67 loc) • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.renameIcons = void 0;
/// <reference lib="es2021" />
const ng_morph_1 = require("ng-morph");
const constants_1 = require("../../../constants");
const CHANGED_ICONS = [
{ from: 'tuiIconClose', to: '@tui.x' },
{ from: 'tuiIconCloseLarge', to: '@tui.x' },
{ from: 'tuiIconUploadCloud', to: '@tui.cloud-upload' },
{ from: 'tuiIconUploadCloudLarge', to: '@tui.cloud-upload' },
{ from: 'tuiIconEdit', to: '@tui.pencil' },
{ from: 'tuiIconEdit2', to: '@tui.pencil' },
{ from: 'tuiIconEdit2Large', to: '@tui.pencil' },
{ from: 'tuiIconGitCommit', to: '@tui.git-commit-horizontal' },
{ from: 'tuiIconGitCommitLarge', to: '@tui.git-commit-horizontal' },
{ from: 'tuiIconMoreHorizontal', to: '@tui.ellipsis' },
{ from: 'tuiIconMoreHorizontalLarge', to: '@tui.ellipsis' },
{ from: 'tuiIconMoreVertical', to: '@tui.ellipsis-vertical' },
{ from: 'tuiIconMoreVerticalLarge', to: '@tui.ellipsis-vertical' },
{ from: 'tuiIconDrag', to: ' @tui.grip-vertical' },
{ from: 'tuiIconDragLarge', to: ' @tui.grip-vertical' },
{ from: 'tuiIconGrid', to: '@tui.layout-grid' },
{ from: 'tuiIconGridLarge', to: '@tui.layout-grid' },
{ from: 'tuiIconTool', to: '@tui.wrench' },
{ from: 'tuiIconUnlock', to: '@tui.lock-open' },
{ from: 'tuiIconMessageCircle', to: '@tui.message-circle' },
{ from: 'tuiIconSliders', to: '@tui.sliders-vertical' },
{ from: 'tuiIconPlusSquare', to: '@tui.square-plus' },
{ from: 'tuiIconAlertTriangle', to: '@tui.triangle-alert' },
{ from: 'tuiIconUploadCloud', to: '@tui.cloud-upload' },
{ from: 'tuiIconDownloadCloud', to: '@tui.cloud-download' },
{ from: 'tuiIconAddRowLarge', to: '@tui.copy-plus' },
{ from: 'tuiIconColumns', to: '@tui.columns-2' },
{ from: 'tuiIconTool', to: '@tui.wrench' },
{ from: 'tuiIconCheckSquare', to: '@tui.square-check-big' },
{ from: 'tuiIconOL', to: '@tui.list-ordered' },
];
function renameIcons(pattern = constants_1.ALL_FILES) {
const sourceFiles = (0, ng_morph_1.getSourceFiles)(pattern);
sourceFiles.forEach((file) => {
let text = file.getFullText();
CHANGED_ICONS.map(({ from, to }) => ({
from: new RegExp(`["'\`]${from}["'\`]`, 'g'),
to,
})).forEach(({ from, to }) => {
text = text.replaceAll(from, (match) => `${match.slice(0, 1)}${to}${match.slice(0, 1)}`);
});
const regex = /['"`]tuiIcon(?!Button\b)[A-Z][a-zA-Z0-9]*\b/g;
text = text.replaceAll(regex, (match) => convertString(match));
file.replaceWithText(text);
});
}
exports.renameIcons = renameIcons;
function convertString(input) {
let result = input
.replace(/["'`]tuiIcon/, '')
.replace(/Large$/, '')
.replaceAll(/([A-Z0-9])/g, '-$1')
.toLowerCase();
const circle = result.endsWith('-circle');
if (circle) {
result = result.replace('-circle', '');
result = `circle${result}`;
}
return `${input.slice(0, 1)}@tui.${result.startsWith('-') ? result.slice(1) : result}`;
}