UNPKG

vue-admin-core

Version:
99 lines (95 loc) 2.88 kB
'use strict'; 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