UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

50 lines 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.migrateLabel = void 0; const elements_1 = require("../../../../utils/templates/elements"); const inputs_1 = require("../../../../utils/templates/inputs"); const template_resource_1 = require("../../../../utils/templates/template-resource"); function migrateLabel({ resource, recorder, fileSystem, }) { const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem); const templateOffset = (0, template_resource_1.getTemplateOffset)(resource); const labelElements = (0, elements_1.findElementsByTagName)(template, 'label', ({ attrs }) => attrs.some(({ name }) => name === 'tuilabel' || name === '[tuilabel]')); labelElements.forEach(({ attrs, sourceCodeLocation, childNodes }) => { const labelAttr = (0, inputs_1.findAttr)(attrs, 'tuilabel'); if (!labelAttr || !sourceCodeLocation) { return; } migrateValue({ valueAttr: labelAttr, sourceCodeLocation, recorder, templateOffset, childNodes, }); }); } exports.migrateLabel = migrateLabel; function migrateValue({ valueAttr, sourceCodeLocation, recorder, templateOffset, childNodes, }) { var _a; const attrValue = valueAttr === null || valueAttr === void 0 ? void 0 : valueAttr.value; const { startTag, endTag } = sourceCodeLocation; const insertTo = startTag === null || startTag === void 0 ? void 0 : startTag.endOffset; if (!attrValue || !insertTo) { return; } const onlyTextContent = childNodes.length && childNodes.every((node) => node.nodeName === '#text'); if (onlyTextContent && startTag && endTag) { const content = `<span tuiTitle><span tuiSubtitle>${valueAttr.name === 'tuilabel' ? attrValue : `{{ ${attrValue} }}`}</span>`; recorder.insertRight(templateOffset + insertTo, content); recorder.insertLeft(templateOffset + endTag.startOffset, '</span>'); } else { recorder.insertRight(insertTo + templateOffset, valueAttr.name === 'tuilabel' ? attrValue : `{{ ${attrValue} }}`); } const attrOffset = (_a = sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.attrs) === null || _a === void 0 ? void 0 : _a[valueAttr.name]; if (attrOffset) { const { startOffset, endOffset } = attrOffset; recorder.remove(templateOffset + startOffset, endOffset - startOffset); recorder.insertRight(templateOffset + startOffset, 'tuiLabel'); } } //# sourceMappingURL=migrate-label.js.map