postcss-logical-polyfill
Version:
A PostCSS plugin that provides physical property polyfills for CSS logical properties with intelligent direction-aware selector handling, block-direction optimization, and extended logical property support via shim system
43 lines (42 loc) • 1.75 kB
TypeScript
/**
* Core selector utility functions for handling direction-specific CSS selectors
*
* This module provides two main functions:
* - detectDirection: Determine the direction context of a CSS selector
* - generateSelector: Generate a new selector for a specific direction context
*/
/**
* Configuration for direction selector detection and generation
*/
export interface DirectionConfig {
ltr?: string;
rtl?: string;
}
/**
* Detect the direction context of a CSS selector
*
* @param selector - The CSS selector to analyze
* @param config - Configuration containing custom direction selectors
* @returns The detected direction: 'ltr', 'rtl', or 'none'
*
* @example
* detectDirection('.button', { ltr: '.ltr', rtl: '.rtl' }) // 'none'
* detectDirection('.ltr .button', { ltr: '.ltr', rtl: '.rtl' }) // 'ltr'
* detectDirection('[dir="rtl"] .button') // 'rtl'
* detectDirection('.theme.rtl .button', { rtl: '.rtl' }) // 'rtl'
*/
export declare function detectDirection(selector: string, config?: DirectionConfig): 'ltr' | 'rtl' | 'none';
/**
* Generate a new selector for a specific direction context
*
* @param selector - The original CSS selector
* @param direction - The target direction: 'ltr' or 'rtl'
* @param config - Configuration containing custom direction selectors
* @returns The generated selector with appropriate direction context
*
* @example
* generateSelector('.button', 'ltr', { ltr: '.ltr' }) // '.ltr .button'
* generateSelector('.ltr .button', 'rtl', { ltr: '.ltr', rtl: '.rtl' }) // '.rtl .button'
* generateSelector('[dir="ltr"] .button', 'rtl') // '[dir="rtl"] .button'
*/
export declare function generateSelector(selector: string, direction: 'ltr' | 'rtl', config?: DirectionConfig): string;