Skip to content

BaseImmutableCssNode ​

Base interface for CSS-specific node operations.

typescript
interface BaseImmutableCssNode extends BaseImmutableNode<ImmutableCssNode>

Description ​

BaseImmutableCssNode extends the base immutable node interface with CSS-specific type casting methods and properties. It provides the foundation for all CSS nodes (rules, attributes, comments, and documents) and enables safe type conversion between different CSS node types.

Import ​

typescript
import { BaseImmutableCssNode } from '@stripoinc/ui-editor-extensions';

Inheritance ​

Extends: BaseImmutableNode<ImmutableCssNode>

Methods ​

isCommented() ​

Checks if the CSS node is commented out.

typescript
isCommented(): boolean

Returns: boolean - True if the node is commented, false otherwise

Throws: Error if the node cannot be found

Description: Determines if the current CSS node has been commented out. This is useful for identifying disabled styles or temporarily excluded rules.

Example:

typescript
if (cssNode.isCommented()) {
    console.log('This CSS node is commented out');
}

asDocument() ​

Casts the current node to an ImmutableCssDocumentNode.

typescript
asDocument(): ImmutableCssDocumentNode

Returns: ImmutableCssDocumentNode - The current node as a document node

Description: Type casts the node as a CSS document node. Use this for root stylesheets or media query blocks.

Example:

typescript
if (node.getType() === 'document' || node.getType() === 'media') {
    const doc = node.asDocument();
    // Process document or media query
}

asRule() ​

Casts the current node to an ImmutableCssRuleNode.

typescript
asRule(): ImmutableCssRuleNode

Returns: ImmutableCssRuleNode - The current node as a rule node

Description: Type casts the node as a CSS rule node. Use this when working with CSS rules that have selectors.

Example:

typescript
if (node.getType() === 'rule') {
    const rule = node.asRule();
    const selector = rule.getSelector();
}

asAttribute() ​

Casts the current node to an ImmutableCssAttributeNode.

typescript
asAttribute(): ImmutableCssAttributeNode

Returns: ImmutableCssAttributeNode - The current node as an attribute node

Description: Type casts the node as a CSS attribute (property) node. Use this for accessing CSS property names and values.

Example:

typescript
if (node.getType() === 'attr') {
    const attr = node.asAttribute();
    const name = attr.getAttributeName();
    const value = attr.getAttributeValue();
}

asComment() ​

Casts the current node to an ImmutableCssCommentNode.

typescript
asComment(): ImmutableCssCommentNode

Returns: ImmutableCssCommentNode - The current node as a comment node

Description: Type casts the node as a CSS comment node. Use this for accessing comment text content.

Example:

typescript
if (node.getType() === 'comment') {
    const comment = node.asComment();
    const text = comment.getTextContent();
}

Type Casting Pattern ​

Safe Type Casting ​

Always check the node type before casting:

typescript
function processCssNode(node: BaseImmutableCssNode) {
    const nodeType = node.getType();
    
    switch(nodeType) {
        case 'rule':
            const rule = node.asRule();
            console.log(`Rule: ${rule.getSelector()}`);
            break;
            
        case 'attr':
            const attr = node.asAttribute();
            console.log(`Property: ${attr.getAttributeName()}: ${attr.getAttributeValue()}`);
            break;
            
        case 'comment':
            const comment = node.asComment();
            console.log(`Comment: ${comment.getTextContent()}`);
            break;
            
        case 'document':
        case 'media':
            const doc = node.asDocument();
            console.log('Document or media query node');
            break;
            
        default:
            console.log(`Unknown CSS node type: ${nodeType}`);
    }
}