@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
59 lines (58 loc) • 3.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateMoney = 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 clean_object_1 = require("../utils/clean-object");
const remove_attrs_1 = require("../utils/remove-attrs");
function migrateMoney({ 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-money');
elements.forEach(({ attrs, sourceCodeLocation }) => {
var _a, _b, _c, _d, _e;
if (!sourceCodeLocation) {
return;
}
const valueAttr = (0, inputs_1.findAttr)(attrs, 'value');
const currencyAttr = (0, inputs_1.findAttr)(attrs, 'currency');
const decimalAttr = (0, inputs_1.findAttr)(attrs, 'decimal');
const precisionAttr = (0, inputs_1.findAttr)(attrs, 'precision');
const signAttr = (0, inputs_1.findAttr)(attrs, 'sign');
const selfClosing = !(sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.endTag);
if (!valueAttr) {
return;
}
const insertTo = (_b = (_a = sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.startTag) === null || _a === void 0 ? void 0 : _a.endOffset) !== null && _b !== void 0 ? _b : 0;
const value = (0, inputs_1.isBinding)(valueAttr) ? valueAttr.value : `'${valueAttr.value}'`;
const currency = currencyAttr && (0, inputs_1.isBinding)(currencyAttr)
? currencyAttr === null || currencyAttr === void 0 ? void 0 : currencyAttr.value
: `'${currencyAttr === null || currencyAttr === void 0 ? void 0 : currencyAttr.value}'`;
recorder.insertRight(templateOffset + insertTo, `{{ ${value} | tuiAmount ${currencyAttr ? `: ${currency}` : ': "RUB"'} | async }}${selfClosing ? '</span>' : ''}`);
if (decimalAttr || precisionAttr) {
(0, add_import_to_closest_module_1.addImportToClosestModule)(resource.componentPath, 'TuiNumberFormat', '@taiga-ui/core');
const format = JSON.stringify((0, clean_object_1.cleanObject)({
decimalMode: decimalAttr === null || decimalAttr === void 0 ? void 0 : decimalAttr.value,
precision: precisionAttr === null || precisionAttr === void 0 ? void 0 : precisionAttr.value,
}));
const formatPart = `[tuiNumberFormat]='${format}'`;
const insertTo = (((_c = sourceCodeLocation === null || sourceCodeLocation === void 0 ? void 0 : sourceCodeLocation.startTag) === null || _c === void 0 ? void 0 : _c.startOffset) || 0) + 1;
recorder.insertRight(templateOffset + insertTo, formatPart);
}
const attrsToRemove = [
valueAttr,
currencyAttr,
decimalAttr,
precisionAttr,
signAttr,
].filter((attr) => attr !== undefined);
(0, remove_attrs_1.removeAttrs)(attrsToRemove, sourceCodeLocation, recorder, templateOffset);
if (selfClosing) {
recorder.remove(templateOffset + ((_e = (_d = sourceCodeLocation.startTag) === null || _d === void 0 ? void 0 : _d.endOffset) !== null && _e !== void 0 ? _e : 2) - 2, 1);
}
(0, add_import_to_closest_module_1.addImportToClosestModule)(resource.componentPath, 'AsyncPipe', '@angular/common');
});
}
exports.migrateMoney = migrateMoney;