“use strict”;
const HTMLElementImpl = require(“./HTMLElement-impl”).implementation; const idlUtils = require(“../generated/utils”); const createHTMLCollection = require(“../../living/html-collection”).create; const childrenByHTMLLocalNames = require(“../helpers/traversal”).childrenByHTMLLocalNames; const DOMException = require(“../../web-idl/DOMException”); const domSymbolTree = require(“../helpers/internal-constants”).domSymbolTree; const closest = require(“../helpers/traversal”).closest;
const cellLocalNames = new Set([“td”, “th”]);
class HTMLTableRowElementImpl extends HTMLElementImpl {
get cells() { if (!this._cells) { this._cells = createHTMLCollection(this, () => childrenByHTMLLocalNames(this, cellLocalNames)); } return this._cells; } get rowIndex() { const table = closest(this, "table"); return table ? Array.prototype.indexOf.call(table.rows, idlUtils.wrapperForImpl(this)) : -1; } get sectionRowIndex() { const parent = domSymbolTree.parent(this); if (parent === null) { return -1; } const rows = parent.rows; if (!rows) { return -1; } return Array.prototype.indexOf.call(rows, idlUtils.wrapperForImpl(this)); } insertCell(index) { const td = this._ownerDocument.createElement("TD"); const cells = this.cells; if (index < -1 || index > cells.length) { throw new DOMException(DOMException.INDEX_SIZE_ERR); } if (index === -1 || index === cells.length) { this.appendChild(td); } else { const ref = idlUtils.implForWrapper(cells[index]); this.insertBefore(td, ref); } return td; } deleteCell(index) { const cells = this.cells; if (index === -1) { index = cells.length - 1; } if (index < 0 || index >= cells.length) { throw new DOMException(DOMException.INDEX_SIZE_ERR); } const td = idlUtils.implForWrapper(cells[index]); this.removeChild(td); }
}
module.exports = {
implementation: HTMLTableRowElementImpl
};