152 lines
3.8 KiB
TypeScript
152 lines
3.8 KiB
TypeScript
|
import { ContainerWithChildren } from './container.js'
|
||
|
import Node from './node.js'
|
||
|
|
||
|
declare namespace Declaration {
|
||
|
export interface DeclarationRaws extends Record<string, unknown> {
|
||
|
/**
|
||
|
* The space symbols before the node. It also stores `*`
|
||
|
* and `_` symbols before the declaration (IE hack).
|
||
|
*/
|
||
|
before?: string
|
||
|
|
||
|
/**
|
||
|
* The symbols between the property and value for declarations.
|
||
|
*/
|
||
|
between?: string
|
||
|
|
||
|
/**
|
||
|
* The content of the important statement, if it is not just `!important`.
|
||
|
*/
|
||
|
important?: string
|
||
|
|
||
|
/**
|
||
|
* Declaration value with comments.
|
||
|
*/
|
||
|
value?: {
|
||
|
raw: string
|
||
|
value: string
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export interface DeclarationProps {
|
||
|
/** Whether the declaration has an `!important` annotation. */
|
||
|
important?: boolean
|
||
|
/** Name of the declaration. */
|
||
|
prop: string
|
||
|
/** Information used to generate byte-to-byte equal node string as it was in the origin input. */
|
||
|
raws?: DeclarationRaws
|
||
|
/** Value of the declaration. */
|
||
|
value: string
|
||
|
}
|
||
|
|
||
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||
|
export { Declaration_ as default }
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* It represents a class that handles
|
||
|
* [CSS declarations](https://developer.mozilla.org/en-US/docs/Web/CSS/Syntax#css_declarations)
|
||
|
*
|
||
|
* ```js
|
||
|
* Once (root, { Declaration }) {
|
||
|
* const color = new Declaration({ prop: 'color', value: 'black' })
|
||
|
* root.append(color)
|
||
|
* }
|
||
|
* ```
|
||
|
*
|
||
|
* ```js
|
||
|
* const root = postcss.parse('a { color: black }')
|
||
|
* const decl = root.first?.first
|
||
|
*
|
||
|
* decl.type //=> 'decl'
|
||
|
* decl.toString() //=> ' color: black'
|
||
|
* ```
|
||
|
*/
|
||
|
declare class Declaration_ extends Node {
|
||
|
parent: ContainerWithChildren | undefined
|
||
|
raws: Declaration.DeclarationRaws
|
||
|
|
||
|
type: 'decl'
|
||
|
|
||
|
constructor(defaults?: Declaration.DeclarationProps)
|
||
|
assign(overrides: Declaration.DeclarationProps | object): this
|
||
|
|
||
|
clone(overrides?: Partial<Declaration.DeclarationProps>): this
|
||
|
|
||
|
cloneAfter(overrides?: Partial<Declaration.DeclarationProps>): this
|
||
|
|
||
|
cloneBefore(overrides?: Partial<Declaration.DeclarationProps>): this
|
||
|
/**
|
||
|
* It represents a specificity of the declaration.
|
||
|
*
|
||
|
* If true, the CSS declaration will have an
|
||
|
* [important](https://developer.mozilla.org/en-US/docs/Web/CSS/important)
|
||
|
* specifier.
|
||
|
*
|
||
|
* ```js
|
||
|
* const root = postcss.parse('a { color: black !important; color: red }')
|
||
|
*
|
||
|
* root.first.first.important //=> true
|
||
|
* root.first.last.important //=> undefined
|
||
|
* ```
|
||
|
*/
|
||
|
get important(): boolean
|
||
|
|
||
|
set important(value: boolean)
|
||
|
/**
|
||
|
* The property name for a CSS declaration.
|
||
|
*
|
||
|
* ```js
|
||
|
* const root = postcss.parse('a { color: black }')
|
||
|
* const decl = root.first.first
|
||
|
*
|
||
|
* decl.prop //=> 'color'
|
||
|
* ```
|
||
|
*/
|
||
|
get prop(): string
|
||
|
|
||
|
set prop(value: string)
|
||
|
/**
|
||
|
* The property value for a CSS declaration.
|
||
|
*
|
||
|
* Any CSS comments inside the value string will be filtered out.
|
||
|
* CSS comments present in the source value will be available in
|
||
|
* the `raws` property.
|
||
|
*
|
||
|
* Assigning new `value` would ignore the comments in `raws`
|
||
|
* property while compiling node to string.
|
||
|
*
|
||
|
* ```js
|
||
|
* const root = postcss.parse('a { color: black }')
|
||
|
* const decl = root.first.first
|
||
|
*
|
||
|
* decl.value //=> 'black'
|
||
|
* ```
|
||
|
*/
|
||
|
get value(): string
|
||
|
set value(value: string)
|
||
|
/**
|
||
|
* It represents a getter that returns `true` if a declaration starts with
|
||
|
* `--` or `$`, which are used to declare variables in CSS and SASS/SCSS.
|
||
|
*
|
||
|
* ```js
|
||
|
* const root = postcss.parse(':root { --one: 1 }')
|
||
|
* const one = root.first.first
|
||
|
*
|
||
|
* one.variable //=> true
|
||
|
* ```
|
||
|
*
|
||
|
* ```js
|
||
|
* const root = postcss.parse('$one: 1')
|
||
|
* const one = root.first
|
||
|
*
|
||
|
* one.variable //=> true
|
||
|
* ```
|
||
|
*/
|
||
|
get variable(): boolean
|
||
|
}
|
||
|
|
||
|
declare class Declaration extends Declaration_ {}
|
||
|
|
||
|
export = Declaration
|