# Лабораторная №7

Для выполнения скину уже написанный код до данной лабораторной

## Задача

Добавить реализацию Backend Driven UI для дизайн системы и обернуть ее в мапперы. Мапперы должны уметь возвращать вьюшки и их сабвьюшки с помощью модели, получаемой из JSON.

### Ключевые моменты

- BDUI маппер должен принимать в себя некоторую модель, которая может содержать вложенные модели и так до бескончености, описывающие вьюшки, вложенные сабвьюишки и их верстку

- Модель, передаваемая в маппер должна поддерживать декодинг из JSON

- Пример простого JSON:

```json

{

"type": "contentView",

"content": {

"style": "plain",

"backgroundColor: "white"

},

"subviews": [

{

"type": "stackView",

"content": {

"spacing": "s" // Токен спейсинга из дизайн системы, например 16

},

"subviews": [

{

"type": "label",

"content": {

"text": "Привет!"

}

},

{

"type": "button",

"content": {

"text": "Нажми меня",

"action": {

"type": "print",

"context": {

"Кнопка была нажата"

}

}

}

}

]

}

]

}

```

- JSON не обязательно должен быть таким, как в примере, это просто показывает то, какой он может быть

- Ваш конфигуратор должен отражать возможности дизайн системы

- Для простоты верстки можно пользоваться StackView (их можно вкладывать друг в друга), чтобы не делать BDUI верстку

- По схеме подобной модели напрашивается использование Generic'ов и Enum'ов

### Требования

- Маппер должен принимать абстрактную модель и возвращать UIView

- Все вьюшки и сабвьюшки должны быть верно сконфигурированы, согласно дизайн системе (в JSON должны содержаться данные для ViewModel)

- Маппер должен возвращать вьюшку с учетом верстки, чтобы ее можно было сразу разместить на экране

- Вьюшки не должны дополнительно обогощаться и обрабатываться после работы маппера

- Маппер должен работать всегда по одному принципу, без корнер кейсов для конкретных фичей (быть абстрактным)

- Маппер должен быть закрыт за протоколом

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

- Реализовать различные экшены для реакций пользователя (роутинг, релоад экрана и тд)

- Добавить в маппер расширенную дизайн систему (больше 5 вьюшек + контейнеры + констренты и тд) - 2 балла

18 дней назад
guest_1744530377655
18 дней в сервисе
Был
4 дня назад

Заявки фрилансеров

Нет заявок фрилансеров