@silexlabs/grapesjs-advanced-selector
Version:
A GrapesJS plugin for managing advanced CSS selectors with a visual interface
34 lines • 2.22 kB
TypeScript
import { CompoundSelector } from './CompoundSelector';
import { Operator } from './Operator';
export interface ComplexSelector {
mainSelector: CompoundSelector;
operator?: Operator;
relatedSelector?: CompoundSelector;
atRule?: string;
}
export declare const EMPTY_SELECTOR: ComplexSelector;
export declare function toString(cs: ComplexSelector): string;
export declare function specificity(cs: ComplexSelector): number;
/**
* Parses a CSS selector string and converts it into a ComplexSelector model
* @example fromString('div > .class') // { mainSelector: { selectors: [{ type: 'tag', value: 'div' }] }, operator: { isCombinator: true, value: '>' }, relatedSelector: { selectors: [{ type: 'class', value: 'class' }] } }
* @example fromString('.main:has(.related)') // { mainSelector: { selectors: [{ type: 'class', value: 'main' }] }, operator: { isCombinator: false, value: ':has' }, relatedSelector: { selectors: [{ type: 'class', value: 'related' }] } }
*/
export declare function fromString(selector: string, atRule: string): ComplexSelector;
/**
* Merge two ComplexSelectors into one
* This will add the relatedSelector of cs2 to the mainSelector of cs1, same for the relatedSelector
* If both selectors have an operator, the operator of cs1 will be kept
*/
export declare function merge(cs1: ComplexSelector, cs2: ComplexSelector): ComplexSelector;
/**
* Activate or deactivate the selectors of a ComplexSelector (main and related)
* Depending on the selectors of another ComplexSelector
* @example activateSelectors({ mainSelector: { selectors: [{ type: 'tag', value: 'div', active: false }, { type: 'class', value: '.test', active: true }] }, { mainSelector: { selectors: [{ type: 'tag', value: 'div', active: true }] }) // { mainSelector: { selectors: [{ type: 'tag', value: 'div', active: true }, { type: 'class', value: '.test', active: false } }
*/
export declare function activateSelectors(cs: ComplexSelector, other: ComplexSelector): ComplexSelector;
/**
* Make sure all ComplexSelectors have the same mainSelector, operator, and relatedSelector
*/
export declare function same(all: ComplexSelector[]): ComplexSelector | false;
//# sourceMappingURL=ComplexSelector.d.ts.map