| /** |
| * Resolve nested selectors following the CSS nesting specification. |
| * |
| * @example |
| * |
| * ```js |
| * import { resolveNestedSelector } from '@csstools/selector-resolve-nested'; |
| * import parser from 'postcss-selector-parser'; |
| * |
| * const selector = parser().astSync('.foo &'); |
| * const parent = parser().astSync('.bar'); |
| * |
| * // .foo .bar |
| * console.log( |
| * resolveNestedSelector(selector, parent).toString() |
| * ) |
| * ``` |
| * |
| * @packageDocumentation |
| */ |
| |
| import type { Root } from 'postcss-selector-parser'; |
| |
| /** |
| * Flatten a nested selector against a given parent selector. |
| * |
| * ⚠️ This is not a method to generate the equivalent un-nested selector. |
| * It is purely a method to construct a single selector AST that contains the parts of both the current and parent selector. |
| * It will not have the correct specificity and it will not match the right elements when used as a selector. |
| * It will not always serialize to a valid selector. |
| * |
| * @param selector - The selector to resolve. |
| * @param parentSelector - The parent selector to resolve against. |
| * @returns The resolved selector. |
| */ |
| export declare function flattenNestedSelector(selector: Root, parentSelector: Root): Root; |
| |
| /** |
| * Resolve a nested selector against a given parent selector. |
| * |
| * @param selector - The selector to resolve. |
| * @param parentSelector - The parent selector to resolve against. |
| * @param options - Change how resolving happens. |
| * @returns The resolved selector. |
| */ |
| export declare function resolveNestedSelector(selector: Root, parentSelector: Root, options?: ResolveOptions): Root; |
| |
| export declare interface ResolveOptions { |
| /** |
| * If implicit `&` selectors should be prepended to the selector before resolving |
| */ |
| ignoreImplicitNesting: boolean; |
| } |
| |
| export { } |