### Import : ```js const CSSUtils = brackets.getModule("language/CSSUtils") ``` ## CodeMirror Set of utilities for simple parsing of CSS text. **Kind**: global variable ## SELECTOR : string CSS selector, used to target specific elements **Kind**: global constant ## PROP\_NAME : string name of the property **Kind**: global constant ## PROP\_VALUE : string value of the specified property **Kind**: global constant ## IMPORT\_URL : string url for import **Kind**: global constant ## isCSSPreprocessorFile(filePath) ⇒ boolean Determines if the given path is a CSS preprocessor file that CSSUtils supports. **Kind**: global function **Returns**: boolean - true if LanguageManager identifies filePath as less or scss language. | Param | Type | Description | | --- | --- | --- | | filePath | string | Absolute path to the file. | ## getInfoAtPos(editor, constPos) ⇒ Object Returns a context info object for the given cursor position **Kind**: global function **Returns**: Object - A CSS context info object. | Param | Type | Description | | --- | --- | --- | | editor | Editor | | | constPos | Object | A CM pos (likely from editor.getCursorPos()) | ### getInfoAtPos.\_contextCM We will use this CM to cook css context in case of style attribute value as CM in htmlmixed mode doesn't yet identify this as css context. We provide a no-op display function to run CM without a DOM head. **Kind**: inner property of [getInfoAtPos](#getInfoAtPos) ## getCompleteSelectors(info, [useGroup]) ⇒ string Return a string that shows the literal parent hierarchy of the selector in info. **Kind**: global function **Returns**: string - the literal parent hierarchy of the selector | Param | Type | Description | | --- | --- | --- | | info | [SelectorInfo](#SelectorInfo) | | | [useGroup] | boolean | true to append selectorGroup instead of selector | ## extractAllSelectors(text, documentMode) ⇒ [Array.<SelectorInfo>](#SelectorInfo) Extracts all CSS selectors from the given text Returns an array of SelectorInfo. Each SelectorInfo is an object with the following properties: selector: the text of the selector (note: comma separated selector groups like "h1, h2" are broken into separate selectors) ruleStartLine: line in the text where the rule (including preceding comment) appears ruleStartChar: column in the line where the rule (including preceding comment) starts selectorStartLine: line in the text where the selector appears selectorStartChar: column in the line where the selector starts selectorEndLine: line where the selector ends selectorEndChar: column where the selector ends selectorGroupStartLine: line where the comma-separated selector group (e.g. .foo, .bar, .baz) starts that this selector (e.g. .baz) is part of. Particularly relevant for groups that are on multiple lines. selectorGroupStartChar: column in line where the selector group starts. selectorGroup: the entire selector group containing this selector, or undefined if there is only one selector in the rule. declListStartLine: line where the declaration list for the rule starts declListStartChar: column in line where the declaration list for the rule starts declListEndLine: line where the declaration list for the rule ends declListEndChar: column in the line where the declaration list for the rule ends level: the level of the current selector including any containing @media block in the nesting level count. Use this property with caution since it is primarily for internal parsing use. For example, two sibling selectors may have different levels if one of them is nested inside an @media block and it should not be used for sibling info. parentSelectors: all ancestor selectors separated with '/' if the current selector is a nested one **Kind**: global function **Returns**: [Array.<SelectorInfo>](#SelectorInfo) - Array with objects specifying selectors. | Param | Type | Description | | --- | --- | --- | | text | string | CSS text to extract from | | documentMode | string | language mode of the document that text belongs to, default to css if undefined. | ## findMatchingRules(selector, htmlDocument) ⇒ $.Promise Return all rules matching the specified selector. For now, we only look at the rightmost simple selector. For example, searching for ".foo" will match these rules: .foo {} div .foo {} div.foo {} div .foo[bar="42"] {} div .foo:hovered {} div .foo::first-child but will *not* match these rules: .foobar {} .foo .bar {} div .foo .bar {} .foo.bar {} **Kind**: global function **Returns**: $.Promise - that will be resolved with an Array of objects containing the source document, start line, and end line (0-based, inclusive range) for each matching declaration list. Does not addRef() the documents returned in the array. | Param | Type | Description | | --- | --- | --- | | selector | string | The selector to match. This can be a tag selector, class selector or id selector | | htmlDocument | Document | An HTML file for context (so we can search 'style' blocks) | ## findSelectorAtDocumentPos(editor, pos) ⇒ string Returns the selector(s) of the rule at the specified document pos, or "" if the position is is not within a style rule. **Kind**: global function **Returns**: string - Selector(s) for the rule at the specified position, or "" if the position is not within a style rule. If the rule has multiple selectors, a comma-separated selector string is returned. | Param | Type | Description | | --- | --- | --- | | editor | Editor | Editor to search | | pos | Object | Position to search | ## reduceStyleSheetForRegExParsing(content) ⇒ string Reduces the style sheet by removing comments and strings so that the content can be parsed using a regular expression **Kind**: global function **Returns**: string - reduced content | Param | Type | Description | | --- | --- | --- | | content | string | to reduce | ## addRuleToDocument(doc, selector, useTabChar, indentUnit) ⇒ Object Adds a new rule to the end of the given document, and returns the range of the added rule and the position of the cursor on the indented blank line within it. Note that the range will not include all the inserted text (we insert extra newlines before and after the rule). **Kind**: global function **Returns**: Object - The range of the inserted rule and the location where the cursor should be placed. | Param | Type | Description | | --- | --- | --- | | doc | Document | The document to insert the rule into. | | selector | string | The selector to use for the given rule. | | useTabChar | boolean | Whether to indent with a tab. | | indentUnit | number | If useTabChar is false, how many spaces to indent with. | ## consolidateRules() In the given rule array (as returned by `findMatchingRules()`), if multiple rules in a row refer to the same rule (because there were multiple matching selectors), eliminate the redundant rules. Also, always use the selector group if available instead of the original matching selector. **Kind**: global function ## getRangeSelectors(range) ⇒ string Given a TextRange, extracts the selector(s) for the rule in the range and returns it. Assumes the range only contains one rule; if there's more than one, it will return the selector(s) for the first rule. **Kind**: global function **Returns**: string - The selector(s) for the rule in the range. | Param | Type | Description | | --- | --- | --- | | range | TextRange | The range to extract the selector(s) from. | ## getAllCssSelectorsInProject(options) Responsible to get all the CSS selectors in project **Kind**: global function | Param | Type | | --- | --- | | options | Object | ## SelectorInfo : Object **Kind**: global typedef