import type { Selector } from "css-what";
|
export declare type InternalSelector = Selector | {
|
type: "_flexibleDescendant";
|
};
|
export declare type Predicate<Value> = (v: Value) => boolean;
|
export interface Adapter<Node, ElementNode extends Node> {
|
/**
|
* Is the node a tag?
|
*/
|
isTag: (node: Node) => node is ElementNode;
|
/**
|
* Does at least one of passed element nodes pass the test predicate?
|
*/
|
existsOne: (test: Predicate<ElementNode>, elems: Node[]) => boolean;
|
/**
|
* Get the attribute value.
|
*/
|
getAttributeValue: (elem: ElementNode, name: string) => string | undefined;
|
/**
|
* Get the node's children
|
*/
|
getChildren: (node: Node) => Node[];
|
/**
|
* Get the name of the tag
|
*/
|
getName: (elem: ElementNode) => string;
|
/**
|
* Get the parent of the node
|
*/
|
getParent: (node: ElementNode) => ElementNode | null;
|
/**
|
* Get the siblings of the node. Note that unlike jQuery's `siblings` method,
|
* this is expected to include the current node as well
|
*/
|
getSiblings: (node: Node) => Node[];
|
/**
|
* Returns the previous element sibling of a node.
|
*/
|
prevElementSibling?: (node: Node) => ElementNode | null;
|
/**
|
* Get the text content of the node, and its children if it has any.
|
*/
|
getText: (node: Node) => string;
|
/**
|
* Does the element have the named attribute?
|
*/
|
hasAttrib: (elem: ElementNode, name: string) => boolean;
|
/**
|
* Takes an array of nodes, and removes any duplicates, as well as any
|
* nodes whose ancestors are also in the array.
|
*/
|
removeSubsets: (nodes: Node[]) => Node[];
|
/**
|
* Finds all of the element nodes in the array that match the test predicate,
|
* as well as any of their children that match it.
|
*/
|
findAll: (test: Predicate<ElementNode>, nodes: Node[]) => ElementNode[];
|
/**
|
* Finds the first node in the array that matches the test predicate, or one
|
* of its children.
|
*/
|
findOne: (test: Predicate<ElementNode>, elems: Node[]) => ElementNode | null;
|
/**
|
* The adapter can also optionally include an equals method, if your DOM
|
* structure needs a custom equality test to compare two objects which refer
|
* to the same underlying node. If not provided, `css-select` will fall back to
|
* `a === b`.
|
*/
|
equals?: (a: Node, b: Node) => boolean;
|
/**
|
* Is the element in hovered state?
|
*/
|
isHovered?: (elem: ElementNode) => boolean;
|
/**
|
* Is the element in visited state?
|
*/
|
isVisited?: (elem: ElementNode) => boolean;
|
/**
|
* Is the element in active state?
|
*/
|
isActive?: (elem: ElementNode) => boolean;
|
}
|
export interface Options<Node, ElementNode extends Node> {
|
/**
|
* When enabled, tag names will be case-sensitive.
|
*
|
* @default false
|
*/
|
xmlMode?: boolean;
|
/**
|
* Lower-case attribute names.
|
*
|
* @default !xmlMode
|
*/
|
lowerCaseAttributeNames?: boolean;
|
/**
|
* Lower-case tag names.
|
*
|
* @default !xmlMode
|
*/
|
lowerCaseTags?: boolean;
|
/**
|
* Is the document in quirks mode?
|
*
|
* This will lead to .className and #id being case-insensitive.
|
*
|
* @default false
|
*/
|
quirksMode?: boolean;
|
/**
|
* The last function in the stack, will be called with the last element
|
* that's looked at.
|
*/
|
rootFunc?: (element: ElementNode) => boolean;
|
/**
|
* The adapter to use when interacting with the backing DOM structure. By
|
* default it uses the `domutils` module.
|
*/
|
adapter?: Adapter<Node, ElementNode>;
|
/**
|
* The context of the current query. Used to limit the scope of searches.
|
* Can be matched directly using the `:scope` pseudo-selector.
|
*/
|
context?: Node | Node[];
|
/**
|
* Allow css-select to cache results for some selectors, sometimes greatly
|
* improving querying performance. Disable this if your document can
|
* change in between queries with the same compiled selector.
|
*
|
* @default true
|
*/
|
cacheResults?: boolean;
|
}
|
export interface InternalOptions<Node, ElementNode extends Node> extends Options<Node, ElementNode> {
|
adapter: Adapter<Node, ElementNode>;
|
equals: (a: Node, b: Node) => boolean;
|
}
|
export interface CompiledQuery<ElementNode> {
|
(node: ElementNode): boolean;
|
shouldTestNextSiblings?: boolean;
|
}
|
export declare type Query<ElementNode> = string | CompiledQuery<ElementNode> | Selector[][];
|
export declare type CompileToken<Node, ElementNode extends Node> = (token: InternalSelector[][], options: InternalOptions<Node, ElementNode>, context?: Node[] | Node) => CompiledQuery<ElementNode>;
|
//# sourceMappingURL=types.d.ts.map
|