addRule(properties, config = {}) {
        const className = config.className || this.randomID();
        const fullSelector = `${className}${config.subSelector ? `:${config.subSelector}` : ""}`;
        const listingID = `${config.breakpoint ? `${config.breakpoint}-` : ""}${fullSelector}`;
        let { styles } = this;
        if (config.breakpoint) {
            if (!this.breakpoints[config.breakpoint]) {
                this.addBreakpoint(config.breakpoint);
            }
            styles = this.breakpoints[config.breakpoint];
        }
        if (!this.listing[listingID]) {
            const position = styles.length - this.breakpointsCount;
            const rule = {
                properties: {},
                selector: fullSelector
            };
            styles.splice(position > 0 ? position : 0, 0, rule);
            this.listing[listingID] = rule;
        }
        Object.assign(this.listing[listingID].properties, properties);
        return className;
    }
/**
     * Adds or configures Prototope's CSS rule.
     *
     * @param properties - CSS properties to be set for the rule.
     * @param config - CSS rule configuration.
     * @returns - Rule-related CSS class name.
     */
Adds or configures Prototope's CSS rule.
@param properties - CSS properties to be set for the rule.
@param config - CSS rule configuration.
@returns - Rule-related CSS class name.
Adds or configures Prototope ' s CSS rule . @param properties - CSS properties to be set for the rule . @param config - CSS rule configuration . @returns - Rule - related CSS class name .
addRule(properties, config = {}) {
        const className = config.className || this.randomID();
        const fullSelector = `${className}${config.subSelector ? `:${config.subSelector}` : ""}`;
        const listingID = `${config.breakpoint ? `${config.breakpoint}-` : ""}${fullSelector}`;
        let { styles } = this;
        if (config.breakpoint) {
            if (!this.breakpoints[config.breakpoint]) {
                this.addBreakpoint(config.breakpoint);
            }
            styles = this.breakpoints[config.breakpoint];
        }
        if (!this.listing[listingID]) {
            const position = styles.length - this.breakpointsCount;
            const rule = {
                properties: {},
                selector: fullSelector
            };
            styles.splice(position > 0 ? position : 0, 0, rule);
            this.listing[listingID] = rule;
        }
        Object.assign(this.listing[listingID].properties, properties);
        return className;
    }
addRule ( properties , config = { } ) { const className = config . className || this . randomID ( ) ; const fullSelector = ` ${ className } ${ config . subSelector ? ` ${ config . subSelector } ` : "" } ` ; const listingID = ` ${ config . breakpoint ? ` ${ config . breakpoint } ` : "" } ${ fullSelector } ` ; let { styles } = this ; if ( config . breakpoint ) { if ( ! this . breakpoints [ config . breakpoint ] ) { this . addBreakpoint ( config . breakpoint ) ; } styles = this . breakpoints [ config . breakpoint ] ; } if ( ! this . listing [ listingID ] ) { const position = styles . length - this . breakpointsCount ; const rule = { properties : { } , selector : fullSelector } ; styles . splice ( position > 0 ? position : 0 , 0 , rule ) ; this . listing [ listingID ] = rule ; } Object . assign ( this . listing [ listingID ] . properties , properties ) ; return className ; }
Adds or configures Prototope's CSS rule.
Adds or configures Prototope ' s CSS rule .