import * as postcss from 'postcss'; import { Container } from '../container'; import { AnyNode, Node, NodeProps } from '../node'; import * as sassInternal from '../sass-internal'; import { AnyStatement } from '../statement'; import { ComplexSelectorComponent, ComplexSelectorComponentProps } from './complex-component'; /** * A selector combinator that can separate {@link CompoundSelector}s in a {@link * ComplexSelector}. */ export type SelectorCombinator = '+' | '>' | '~'; /** * The initializer properties for {@link ComplexSelector} passed as an options * object. * * @category Selector */ export interface ComplexSelectorObjectProps extends NodeProps { leadingCombinator?: SelectorCombinator | undefined; nodes: Array; raws?: ComplexSelectorRaws; } /** * The initializer properties for {@link ComplexSelector}. * * @category Selector */ export type ComplexSelectorProps = ComplexSelectorObjectProps | ReadonlyArray | ComplexSelectorComponent | ComplexSelectorComponentProps; /** * The type of new nodes that can be passed into a complex selector. * * @category Selector */ export type NewNodeForComplexSelector = ComplexSelectorComponent | ReadonlyArray | ComplexSelectorComponentProps | ReadonlyArray | undefined; /** * Raws indicating how to precisely serialize an {@ComplexSelector}. * * @category Selector */ export interface ComplexSelectorRaws { /** * The whitespace between the leading combinator and the first component. * * This is ignored if {@link ComplexSelector.leadingCombinator} is undefined. */ between?: string; /** The whitespace after each component in the selector. */ components?: Array; } /** * A complex selector. * * A complex selector is composed of {@link ComplexSelectorComponent}s. It * selects elements based on selectors for other, related elements. * * @category Selector */ export declare class ComplexSelector extends Node implements Container { #private; readonly sassType: "complex-selector"; raws: ComplexSelectorRaws; /** This selector's leading combinator, if it has one. */ get leadingCombinator(): SelectorCombinator | undefined; set leadingCombinator(value: SelectorCombinator | undefined); private _leadingCombinator; /** The components that comprise this selector. */ get nodes(): ReadonlyArray; /** @hidden */ set nodes(nodes: Array); private _nodes; constructor(defaults?: ComplexSelectorProps); /** @hidden */ constructor(_: undefined, inner: sassInternal.ComplexSelector); clone(overrides?: Partial): this; toJSON(): object; /** @hidden */ toJSON(_: string, inputs: Map): object; append(...nodes: NewNodeForComplexSelector[]): this; each(callback: (node: ComplexSelectorComponent, index: number) => false | void): false | undefined; every(condition: (node: ComplexSelectorComponent, index: number, nodes: ReadonlyArray) => boolean): boolean; index(child: ComplexSelectorComponent | number): number; insertAfter(oldNode: ComplexSelectorComponent | number, newNode: NewNodeForComplexSelector): this; insertBefore(oldNode: ComplexSelectorComponent | number, newNode: NewNodeForComplexSelector): this; prepend(...nodes: NewNodeForComplexSelector[]): this; push(child: ComplexSelectorComponent): this; removeAll(): this; removeChild(child: ComplexSelectorComponent | number): this; some(condition: (node: ComplexSelectorComponent, index: number, nodes: ReadonlyArray) => boolean): boolean; get first(): ComplexSelectorComponent | undefined; get last(): ComplexSelectorComponent | undefined; /** @hidden */ toString(): string; /** * Normalizes a single argument declaration or list of arguments. */ private _normalize; /** Like {@link _normalize}, but also flattens a list of nodes. */ private _normalizeList; /** @hidden */ get nonStatementChildren(): ReadonlyArray>; }