125 lines
3.0 KiB
TypeScript
125 lines
3.0 KiB
TypeScript
import Container from './container.js'
|
||
import Node from './node.js'
|
||
|
||
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?: {
|
||
value: string
|
||
raw: string
|
||
}
|
||
}
|
||
|
||
export interface DeclarationProps {
|
||
/** Name of the declaration. */
|
||
prop: string
|
||
/** Value of the declaration. */
|
||
value: string
|
||
/** Whether the declaration has an `!important` annotation. */
|
||
important?: boolean
|
||
/** Information used to generate byte-to-byte equal node string as it was in the origin input. */
|
||
raws?: DeclarationRaws
|
||
}
|
||
|
||
/**
|
||
* Represents a CSS declaration.
|
||
*
|
||
* ```js
|
||
* Once (root, { Declaration }) {
|
||
* let 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'
|
||
* ```
|
||
*/
|
||
export default class Declaration extends Node {
|
||
type: 'decl'
|
||
parent: Container | undefined
|
||
raws: DeclarationRaws
|
||
|
||
/**
|
||
* The declaration's property name.
|
||
*
|
||
* ```js
|
||
* const root = postcss.parse('a { color: black }')
|
||
* const decl = root.first.first
|
||
* decl.prop //=> 'color'
|
||
* ```
|
||
*/
|
||
prop: string
|
||
|
||
/**
|
||
* The declaration’s value.
|
||
*
|
||
* This value will be cleaned of comments. If the source value contained
|
||
* comments, those comments will be available in the `raws` property.
|
||
* If you have not changed the value, the result of `decl.toString()`
|
||
* will include the original raws value (comments and all).
|
||
*
|
||
* ```js
|
||
* const root = postcss.parse('a { color: black }')
|
||
* const decl = root.first.first
|
||
* decl.value //=> 'black'
|
||
* ```
|
||
*/
|
||
value: string
|
||
|
||
/**
|
||
* `true` if the declaration has an `!important` annotation.
|
||
*
|
||
* ```js
|
||
* const root = postcss.parse('a { color: black !important; color: red }')
|
||
* root.first.first.important //=> true
|
||
* root.first.last.important //=> undefined
|
||
* ```
|
||
*/
|
||
important: boolean
|
||
|
||
/**
|
||
* `true` if declaration is declaration of CSS Custom Property
|
||
* or Sass variable.
|
||
*
|
||
* ```js
|
||
* const root = postcss.parse(':root { --one: 1 }')
|
||
* let one = root.first.first
|
||
* one.variable //=> true
|
||
* ```
|
||
*
|
||
* ```js
|
||
* const root = postcss.parse('$one: 1')
|
||
* let one = root.first
|
||
* one.variable //=> true
|
||
* ```
|
||
*/
|
||
variable: boolean
|
||
|
||
constructor(defaults?: DeclarationProps)
|
||
assign(overrides: object | DeclarationProps): this
|
||
clone(overrides?: Partial<DeclarationProps>): this
|
||
cloneBefore(overrides?: Partial<DeclarationProps>): this
|
||
cloneAfter(overrides?: Partial<DeclarationProps>): this
|
||
}
|