123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.update = exports.getParse = void 0;
- var domutils_1 = require("domutils");
- var domhandler_1 = require("domhandler");
- /**
- * Get the parse function with options.
- *
- * @param parser - The parser function.
- * @returns The parse function with options.
- */
- function getParse(parser) {
- /**
- * Parse a HTML string or a node.
- *
- * @param content - The HTML string or node.
- * @param options - The parser options.
- * @param isDocument - If `content` is a document.
- * @param context - The context node in the DOM tree.
- * @returns The parsed document node.
- */
- return function parse(content, options, isDocument, context) {
- if (typeof Buffer !== 'undefined' && Buffer.isBuffer(content)) {
- content = content.toString();
- }
- if (typeof content === 'string') {
- return parser(content, options, isDocument, context);
- }
- var doc = content;
- if (!Array.isArray(doc) && (0, domhandler_1.isDocument)(doc)) {
- // If `doc` is already a root, just return it
- return doc;
- }
- // Add conent to new root element
- var root = new domhandler_1.Document([]);
- // Update the DOM using the root
- update(doc, root);
- return root;
- };
- }
- exports.getParse = getParse;
- /**
- * Update the dom structure, for one changed layer.
- *
- * @param newChilds - The new children.
- * @param parent - The new parent.
- * @returns The parent node.
- */
- function update(newChilds, parent) {
- // Normalize
- var arr = Array.isArray(newChilds) ? newChilds : [newChilds];
- // Update parent
- if (parent) {
- parent.children = arr;
- }
- else {
- parent = null;
- }
- // Update neighbors
- for (var i = 0; i < arr.length; i++) {
- var node = arr[i];
- // Cleanly remove existing nodes from their previous structures.
- if (node.parent && node.parent.children !== arr) {
- (0, domutils_1.removeElement)(node);
- }
- if (parent) {
- node.prev = arr[i - 1] || null;
- node.next = arr[i + 1] || null;
- }
- else {
- node.prev = node.next = null;
- }
- node.parent = parent;
- }
- return parent;
- }
- exports.update = update;
- //# sourceMappingURL=parse.js.map
|