123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- import Comment from './comment';
- import * as postcss from './postcss';
- import AtRule from './at-rule';
- import Node from './node';
- import Rule from './rule';
- /**
- * Containers can store any content. If you write a rule inside a rule,
- * PostCSS will parse it.
- */
- export default class Container extends Node implements postcss.Container {
- private indexes;
- private lastEach;
- /**
- * Contains the container's children.
- */
- nodes: Node[];
- /**
- * @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): any;
- toJSON(): postcss.JsonContainer;
- push(child: any): this;
- /**
- * Iterates through the container's immediate children, calling the
- * callback function for each child. If you need to recursively iterate
- * through all the container's descendant nodes, use container.walk().
- * Unlike the for {} -cycle or Array#forEach() this iterator is safe if you
- * are mutating the array of child nodes during iteration.
- * @param callback Iterator. Returning false will break iteration. Safe
- * if you are mutating the array of child nodes during iteration. PostCSS
- * will adjust the current index to match the mutations.
- */
- each(callback: (node: Node, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * node. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration. If you only need to iterate through
- * the container's immediate children, use container.each().
- * @param callback Iterator.
- */
- walk(callback: (node: Node, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * declaration. Like container.each(), this method is safe to use if you
- * are mutating arrays during iteration.
- * @param propFilter Filters declarations by property name. Only those
- * declarations whose property matches propFilter will be iterated over.
- * @param callback Called for each declaration node within the container.
- */
- walkDecls(propFilter: string | RegExp, callback?: (decl: postcss.Declaration, index: number) => any): boolean | void;
- walkDecls(callback: (decl: postcss.Declaration, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * rule. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration.
- * @param selectorFilter Filters rules by selector. If provided, iteration
- * will only happen over rules that have matching names.
- * @param callback Iterator called for each rule node within the
- * container.
- */
- walkRules(selectorFilter: string | RegExp, callback: (atRule: Rule, index: number) => any): boolean | void;
- walkRules(callback: (atRule: Rule, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * at-rule. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration.
- * @param nameFilter Filters at-rules by name. If provided, iteration will
- * only happen over at-rules that have matching names.
- * @param callback Iterator called for each at-rule node within the
- * container.
- */
- walkAtRules(nameFilter: string | RegExp, callback: (atRule: AtRule, index: number) => any): boolean | void;
- walkAtRules(callback: (atRule: AtRule, index: number) => any): boolean | void;
- /**
- * Traverses the container's descendant nodes, calling `callback` for each
- * commennt. Like container.each(), this method is safe to use if you are
- * mutating arrays during iteration.
- * @param callback Iterator called for each comment node within the container.
- */
- walkComments(callback: (comment: Comment, indexed: number) => any): void | boolean;
- /**
- * Inserts new nodes to the end of the container.
- * Because each node class is identifiable by unique properties, use the
- * following shortcuts to create nodes in insert methods:
- * root.append({ name: '@charset', params: '"UTF-8"' }); // at-rule
- * root.append({ selector: 'a' }); // rule
- * rule.append({ prop: 'color', value: 'black' }); // declaration
- * rule.append({ text: 'Comment' }) // comment
- * A string containing the CSS of the new element can also be used. This
- * approach is slower than the above shortcuts.
- * root.append('a {}');
- * root.first.append('color: black; z-index: 1');
- * @param nodes New nodes.
- * @returns This container for chaining.
- */
- append(...nodes: (Node | Object | string)[]): this;
- /**
- * Inserts new nodes to the beginning of the container.
- * Because each node class is identifiable by unique properties, use the
- * following shortcuts to create nodes in insert methods:
- * root.prepend({ name: 'charset', params: '"UTF-8"' }); // at-rule
- * root.prepend({ selector: 'a' }); // rule
- * rule.prepend({ prop: 'color', value: 'black' }); // declaration
- * rule.prepend({ text: 'Comment' }) // comment
- * A string containing the CSS of the new element can also be used. This
- * approach is slower than the above shortcuts.
- * root.prepend('a {}');
- * root.first.prepend('color: black; z-index: 1');
- * @param nodes New nodes.
- * @returns This container for chaining.
- */
- prepend(...nodes: (Node | Object | string)[]): this;
- cleanRaws(keepBetween?: boolean): void;
- /**
- * Insert newNode before oldNode within the container.
- * @param oldNode Child or child's index.
- * @returns This container for chaining.
- */
- insertBefore(oldNode: Node | number, newNode: Node | Object | string): this;
- /**
- * Insert newNode after oldNode within the container.
- * @param oldNode Child or child's index.
- * @returns This container for chaining.
- */
- insertAfter(oldNode: Node | number, newNode: Node | Object | string): this;
- /**
- * Removes the container from its parent and cleans the parent property in the
- * container and its children.
- * @returns This container for chaining.
- */
- remove(): any;
- /**
- * Removes child from the container and clean the parent properties from the
- * node and its children.
- * @param child Child or child's index.
- * @returns This container for chaining.
- */
- removeChild(child: Node | number): this;
- /**
- * Removes all children from the container and cleans their parent
- * properties.
- * @returns This container for chaining.
- */
- removeAll(): this;
- /**
- * Passes all declaration values within the container that match pattern
- * through the callback, replacing those values with the returned result of
- * callback. This method is useful if you are using a custom unit or
- * function and need to iterate through all values.
- * @param pattern Pattern that we need to replace.
- * @param options Options to speed up the search.
- * @param callbackOrReplaceValue String to replace pattern or callback
- * that will return a new value. The callback will receive the same
- * arguments as those passed to a function parameter of String#replace.
- */
- replaceValues(pattern: string | RegExp, options: {
- /**
- * Property names. The method will only search for values that match
- * regexp within declarations of listed properties.
- */
- props?: string[];
- /**
- * Used to narrow down values and speed up the regexp search. Searching
- * every single value with a regexp can be slow. If you pass a fast
- * string, PostCSS will first check whether the value contains the fast
- * string; and only if it does will PostCSS check that value against
- * regexp. For example, instead of just checking for /\d+rem/ on all
- * values, set fast: 'rem' to first check whether a value has the rem
- * unit, and only if it does perform the regexp check.
- */
- fast?: string;
- }, callbackOrReplaceValue: string | {
- (substring: string, ...args: any[]): string;
- }): Container;
- replaceValues(pattern: string | RegExp, callbackOrReplaceValue: string | {
- (substring: string, ...args: any[]): string;
- }): Container;
- /**
- * Determines whether all child nodes satisfy the specified test.
- * @param callback A function that accepts up to three arguments. The
- * every method calls the callback function for each node until the
- * callback returns false, or until the end of the array.
- * @returns True if the callback returns true for all of the container's
- * children.
- */
- every(callback: (node: Node, index: number, nodes: Node[]) => any, thisArg?: any): boolean;
- /**
- * Determines whether the specified callback returns true for any child node.
- * @param callback A function that accepts up to three arguments. The some
- * method calls the callback for each node until the callback returns true,
- * or until the end of the array.
- * @param thisArg An object to which the this keyword can refer in the
- * callback function. If thisArg is omitted, undefined is used as the
- * this value.
- * @returns True if callback returns true for (at least) one of the
- * container's children.
- */
- some(callback: (node: Node, index: number, nodes: Node[]) => boolean, thisArg?: any): boolean;
- /**
- * @param child Child of the current container.
- * @returns The child's index within the container's "nodes" array.
- */
- index(child: Node | number): number;
- /**
- * @returns The container's first child.
- */
- first: Node;
- /**
- * @returns The container's last child.
- */
- last: Node;
- protected normalize(node: Node | string, sample?: Node, type?: string | boolean): Node[];
- protected normalize(props: postcss.AtRuleNewProps | postcss.RuleNewProps | postcss.DeclarationNewProps | postcss.CommentNewProps, sample?: Node, type?: string | boolean): Node[];
- rebuild(node: Node, parent?: Container): any;
- eachInside(callback: any): any;
- eachDecl(propFilter: any, callback?: any): any;
- eachRule(selectorFilter: any, callback?: any): any;
- eachAtRule(nameFilter: any, callback?: any): any;
- eachComment(selectorFilter: any, callback?: any): any;
- semicolon: boolean;
- after: string;
- }
|