Spaces:
Paused
Paused
| ; | |
| 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 |