@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
96 lines • 5.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateAvatar = void 0;
const add_import_to_closest_module_1 = require("../../../../utils/add-import-to-closest-module");
const elements_1 = require("../../../../utils/templates/elements");
const inputs_1 = require("../../../../utils/templates/inputs");
const template_resource_1 = require("../../../../utils/templates/template-resource");
const normalize_attr_value_1 = require("../utils/normalize-attr-value");
const remove_attrs_1 = require("../utils/remove-attrs");
const common_1 = require("./toggles/common");
const sizeMap = {
xxs: 'xs',
xs: 's',
s: 'm',
m: 'l',
l: 'xl',
xl: 'xxl',
xxl: 'xxl',
};
function addModules(componentPath, modules) {
modules.forEach(({ moduleName, moduleSpecifier }) => {
(0, add_import_to_closest_module_1.addImportToClosestModule)(componentPath, moduleName, moduleSpecifier);
});
}
function getFallbackValue(textValue, fallbackValue) {
return textValue ? `(${textValue} | tuiInitials)` : fallbackValue || '';
}
function migrateAvatar({ resource, recorder, fileSystem, }) {
const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem);
const templateOffset = (0, template_resource_1.getTemplateOffset)(resource);
const avatarElements = (0, elements_1.findElementsByTagName)(template, 'tui-avatar');
const markerIconElements = (0, elements_1.findElementsByTagName)(template, 'tui-marker-icon');
[
...avatarElements.filter(({ attrs }) => (0, inputs_1.findAttr)(attrs, 'avatarurl') || (0, inputs_1.findAttr)(attrs, 'text')),
...markerIconElements,
].forEach(({ attrs, sourceCodeLocation }) => {
if (!sourceCodeLocation) {
return;
}
(0, common_1.replaceSizeAttr)(attrs, sourceCodeLocation, recorder, templateOffset, sizeMap);
});
avatarElements.forEach(({ attrs, sourceCodeLocation }) => {
var _a, _b;
const avatarUrlAttr = (0, inputs_1.findAttr)(attrs, 'avatarurl');
const fallbackAttr = (0, inputs_1.findAttr)(attrs, 'fallback');
const textAttr = (0, inputs_1.findAttr)(attrs, 'text');
const roundedAttr = (0, inputs_1.findAttr)(attrs, 'rounded');
const autoColorAttr = (0, inputs_1.findAttr)(attrs, 'autoColor');
if ((!avatarUrlAttr && !textAttr) || !sourceCodeLocation) {
return;
}
const urlAttrValue = (avatarUrlAttr === null || avatarUrlAttr === void 0 ? void 0 : avatarUrlAttr.value) &&
(0, normalize_attr_value_1.normalizeAttrValue)(avatarUrlAttr.name, avatarUrlAttr.value);
const textAttrValue = (textAttr === null || textAttr === void 0 ? void 0 : textAttr.value) && (0, normalize_attr_value_1.normalizeAttrValue)(textAttr.name, textAttr.value);
const fallbackAttrValue = (fallbackAttr === null || fallbackAttr === void 0 ? void 0 : fallbackAttr.value) &&
(0, normalize_attr_value_1.normalizeAttrValue)(fallbackAttr.name, fallbackAttr.value);
const autoColorValue = (autoColorAttr === null || autoColorAttr === void 0 ? void 0 : autoColorAttr.value) &&
(0, normalize_attr_value_1.normalizeAttrValue)(autoColorAttr.name, autoColorAttr.value);
const insertTo = ((_b = (_a = sourceCodeLocation.startTag) === null || _a === void 0 ? void 0 : _a.startOffset) !== null && _b !== void 0 ? _b : 0) + '<tui-avatar'.length;
if (!insertTo) {
return;
}
const mainSrc = urlAttrValue || (textAttrValue ? `${textAttrValue} | tuiInitials` : '');
const fallbackValue = urlAttrValue
? getFallbackValue(textAttrValue, fallbackAttrValue)
: '';
const fallbackSrc = urlAttrValue && fallbackValue
? `| tuiFallbackSrc : ${fallbackValue} | async`
: '';
recorder.insertRight(insertTo + templateOffset, ` [src]="${mainSrc}${fallbackSrc ? ` ${fallbackSrc}` : ''}"${!roundedAttr ? ' [round]="false"' : ''}${autoColorValue === 'true' ? ` [style.background]="${textAttrValue} | tuiAutoColor"` : ''}`);
const attrsToRemove = [
avatarUrlAttr,
textAttr,
fallbackAttr,
autoColorAttr,
].filter((attr) => attr !== undefined);
const fallbackModule = !!((avatarUrlAttr && textAttrValue) || fallbackAttr);
const initialsModule = !!textAttrValue;
const autoColorModule = !!autoColorValue && autoColorValue === 'true';
const modules = [
...(fallbackModule
? [{ moduleName: 'TuiFallbackSrcPipe', moduleSpecifier: '@taiga-ui/core' }]
: []),
...(initialsModule
? [{ moduleName: 'TuiInitialsPipe', moduleSpecifier: '@taiga-ui/core' }]
: []),
...(autoColorModule
? [{ moduleName: 'TuiAutoColorPipe', moduleSpecifier: '@taiga-ui/core' }]
: []),
];
addModules(resource.componentPath, modules);
(0, remove_attrs_1.removeAttrs)(attrsToRemove, sourceCodeLocation, recorder, templateOffset);
});
}
exports.migrateAvatar = migrateAvatar;
//# sourceMappingURL=migrate-avatar.js.map