import Container from './container'; import CssSyntaxError from './css-syntax-error'; import * as postcss from './postcss'; import Result from './result'; export default class Node implements postcss.Node { /** * Returns a string representing the node's type. Possible values are * root, atrule, rule, decl or comment. */ type: string; /** * Unique node ID */ id: string; /** * Contains information to generate byte-to-byte equal node string as it * was in origin input. */ raws: postcss.NodeRaws; /** * Returns the node's parent node. */ parent: Container; /** * Returns the input source of the node. The property is used in source map * generation. If you create a node manually (e.g., with postcss.decl() ), * that node will not have a source property and will be absent from the * source map. For this reason, the plugin developer should consider cloning * nodes to create new ones (in which case the new node's source will * reference the original, cloned node) or setting the source property * manually. */ source: postcss.NodeSource; constructor(defaults?: Object); /** * This method produces very useful error messages. If present, an input * source map will be used to get the original position of the source, even * from a previous compilation step (e.g., from Sass compilation). * @returns The original position of the node in the source, showing line * and column numbers and also a small excerpt to facilitate debugging. */ error( /** * Error description. */ message: string, options?: postcss.NodeErrorOptions): CssSyntaxError; /** * Creates an instance of Warning and adds it to messages. This method is * provided as a convenience wrapper for Result#warn. * Note that `opts.node` is automatically passed to Result#warn for you. * @param result The result that will receive the warning. * @param text Warning message. It will be used in the `text` property of * the message object. * @param opts Properties to assign to the message object. */ warn(result: Result, text: string, opts?: postcss.WarningOptions): void; /** * Removes the node from its parent and cleans the parent property in the * node and its children. * @returns This node for chaining. */ remove(): this; /** * @returns A CSS string representing the node. */ toString(stringifier?: any): string; /** * @param overrides New properties to override in the clone. * @returns A clone of this node. The node and its (cloned) children will * have a clean parent and code style properties. */ clone(overrides?: Object): Node; /** * Shortcut to clone the node and insert the resulting cloned node before * the current node. * @param overrides New Properties to override in the clone. * @returns The cloned node. */ cloneBefore(overrides?: Object): Node; /** * Shortcut to clone the node and insert the resulting cloned node after * the current node. * @param overrides New Properties to override in the clone. * @returns The cloned node. */ cloneAfter(overrides?: Object): Node; /** * Inserts node(s) before the current node and removes the current node. * @returns This node for chaining. */ replaceWith(...nodes: (Node | Object)[]): this; /** * Removes the node from its current parent and inserts it at the end of * newParent. This will clean the before and after code style properties * from the node and replace them with the indentation style of newParent. * It will also clean the between property if newParent is in another Root. * @param newParent Where the current node will be moved. * @returns This node for chaining. */ moveTo(newParent: Container): this; /** * Removes the node from its current parent and inserts it into a new * parent before otherNode. This will also clean the node's code style * properties just as it would in node.moveTo(newParent). * @param otherNode Will be after the current node after moving. * @returns This node for chaining. */ moveBefore(otherNode: Node): this; /** * Removes the node from its current parent and inserts it into a new * parent after otherNode. This will also clean the node's code style * properties just as it would in node.moveTo(newParent). * @param otherNode Will be before the current node after moving. * @returns This node for chaining. */ moveAfter(otherNode: Node): this; /** * @returns The next child of the node's parent; or, returns undefined if * the current node is the last child. */ next(): Node; /** * @returns The previous child of the node's parent; or, returns undefined * if the current node is the first child. */ prev(): Node; toJSON(): postcss.JsonNode; /** * @param prop Name or code style property. * @param defaultType Name of default value. It can be easily missed if the * value is the same as prop. * @returns A code style property value. If the node is missing the code * style property (because the node was manually built or cloned), PostCSS * will try to autodetect the code style property by looking at other nodes * in the tree. */ raw(prop: string, defaultType?: string): any; /** * @returns The Root instance of the node's tree. */ root(): any; cleanRaws(keepBetween?: boolean): void; positionInside(index: number): { line: number; column: number; }; positionBy(options: any): { column: number; line: number; }; /** * Deprecated. Use Node#remove. */ removeSelf(): void; replace(nodes: any): this; style(prop: string, defaultType?: string): any; cleanStyles(keepBetween?: boolean): void; before: string; between: string; }