127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import Container, {
 | 
						||
  ContainerProps,
 | 
						||
  ContainerWithChildren
 | 
						||
} from './container.js'
 | 
						||
 | 
						||
declare namespace Rule {
 | 
						||
  export interface RuleRaws extends Record<string, unknown> {
 | 
						||
    /**
 | 
						||
     * The space symbols after the last child of the node to the end of the node.
 | 
						||
     */
 | 
						||
    after?: string
 | 
						||
 | 
						||
    /**
 | 
						||
     * The space symbols before the node. It also stores `*`
 | 
						||
     * and `_` symbols before the declaration (IE hack).
 | 
						||
     */
 | 
						||
    before?: string
 | 
						||
 | 
						||
    /**
 | 
						||
     * The symbols between the selector and `{` for rules.
 | 
						||
     */
 | 
						||
    between?: string
 | 
						||
 | 
						||
    /**
 | 
						||
     * Contains the text of the semicolon after this rule.
 | 
						||
     */
 | 
						||
    ownSemicolon?: string
 | 
						||
 | 
						||
    /**
 | 
						||
     * The rule’s selector with comments.
 | 
						||
     */
 | 
						||
    selector?: {
 | 
						||
      raw: string
 | 
						||
      value: string
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * Contains `true` if the last child has an (optional) semicolon.
 | 
						||
     */
 | 
						||
    semicolon?: boolean
 | 
						||
  }
 | 
						||
 | 
						||
  export type RuleProps = {
 | 
						||
    /** Information used to generate byte-to-byte equal node string as it was in the origin input. */
 | 
						||
    raws?: RuleRaws
 | 
						||
  } & (
 | 
						||
      | {
 | 
						||
          /** Selector or selectors of the rule. */
 | 
						||
          selector: string
 | 
						||
          selectors?: never
 | 
						||
        }
 | 
						||
      | {
 | 
						||
          selector?: never
 | 
						||
          /** Selectors of the rule represented as an array of strings. */
 | 
						||
          selectors: readonly string[]
 | 
						||
        }
 | 
						||
    ) & ContainerProps
 | 
						||
 | 
						||
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
 | 
						||
  export { Rule_ as default }
 | 
						||
}
 | 
						||
 | 
						||
/**
 | 
						||
 * Represents a CSS rule: a selector followed by a declaration block.
 | 
						||
 *
 | 
						||
 * ```js
 | 
						||
 * Once (root, { Rule }) {
 | 
						||
 *   let a = new Rule({ selector: 'a' })
 | 
						||
 *   a.append(…)
 | 
						||
 *   root.append(a)
 | 
						||
 * }
 | 
						||
 * ```
 | 
						||
 *
 | 
						||
 * ```js
 | 
						||
 * const root = postcss.parse('a{}')
 | 
						||
 * const rule = root.first
 | 
						||
 * rule.type       //=> 'rule'
 | 
						||
 * rule.toString() //=> 'a{}'
 | 
						||
 * ```
 | 
						||
 */
 | 
						||
declare class Rule_ extends Container {
 | 
						||
  nodes: NonNullable<Container['nodes']>
 | 
						||
  parent: ContainerWithChildren | undefined
 | 
						||
  raws: Rule.RuleRaws
 | 
						||
  type: 'rule'
 | 
						||
  /**
 | 
						||
   * The rule’s full selector represented as a string.
 | 
						||
   *
 | 
						||
   * ```js
 | 
						||
   * const root = postcss.parse('a, b { }')
 | 
						||
   * const rule = root.first
 | 
						||
   * rule.selector //=> 'a, b'
 | 
						||
   * ```
 | 
						||
   */
 | 
						||
  get selector(): string
 | 
						||
 | 
						||
  set selector(value: string)
 | 
						||
  /**
 | 
						||
   * An array containing the rule’s individual selectors.
 | 
						||
   * Groups of selectors are split at commas.
 | 
						||
   *
 | 
						||
   * ```js
 | 
						||
   * const root = postcss.parse('a, b { }')
 | 
						||
   * const rule = root.first
 | 
						||
   *
 | 
						||
   * rule.selector  //=> 'a, b'
 | 
						||
   * rule.selectors //=> ['a', 'b']
 | 
						||
   *
 | 
						||
   * rule.selectors = ['a', 'strong']
 | 
						||
   * rule.selector //=> 'a, strong'
 | 
						||
   * ```
 | 
						||
   */
 | 
						||
  get selectors(): string[]
 | 
						||
 | 
						||
  set selectors(values: string[])
 | 
						||
 | 
						||
  constructor(defaults?: Rule.RuleProps)
 | 
						||
  assign(overrides: object | Rule.RuleProps): this
 | 
						||
  clone(overrides?: Partial<Rule.RuleProps>): this
 | 
						||
  cloneAfter(overrides?: Partial<Rule.RuleProps>): this
 | 
						||
  cloneBefore(overrides?: Partial<Rule.RuleProps>): this
 | 
						||
}
 | 
						||
 | 
						||
declare class Rule extends Rule_ {}
 | 
						||
 | 
						||
export = Rule
 |