@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
49 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateTooltip = migrateTooltip;
const elements_1 = require("../../../../utils/templates/elements");
const template_resource_1 = require("../../../../utils/templates/template-resource");
const replace_tag_1 = require("../../../utils/templates/replace-tag");
/**
* The legacy `<tui-tooltip>` component is removed in v5; its behavior now lives on the
* `tui-icon[tuiTooltip]` directive. Each legacy input maps onto the directive/hint input
* that `<tui-tooltip>` used to forward internally.
*/
const ATTR_RENAMES = new Map([
['appearance', 'tuiHintAppearance'],
['content', 'tuiTooltip'],
['context', 'tuiHintContext'],
['describeId', 'tuiTooltipDescribe'],
['direction', 'tuiHintDirection'],
['hideDelay', 'tuiHintHideDelay'],
['showDelay', 'tuiHintShowDelay'],
]);
const RENAME_BY_LOWER = new Map([...ATTR_RENAMES].flatMap(([from, to]) => [
[from.toLowerCase(), to],
[`[${from.toLowerCase()}]`, `[${to}]`],
]));
function migrateTooltip({ resource, recorder, fileSystem, }) {
const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem);
const templateOffset = (0, template_resource_1.getTemplateOffset)(resource);
const elements = (0, elements_1.findElementsByTagName)(template, 'tui-tooltip');
elements.forEach((element) => {
var _a, _b;
for (const attr of element.attrs) {
const newName = RENAME_BY_LOWER.get(attr.name.toLowerCase());
if (!newName) {
continue;
}
const loc = (_b = (_a = element.sourceCodeLocation) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[attr.name];
if (!loc) {
continue;
}
const original = template.slice(loc.startOffset, loc.endOffset);
const separatorIndex = original.indexOf('=');
const rest = separatorIndex === -1 ? '' : original.slice(separatorIndex);
recorder.remove(templateOffset + loc.startOffset, original.length);
recorder.insertRight(templateOffset + loc.startOffset, `${newName}${rest}`);
}
(0, replace_tag_1.replaceTag)(recorder, element.sourceCodeLocation, 'tui-tooltip', 'tui-icon', template, templateOffset);
});
}
//# sourceMappingURL=migrate-tooltip.js.map