"use strict";
var _ParsedHTMLRewriterNode_node, _ParsedHTMLRewriterNode_doc, _ParsedHTMLRewriterElement_node, _ParsedHTMLRewriterText_text, _ParsedHTMLRewriterText_done, _ParsedHTMLRewriterComment_comm, _ParsedHTMLRewriterDocumentType_doctype, _ParsedHTMLRewriterEnd_doc;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ParsedHTMLRewriterEnd = exports.ParsedHTMLRewriterDocumentType = exports.ParsedHTMLRewriterComment = exports.ParsedHTMLRewriterText = exports.ParsedHTMLRewriterElement = exports.ParsedHTMLRewriterNode = exports.treeWalkerToIter = exports.promiseToAsyncIterable = exports.append = void 0;
const tslib_1 = require("tslib");
function append(m, k, v) {
var _a;
const vs = (_a = m.get(k)) !== null && _a !== void 0 ? _a : [];
vs.push(v);
return m.set(k, vs);
}
exports.append = append;
function promiseToAsyncIterable(promise) {
return (0, tslib_1.__asyncGenerator)(this, arguments, function* promiseToAsyncIterable_1() {
yield yield (0, tslib_1.__await)(yield (0, tslib_1.__await)(promise));
});
}
exports.promiseToAsyncIterable = promiseToAsyncIterable;
function* treeWalkerToIter(walker) {
let node = walker.nextNode();
while (node) {
yield node;
node = walker.nextNode();
}
}
exports.treeWalkerToIter = treeWalkerToIter;
/** Fragment form string function that works with linkedom. */
function fragmentFromString(document, html) {
const temp = document.createElement('template');
temp.innerHTML = html;
return temp.content;
}
function replace(document, node, content, opts) {
node === null || node === void 0 ? void 0 : node.replaceWith(...(opts === null || opts === void 0 ? void 0 : opts.html)
? fragmentFromString(document, content).childNodes // depends on DOM.Iterable
: [content]);
}
class ParsedHTMLRewriterNode {
constructor(node, document) {
_ParsedHTMLRewriterNode_node.set(this, void 0);
_ParsedHTMLRewriterNode_doc.set(this, void 0);
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterNode_node, node, "f");
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterNode_doc, document, "f");
}
get removed() { return !(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_doc, "f").contains((0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f")); }
before(content, opts) {
var _a, _b;
const before = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_doc, "f").createComment('');
(_b = (_a = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f")) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.insertBefore(before, (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f"));
replace((0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_doc, "f"), before, content, opts);
return this;
}
after(content, opts) {
var _a, _b;
const after = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_doc, "f").createComment('');
(_b = (_a = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f")) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.insertBefore(after, (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f").nextSibling);
replace((0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_doc, "f"), after, content, opts);
return this;
}
replace(content, opts) {
replace((0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_doc, "f"), (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f"), content, opts);
return this;
}
remove() {
var _a;
(_a = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterNode_node, "f")) === null || _a === void 0 ? void 0 : _a.remove();
return this;
}
}
exports.ParsedHTMLRewriterNode = ParsedHTMLRewriterNode;
_ParsedHTMLRewriterNode_node = new WeakMap(), _ParsedHTMLRewriterNode_doc = new WeakMap();
class ParsedHTMLRewriterElement extends ParsedHTMLRewriterNode {
constructor(node, document) {
super(node, document);
_ParsedHTMLRewriterElement_node.set(this, void 0);
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterElement_node, node, "f");
}
get tagName() { return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").tagName.toLowerCase(); }
get attributes() {
return [...(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").attributes].map(attr => [attr.name, attr.value]);
}
get namespaceURI() { return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").namespaceURI; }
getAttribute(name) {
return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").getAttribute(name);
}
hasAttribute(name) {
return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").hasAttribute(name);
}
setAttribute(name, value) {
(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").setAttribute(name, value);
return this;
}
removeAttribute(name) {
(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").removeAttribute(name);
return this;
}
prepend(content, opts) {
return this.before(content, opts);
}
append(content, opts) {
return this.after(content, opts);
}
setInnerContent(content, opts) {
(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f")[(opts === null || opts === void 0 ? void 0 : opts.html) ? 'innerHTML' : 'textContent'] = content;
return this;
}
removeAndKeepContent() {
var _a;
(_a = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f")) === null || _a === void 0 ? void 0 : _a.replaceWith(...(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterElement_node, "f").childNodes);
return this;
}
}
exports.ParsedHTMLRewriterElement = ParsedHTMLRewriterElement;
_ParsedHTMLRewriterElement_node = new WeakMap();
class ParsedHTMLRewriterText extends ParsedHTMLRewriterNode {
constructor(text, document) {
super(text, document);
_ParsedHTMLRewriterText_text.set(this, void 0);
_ParsedHTMLRewriterText_done.set(this, void 0);
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterText_text, text, "f");
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterText_done, text === null, "f");
}
get text() { var _a, _b; return (_b = (_a = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterText_text, "f")) === null || _a === void 0 ? void 0 : _a.textContent) !== null && _b !== void 0 ? _b : ''; }
get lastInTextNode() { return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterText_done, "f"); }
}
exports.ParsedHTMLRewriterText = ParsedHTMLRewriterText;
_ParsedHTMLRewriterText_text = new WeakMap(), _ParsedHTMLRewriterText_done = new WeakMap();
class ParsedHTMLRewriterComment extends ParsedHTMLRewriterNode {
constructor(comm, document) {
super(comm, document);
_ParsedHTMLRewriterComment_comm.set(this, void 0);
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterComment_comm, comm, "f");
}
get text() { var _a; return (_a = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterComment_comm, "f").textContent) !== null && _a !== void 0 ? _a : ''; }
set text(value) { (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterComment_comm, "f").textContent = value; }
}
exports.ParsedHTMLRewriterComment = ParsedHTMLRewriterComment;
_ParsedHTMLRewriterComment_comm = new WeakMap();
class ParsedHTMLRewriterDocumentType {
constructor(doctype) {
_ParsedHTMLRewriterDocumentType_doctype.set(this, void 0);
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterDocumentType_doctype, doctype, "f");
}
get name() { return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterDocumentType_doctype, "f").name; }
get publicId() { return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterDocumentType_doctype, "f").publicId; }
get systemId() { return (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterDocumentType_doctype, "f").systemId; }
}
exports.ParsedHTMLRewriterDocumentType = ParsedHTMLRewriterDocumentType;
_ParsedHTMLRewriterDocumentType_doctype = new WeakMap();
class ParsedHTMLRewriterEnd {
constructor(document) {
_ParsedHTMLRewriterEnd_doc.set(this, void 0);
(0, tslib_1.__classPrivateFieldSet)(this, _ParsedHTMLRewriterEnd_doc, document, "f");
}
append(content, opts) {
const after = (0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterEnd_doc, "f").createComment('');
(0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterEnd_doc, "f").insertBefore(after, null);
replace((0, tslib_1.__classPrivateFieldGet)(this, _ParsedHTMLRewriterEnd_doc, "f"), after, content, opts);
return this;
}
}
exports.ParsedHTMLRewriterEnd = ParsedHTMLRewriterEnd;
_ParsedHTMLRewriterEnd_doc = new WeakMap();
// function* ancestors(el: Node) {
// while (el.parentElement) {
// yield el.parentElement
// el = el.parentElement
// }
// }
// function root(el: Node): globalThis.HTMLElement | undefined {
// const ancs = [...ancestors(el)]
// return ancs[ancs.length - 1];
// }
// function* zip(xs: Iterable, ys: Iterable): IterableIterator<[X, Y]> {
// const xit = xs[Symbol.iterator]();
// const yit = ys[Symbol.iterator]();
// while (true) {
// const [xr, yr] = [xit.next(), yit.next()];
// if (xr.done || yr.done) break;
// yield [xr.value, yr.value];
// }
// }
// /* Checks if this element or any of its parents matches a given `selector`. */
// function matchesAncestors(el: Element | null, selector: string): Element | null {
// let curr = el;
// while (curr != null) {
// if (curr.matches(selector)) return curr;
// curr = curr.parentElement;
// }
// return null;
// }