UNPKG

@taiga-ui/cdk

Version:

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

60 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceAttrValues = void 0; const add_import_to_closest_module_1 = require("../../../utils/add-import-to-closest-module"); const elements_1 = require("../../../utils/templates/elements"); const template_resource_1 = require("../../../utils/templates/template-resource"); function replaceAttrValues({ resource, recorder, fileSystem, data, }) { const template = (0, template_resource_1.getTemplateFromTemplateResource)(resource, fileSystem); const templateOffset = (0, template_resource_1.getTemplateOffset)(resource); data.forEach(({ attrNames, valueReplacer, withTagNames, filterFn, newAttrName, directiveModule, }) => { const elements = [ ...(0, elements_1.findElementsWithAttributeOnTag)(template, attrNames, withTagNames, filterFn), ]; elements.forEach((element) => { const { name, value } = element.attrs.find((attr) => attrNames.map((name) => name.toLowerCase()).includes(attr.name)) || {}; if (!name || !value) { return; } const attributeName = attrNames.find((attrName) => attrName.toLowerCase() === name) || ''; if (Array.isArray(valueReplacer)) { valueReplacer.forEach(({ from, to }) => { if (value === from) { replaceValue({ element, recorder, templateOffset, attrName: name, attrNewName: newAttrName || attributeName, attrValue: to, }); } }); } else { replaceValue({ element, recorder, templateOffset, attrName: name, attrNewName: newAttrName || attributeName, attrValue: valueReplacer(value), }); } if (directiveModule) { (0, add_import_to_closest_module_1.addImportToClosestModule)(resource.componentPath, directiveModule.name, directiveModule.moduleSpecifier); } }); }); } exports.replaceAttrValues = replaceAttrValues; function replaceValue({ element, recorder, templateOffset, attrName, attrNewName, attrValue, }) { var _a, _b; const { startOffset, endOffset } = ((_b = (_a = element.sourceCodeLocation) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[attrName]) || { startOffset: 0, endOffset: 0, }; recorder.remove(templateOffset + startOffset, endOffset - startOffset); recorder.insertRight(templateOffset + startOffset, `${attrNewName}="${attrValue}"`); } //# sourceMappingURL=replace-attr-values.js.map