UNPKG

@zougui/common.furaffinity

Version:

78 lines 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.elementParsers = exports.parseTextElement = exports.parseUnknownElement = exports.parseAElement = exports.parseBrElement = exports.parseTextNode = void 0; const common_url_utils_1 = require("@zougui/common.url-utils"); const href_1 = require("./href"); const dom_1 = require("./dom"); const parseTextNode = (data) => { return { type: 'text', text: data.node.textContent || '', }; }; exports.parseTextNode = parseTextNode; const parseBrElement = (data, state) => { state.elementIndex++; return { type: 'text', text: '\n', }; }; exports.parseBrElement = parseBrElement; const parseAElement = (data, state) => { var _a, _b, _c, _d; state.elementIndex++; if (!data.element) { return; } const img = Array.from(data.element.children).find((node) => { return (0, dom_1.getNodeName)(node) === 'img'; }); const href = (_a = data.element.attributes.getNamedItem('href')) === null || _a === void 0 ? void 0 : _a.value; const fullHref = href && (0, href_1.getFullHref)(href, 'https://furaffinity.net'); const linkNode = { type: 'link', href: fullHref, text: data.node.textContent || '', }; if (!img) { return linkNode; } const src = (_b = img.attributes.getNamedItem('src')) === null || _b === void 0 ? void 0 : _b.value; const alt = (_c = img.attributes.getNamedItem('alt')) === null || _c === void 0 ? void 0 : _c.value; const title = (_d = img.attributes.getNamedItem('title')) === null || _d === void 0 ? void 0 : _d.value; return Object.assign(Object.assign({}, linkNode), { src: src && (0, common_url_utils_1.secureHttpProtocol)(src), alt, title }); }; exports.parseAElement = parseAElement; const parseUnknownElement = (data, state, parseElement) => { var _a; state.elementIndex++; const attributes = {}; for (const attribute of ((_a = data.element) === null || _a === void 0 ? void 0 : _a.attributes) || []) { attributes[attribute.name] = attribute.value; } return { type: 'unknown', text: data.node.textContent || '', tagName: (0, dom_1.getNodeName)(data.node), textAlign: data.element && (0, dom_1.getTextAlign)(data.element), attributes, children: data.element && parseElement(data.element), }; }; exports.parseUnknownElement = parseUnknownElement; const parseTextElement = (data, state, parseElement) => { state.elementIndex++; return (0, dom_1.getElementNode)(data.node, data.element, parseElement); }; exports.parseTextElement = parseTextElement; exports.elementParsers = { '#text': exports.parseTextNode, br: exports.parseBrElement, a: exports.parseAElement, unknown: exports.parseUnknownElement, span: exports.parseTextElement, strong: exports.parseTextElement, }; //# sourceMappingURL=elementParsers.js.map