57 lines
1.3 KiB
TypeScript
57 lines
1.3 KiB
TypeScript
|
import Container from './container.js'
|
|||
|
import Node, { NodeProps } from './node.js'
|
|||
|
|
|||
|
interface CommentRaws extends Record<string, unknown> {
|
|||
|
/**
|
|||
|
* The space symbols before the node.
|
|||
|
*/
|
|||
|
before?: string
|
|||
|
|
|||
|
/**
|
|||
|
* The space symbols between `/*` and the comment’s text.
|
|||
|
*/
|
|||
|
left?: string
|
|||
|
|
|||
|
/**
|
|||
|
* The space symbols between the comment’s text.
|
|||
|
*/
|
|||
|
right?: string
|
|||
|
}
|
|||
|
|
|||
|
export interface CommentProps extends NodeProps {
|
|||
|
/** Content of the comment. */
|
|||
|
text: string
|
|||
|
/** Information used to generate byte-to-byte equal node string as it was in the origin input. */
|
|||
|
raws?: CommentRaws
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Represents a comment between declarations or statements (rule and at-rules).
|
|||
|
*
|
|||
|
* ```js
|
|||
|
* Once (root, { Comment }) {
|
|||
|
* let note = new Comment({ text: 'Note: …' })
|
|||
|
* root.append(note)
|
|||
|
* }
|
|||
|
* ```
|
|||
|
*
|
|||
|
* Comments inside selectors, at-rule parameters, or declaration values
|
|||
|
* will be stored in the `raws` properties explained above.
|
|||
|
*/
|
|||
|
export default class Comment extends Node {
|
|||
|
type: 'comment'
|
|||
|
parent: Container | undefined
|
|||
|
raws: CommentRaws
|
|||
|
|
|||
|
/**
|
|||
|
* The comment's text.
|
|||
|
*/
|
|||
|
text: string
|
|||
|
|
|||
|
constructor(defaults?: CommentProps)
|
|||
|
assign(overrides: object | CommentProps): this
|
|||
|
clone(overrides?: Partial<CommentProps>): this
|
|||
|
cloneBefore(overrides?: Partial<CommentProps>): this
|
|||
|
cloneAfter(overrides?: Partial<CommentProps>): this
|
|||
|
}
|