diff options
Diffstat (limited to 'includes/external/addressbook/node_modules/parse5/dist/parser/open-element-stack.js')
-rw-r--r-- | includes/external/addressbook/node_modules/parse5/dist/parser/open-element-stack.js | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/includes/external/addressbook/node_modules/parse5/dist/parser/open-element-stack.js b/includes/external/addressbook/node_modules/parse5/dist/parser/open-element-stack.js deleted file mode 100644 index bd136ea..0000000 --- a/includes/external/addressbook/node_modules/parse5/dist/parser/open-element-stack.js +++ /dev/null @@ -1,312 +0,0 @@ -import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js'; -//Element utils -const IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]); -const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([ - ...IMPLICIT_END_TAG_REQUIRED, - $.CAPTION, - $.COLGROUP, - $.TBODY, - $.TD, - $.TFOOT, - $.TH, - $.THEAD, - $.TR, -]); -const SCOPING_ELEMENT_NS = new Map([ - [$.APPLET, NS.HTML], - [$.CAPTION, NS.HTML], - [$.HTML, NS.HTML], - [$.MARQUEE, NS.HTML], - [$.OBJECT, NS.HTML], - [$.TABLE, NS.HTML], - [$.TD, NS.HTML], - [$.TEMPLATE, NS.HTML], - [$.TH, NS.HTML], - [$.ANNOTATION_XML, NS.MATHML], - [$.MI, NS.MATHML], - [$.MN, NS.MATHML], - [$.MO, NS.MATHML], - [$.MS, NS.MATHML], - [$.MTEXT, NS.MATHML], - [$.DESC, NS.SVG], - [$.FOREIGN_OBJECT, NS.SVG], - [$.TITLE, NS.SVG], -]); -const NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]; -const TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML]; -const TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]; -const TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML]; -const TABLE_CELLS = [$.TD, $.TH]; -//Stack of open elements -export class OpenElementStack { - get currentTmplContentOrNode() { - return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; - } - constructor(document, treeAdapter, handler) { - this.treeAdapter = treeAdapter; - this.handler = handler; - this.items = []; - this.tagIDs = []; - this.stackTop = -1; - this.tmplCount = 0; - this.currentTagId = $.UNKNOWN; - this.current = document; - } - //Index of element - _indexOf(element) { - return this.items.lastIndexOf(element, this.stackTop); - } - //Update current element - _isInTemplate() { - return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; - } - _updateCurrentElement() { - this.current = this.items[this.stackTop]; - this.currentTagId = this.tagIDs[this.stackTop]; - } - //Mutations - push(element, tagID) { - this.stackTop++; - this.items[this.stackTop] = element; - this.current = element; - this.tagIDs[this.stackTop] = tagID; - this.currentTagId = tagID; - if (this._isInTemplate()) { - this.tmplCount++; - } - this.handler.onItemPush(element, tagID, true); - } - pop() { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount--; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, true); - } - replace(oldElement, newElement) { - const idx = this._indexOf(oldElement); - this.items[idx] = newElement; - if (idx === this.stackTop) { - this.current = newElement; - } - } - insertAfter(referenceElement, newElement, newElementID) { - const insertionIdx = this._indexOf(referenceElement) + 1; - this.items.splice(insertionIdx, 0, newElement); - this.tagIDs.splice(insertionIdx, 0, newElementID); - this.stackTop++; - if (insertionIdx === this.stackTop) { - this._updateCurrentElement(); - } - this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); - } - popUntilTagNamePopped(tagName) { - let targetIdx = this.stackTop + 1; - do { - targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); - } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); - this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); - } - shortenToLength(idx) { - while (this.stackTop >= idx) { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount -= 1; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, this.stackTop < idx); - } - } - popUntilElementPopped(element) { - const idx = this._indexOf(element); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilPopped(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilNumberedHeaderPopped() { - this.popUntilPopped(NAMED_HEADERS, NS.HTML); - } - popUntilTableCellPopped() { - this.popUntilPopped(TABLE_CELLS, NS.HTML); - } - popAllUpToHtmlElement() { - //NOTE: here we assume that the root <html> element is always first in the open element stack, so - //we perform this fast stack clean up. - this.tmplCount = 0; - this.shortenToLength(1); - } - _indexOfTagNames(tagNames, namespace) { - for (let i = this.stackTop; i >= 0; i--) { - if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { - return i; - } - } - return -1; - } - clearBackTo(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx + 1); - } - clearBackToTableContext() { - this.clearBackTo(TABLE_CONTEXT, NS.HTML); - } - clearBackToTableBodyContext() { - this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); - } - clearBackToTableRowContext() { - this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); - } - remove(element) { - const idx = this._indexOf(element); - if (idx >= 0) { - if (idx === this.stackTop) { - this.pop(); - } - else { - this.items.splice(idx, 1); - this.tagIDs.splice(idx, 1); - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(element, false); - } - } - } - //Search - tryPeekProperlyNestedBodyElement() { - //Properly nested <body> element (should be second element in stack). - return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null; - } - contains(element) { - return this._indexOf(element) > -1; - } - getCommonAncestor(element) { - const elementIdx = this._indexOf(element) - 1; - return elementIdx >= 0 ? this.items[elementIdx] : null; - } - isRootHtmlElementCurrent() { - return this.stackTop === 0 && this.tagIDs[0] === $.HTML; - } - //Element in scope - hasInScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (tn === tagName && ns === NS.HTML) { - return true; - } - if (SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasNumberedHeaderInScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (isNumberedHeader(tn) && ns === NS.HTML) { - return true; - } - if (SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasInListItemScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (tn === tagName && ns === NS.HTML) { - return true; - } - if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasInButtonScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (tn === tagName && ns === NS.HTML) { - return true; - } - if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasInTableScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (ns !== NS.HTML) { - continue; - } - if (tn === tagName) { - return true; - } - if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) { - return false; - } - } - return true; - } - hasTableBodyContextInTableScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (ns !== NS.HTML) { - continue; - } - if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) { - return true; - } - if (tn === $.TABLE || tn === $.HTML) { - return false; - } - } - return true; - } - hasInSelectScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (ns !== NS.HTML) { - continue; - } - if (tn === tagName) { - return true; - } - if (tn !== $.OPTION && tn !== $.OPTGROUP) { - return false; - } - } - return true; - } - //Implied end tags - generateImpliedEndTags() { - while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsThoroughly() { - while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsWithExclusion(exclusionId) { - while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } -} -//# sourceMappingURL=open-element-stack.js.map
\ No newline at end of file |