UNPKG

@zougui/common.furaffinity

Version:

53 lines 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseDescription = void 0; const utils_1 = require("./utils"); const getDescriptionTree = (descriptionElement) => { return { type: 'root', text: descriptionElement.textContent || '', textAlign: (0, utils_1.getTextAlign)(descriptionElement), children: getDescriptionNodes(descriptionElement), }; }; const getDescriptionNodes = (element) => { const descriptionNodes = []; const childNodes = Array.from(element.childNodes || []); const children = Array.from(element.children || []); const state = { elementIndex: 0 }; for (const node of childNodes) { const childElement = children[state.elementIndex]; const nodeName = node.nodeName.toLowerCase(); const data = { node, element: childElement }; const parser = utils_1.elementParsers[nodeName] || utils_1.elementParsers.unknown; const newDescriptionNode = parser(data, state, getDescriptionNodes); if (newDescriptionNode) { descriptionNodes.push(newDescriptionNode); } } if (descriptionNodes[0]) { descriptionNodes[0].text = descriptionNodes[0].text .replace(/^\n/, '') .trimStart(); // if there is no text then this node is useless if (!descriptionNodes[0].text) { descriptionNodes.shift(); } } return descriptionNodes; }; const parseDescription = (description) => { const { document } = (0, utils_1.parseSafeHTML)(description); const rootElement = document.querySelector('body'); if (rootElement) { return getDescriptionTree(rootElement); } const emptyTree = { type: 'root', text: '', children: [], }; return emptyTree; }; exports.parseDescription = parseDescription; //# sourceMappingURL=parseDescription.js.map