# selector-max-type

Ограничивает кол-во селекторов по типу в одном селекторе.

```css
    a {}
/** ↑
 * Селектор по типу */
```

Это правило разворачивает вложенные селекторы перед вычислением кол-ва селекторов по типу. Каждый селектор в [списке селекторов](https://www.w3.org/TR/selectors4/#selector-list) рассматривается отдельно.

Псевдо-класс `:not()` так же рассматривается отдельно. Правило обрабатывает аргумент так, как если бы это был независимый селектор, и результат не учитывается в сумме для всего селектора.

## Опции

`int`: Максимально разрешённое кол-во селекторов по типу.

Например, при значении `2`:

Следующие паттерны будут вызывать ошибку:

```css
div a span {}
```

```css
div a {
  & span {}
}
```

```css
div a {
  & > a {}
}
```

Следующие паттерны _не_ будут вызывать ошибку:

```css
div {}
```

```css
div a {}
```

```css
.foo div a {}
```

```css
div.foo a {}
```

```css
/* каждый селектор в списке селекторов обрабатывается отдельно */
div,
a span {}
```

```css
/* `span` расположен внутри `:not()`, поэтому будет обработан отдельно */
div a .foo:not(span) {}
```

## Дополнительные опции

### `ignore: ["child", "compounded", "descendant", "next-sibling"]`

#### `"child"`

Игнорирование селектора дочерних элементов.

Например, при значении `2`:

Следующие паттерны _не_ будут вызывать ошибку:

```css
div span > a {}
```

```css
#bar div span > a {}
```

#### `"compounded"`

Игнорирование составных селекторов, т. е. селекторов по типу, которые объединены в цепочку с другими селекторами.

Например, при значении `2`:

Следующие паттерны _не_ будут вызывать ошибку:

```css
div span a.foo {}
```

```css
div span a#bar {}
```

#### `"descendant"`

Игнорирование селекторов по типу, которые являются потомками других селекторов.

Например, при значении `2`:

Следующие паттерны _не_ будут вызывать ошибку:

```css
.foo div span a {}
```

```css
#bar div span a {}
```

#### `"next-sibling"`

Игнорирование смежных селекторов.

Например, при значении `2`:

Следующие паттерны _не_ будут вызывать ошибку:

```css
div a + span {}
```

```css
#bar + div + span + a + span {}
```

### `ignoreTypes: ["/regex/", /regex/, "string"]`

Дано:

```
["/^my-/", "custom"]
```

Например, при значении `2`:

Следующие паттерны _не_ будут вызывать ошибку:

```css
div a custom {}
```

```css
div a my-type {}
```

```css
div a my-other-type {}
```
