chore(css selector): temporarily remove light dom shortcut (#2008)
This commit is contained in:
parent
8aab725813
commit
f662686fcd
|
|
@ -81,26 +81,28 @@ export function createCSSEngine(shadow: boolean): SelectorEngine {
|
||||||
},
|
},
|
||||||
|
|
||||||
query(root: SelectorRoot, selector: string): Element | undefined {
|
query(root: SelectorRoot, selector: string): Element | undefined {
|
||||||
const simple = root.querySelector(selector);
|
// TODO: uncomment for performance.
|
||||||
if (simple)
|
// const simple = root.querySelector(selector);
|
||||||
return simple;
|
// if (simple)
|
||||||
if (!shadow)
|
// return simple;
|
||||||
return;
|
// if (!shadow)
|
||||||
|
// return;
|
||||||
const parts = split(selector);
|
const parts = split(selector);
|
||||||
if (!parts.length)
|
if (!parts.length)
|
||||||
return;
|
return;
|
||||||
parts.reverse();
|
parts.reverse();
|
||||||
return queryShadowInternal(root, root, parts);
|
return queryShadowInternal(root, root, parts, shadow);
|
||||||
},
|
},
|
||||||
|
|
||||||
queryAll(root: SelectorRoot, selector: string): Element[] {
|
queryAll(root: SelectorRoot, selector: string): Element[] {
|
||||||
if (!shadow)
|
// TODO: uncomment for performance.
|
||||||
return Array.from(root.querySelectorAll(selector));
|
// if (!shadow)
|
||||||
|
// return Array.from(root.querySelectorAll(selector));
|
||||||
const result: Element[] = [];
|
const result: Element[] = [];
|
||||||
const parts = split(selector);
|
const parts = split(selector);
|
||||||
if (parts.length) {
|
if (parts.length) {
|
||||||
parts.reverse();
|
parts.reverse();
|
||||||
queryShadowAllInternal(root, root, parts, result);
|
queryShadowAllInternal(root, root, parts, shadow, result);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -109,15 +111,17 @@ export function createCSSEngine(shadow: boolean): SelectorEngine {
|
||||||
return engine;
|
return engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
function queryShadowInternal(boundary: SelectorRoot, root: SelectorRoot, parts: string[]): Element | undefined {
|
function queryShadowInternal(boundary: SelectorRoot, root: SelectorRoot, parts: string[], shadow: boolean): Element | undefined {
|
||||||
const matching = root.querySelectorAll(parts[0]);
|
const matching = root.querySelectorAll(parts[0]);
|
||||||
for (let i = 0; i < matching.length; i++) {
|
for (let i = 0; i < matching.length; i++) {
|
||||||
const element = matching[i];
|
const element = matching[i];
|
||||||
if (parts.length === 1 || matches(element, parts, boundary))
|
if (parts.length === 1 || matches(element, parts, boundary))
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
if (!shadow)
|
||||||
|
return;
|
||||||
if ((root as Element).shadowRoot) {
|
if ((root as Element).shadowRoot) {
|
||||||
const child = queryShadowInternal(boundary, (root as Element).shadowRoot!, parts);
|
const child = queryShadowInternal(boundary, (root as Element).shadowRoot!, parts, shadow);
|
||||||
if (child)
|
if (child)
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
|
@ -125,27 +129,27 @@ function queryShadowInternal(boundary: SelectorRoot, root: SelectorRoot, parts:
|
||||||
for (let i = 0; i < elements.length; i++) {
|
for (let i = 0; i < elements.length; i++) {
|
||||||
const element = elements[i];
|
const element = elements[i];
|
||||||
if (element.shadowRoot) {
|
if (element.shadowRoot) {
|
||||||
const child = queryShadowInternal(boundary, element.shadowRoot, parts);
|
const child = queryShadowInternal(boundary, element.shadowRoot, parts, shadow);
|
||||||
if (child)
|
if (child)
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function queryShadowAllInternal(boundary: SelectorRoot, root: SelectorRoot, parts: string[], result: Element[]) {
|
function queryShadowAllInternal(boundary: SelectorRoot, root: SelectorRoot, parts: string[], shadow: boolean, result: Element[]) {
|
||||||
const matching = root.querySelectorAll(parts[0]);
|
const matching = root.querySelectorAll(parts[0]);
|
||||||
for (let i = 0; i < matching.length; i++) {
|
for (let i = 0; i < matching.length; i++) {
|
||||||
const element = matching[i];
|
const element = matching[i];
|
||||||
if (parts.length === 1 || matches(element, parts, boundary))
|
if (parts.length === 1 || matches(element, parts, boundary))
|
||||||
result.push(element);
|
result.push(element);
|
||||||
}
|
}
|
||||||
if ((root as Element).shadowRoot)
|
if (shadow && (root as Element).shadowRoot)
|
||||||
queryShadowAllInternal(boundary, (root as Element).shadowRoot!, parts, result);
|
queryShadowAllInternal(boundary, (root as Element).shadowRoot!, parts, shadow, result);
|
||||||
const elements = root.querySelectorAll('*');
|
const elements = root.querySelectorAll('*');
|
||||||
for (let i = 0; i < elements.length; i++) {
|
for (let i = 0; i < elements.length; i++) {
|
||||||
const element = elements[i];
|
const element = elements[i];
|
||||||
if (element.shadowRoot)
|
if (shadow && element.shadowRoot)
|
||||||
queryShadowAllInternal(boundary, element.shadowRoot, parts, result);
|
queryShadowAllInternal(boundary, element.shadowRoot, parts, shadow, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue