add(props, opts = {}) {
      const cOpts = isString(props) ? {} : opts;
      // Keep support for arrays but avoid it in docs
      if (isArray(props)) {
        return props.map(item => this.addSelector(item, opts, cOpts));
      } else {
        return this.addSelector(props, opts, cOpts);
      }
    }
/**
     * Add a new selector to the collection if it does not already exist.
     * You can pass selectors properties or string identifiers.
     * @param {Object|String} props Selector properties or string identifiers, eg. `{ name: 'my-class', label: 'My class' }`, `.my-cls`
     * @param {Object} [opts] Selector options
     * @return {[Selector]}
     * @example
     * const selector = selectorManager.add({ name: 'my-class', label: 'My class' });
     * console.log(selector.toString()) // `.my-class`
     * // Same as
     * const selector = selectorManager.add('.my-class');
     * console.log(selector.toString()) // `.my-class`
     * */
Add a new selector to the collection if it does not already exist.
You can pass selectors properties or string identifiers.
@param {Object|String} props Selector properties or string identifiers, eg.
Add a new selector to the collection if it does not already exist . You can pass selectors properties or string identifiers . @param { Object|String } props Selector properties or string identifiers eg .
add(props, opts = {}) {
      const cOpts = isString(props) ? {} : opts;
      if (isArray(props)) {
        return props.map(item => this.addSelector(item, opts, cOpts));
      } else {
        return this.addSelector(props, opts, cOpts);
      }
    }
add ( props , opts = { } ) { const cOpts = isString ( props ) ? { } : opts ; if ( isArray ( props ) ) { return props . map ( item => this . addSelector ( item , opts , cOpts ) ) ; } else { return this . addSelector ( props , opts , cOpts ) ; } }
Add a new selector to the collection if it does not already exist.
Add a new selector to the collection if it does not already exist .
// Keep support for arrays but avoid it in docs