vue-admin-core
Version:
A Component Library for Vue 3
99 lines (95 loc) • 2.88 kB
JavaScript
;
var lodashEs = require('lodash-es');
const nodeToText = (nodes, { prefix = "\\$\\{", suffix = "\\}" }) => {
let str = "";
nodes.forEach((node, index) => {
if (node.type === "paragraph") {
str = str + (str || index !== 0 ? "\n" : "") + nodeToText(node.children, { prefix, suffix });
} else if (node.type === "variable") {
str = str + `\${${node.value}}`;
} else {
str = str + node.text;
}
});
return str;
};
function generateHtmlFromString(input, data, { prefix = "\\$\\{", suffix = "\\}" }) {
const nodes = [];
const words = Object.keys(data).join("|");
const reg = new RegExp(`(${prefix}[${words}]+${suffix})`, "g");
const parts = input.split(reg);
parts.forEach((part) => {
var _a;
if (part.match(reg)) {
const value = part.substring(2, part.length - 1);
const label = ((_a = data[value]) == null ? void 0 : _a.label) || value;
if (label)
nodes.push(
`<span data-w-e-type="variable" data-w-e-is-void data-w-e-is-inline data-value="${value}" data-label="${label}">${label}</span>`
);
} else {
nodes.push(part);
}
});
return nodes.join("");
}
function textToHtml(str, data, { prefix = "\\$\\{", suffix = "\\}" }) {
if (!str || lodashEs.isEmpty(data))
return "<p><br></p>";
const arr = str.split(/\n/);
const nodes = [];
arr.forEach((item) => {
if (item) {
nodes.push(`<p>${generateHtmlFromString(item, data, { prefix, suffix })}</p>`);
} else {
nodes.push(`<p><br/></p>`);
}
});
return nodes.join("");
}
function generateNodeFromString(input, { prefix = "\\$\\{", suffix = "\\}" }, data) {
const nodes = [];
const words = Object.keys(data).join("|");
const reg = new RegExp(`(${prefix}[${words}]+${suffix})`, "g");
const parts = input.split(reg);
parts.forEach((part) => {
var _a;
if (part.match(reg)) {
const value = part.substring(2, part.length - 1);
const label = ((_a = data[value]) == null ? void 0 : _a.label) || value;
if (value) {
nodes.push({
type: "variable",
value,
label,
children: [{ text: "" }]
});
}
} else {
nodes.push({ text: part });
}
});
return nodes;
}
function textToNode({ prefix = "\\$\\{", suffix = "\\}" }, str, data) {
if (!str || lodashEs.isEmpty(data))
return "";
const arr = str.split(/\n/);
const nodes = [];
if (str.indexOf("\n") === -1) {
return generateNodeFromString(str, { prefix, suffix }, data);
}
arr.forEach((item) => {
if (item) {
nodes.push({
type: "paragraph",
children: generateNodeFromString(item, { prefix, suffix }, data)
});
}
});
return nodes;
}
exports.nodeToText = nodeToText;
exports.textToHtml = textToHtml;
exports.textToNode = textToNode;
//# sourceMappingURL=utils.js.map