commit 718821fdd637d50c523f8642acd9d0d0a260c9b1 Author: s.zotov Date: Mon Apr 13 11:36:39 2026 +0500 Initial commit: ASPEKTER — визуальный конструктор email-рассылок - z51-pug-builder: Svelte 5 SPA, визуальный редактор Pug-писем - email-gen: Node.js рендерер Pug→HTML через email-templates + Juice - email-gen-api: HTTP сервер рендеринга (порт 8787) - coin-scout: сервис подбора монет из фидов - Docker Compose для dev/prod - Nginx конфиг с SSL для app.aspekter.ru diff --git a/.env.prod.example b/.env.prod.example new file mode 100644 index 0000000..c801c99 --- /dev/null +++ b/.env.prod.example @@ -0,0 +1,2 @@ +# Host port for nginx in production compose +HTTP_PORT=80 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e0040d --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +node_modules/ +.DS_Store +z51-pug-builder/data/ +z51-pug-builder/data-dev/ +data/ +*.log +.env +z51-pug-builder/data/uploads/ +coin-scout/data/ diff --git a/Block.pug b/Block.pug new file mode 100644 index 0000000..25d9910 --- /dev/null +++ b/Block.pug @@ -0,0 +1,213 @@ +//Заголовок зеленый +tr + td.paddingWrapperBig + +defaultTable("100%") + tr + td(align="center") + span.text.smallHeader.bold.greenText Конитива, герой! + + +//Заголовок серый +tr + td.paddingWrapperBig + +defaultTable("100%") + tr + td(align="center") + span.text.smallHeader.bold.groceryText Конитива, герой! + + +//Текст +tr + td.paddingWrapperBig + +defaultTable("100%") + tr + td + span.text.groceryText Пока одни вспоминают старую «Якудзу-3» с ее бесконечными блоками и симулятором няньки, студия Ryu Ga Gotoku Studio готовит полноценную революцию! + +//Доп. текст + +spacerLine(20) + tr + td + span.text.groceryText Минимальные 1080p / 30 FPS (с FSR)
Проц: Intel i3-8100 / AMD Ryzen 3 2300X
Видяха: NVIDIA GTX 1650 / AMD RX 6400
Оперативочка: 8 ГБ
+ + + + + +//Отступ 20 ++spacerLine(20) + + +//Отступ 40 ++spacerLine(40) + +//3 товара в ряд ++products3inRow({ + '144839': { + imageSrc: '', + name: 'BAD BUNNY', + category: 'Осторожно, этот кролик плохой)', + }, + '142672': { + imageSrc: '', + name: 'MONARCH', + category: 'Ролекс среди кресел', + }, + '140228': { + imageSrc: '', + name: 'Kitty Meow', + category: 'Кошечка делает мур-р-р!', + }, +}) + + +//Разделитель ++dividerZ(525, 2) ++spacerLine(40) + +//Банер +tr + td(align="center") + a(href="https://z51.ru" target="_blank") + img(src="https://z51.ru/upload/email/newsletter-2026/20-01-2026/1.jpg" alt="pic" style="display: block" width="600") + + + +//Кнопка +tr + td(align="center").paddingWrapper + +buttonRounded("Смотреть топовые ПК", "https://z51.ru/catalog/gaming-pc/", 525, 42, "#c9e905", 18, "#000000", 4, "#c9e905").bold.text + +//Две кнопки +tr + td.paddingWrapper + +defaultTable("100%") + tr + td(width="250") + +defaultTable("250") + tr + td(align="center") + +buttonRounded("Игровые кресла", "https://z51.ru/catalog/kresla/", 240, 42, "#c9e905", 18, "#000000", 4, "#c9e905").bold.text + +tdFixed(36) + td(width="250") + +defaultTable("250") + tr + td(align="center") + +buttonRounded("Эргономичные кресла", "https://z51.ru/catalog/ergonomic-office-chairs/", 240, 42, "#c9e905", 18, "#000000", 4, "#c9e905", 4).bold.text + + +//Блок преимуществ +tr + td.paddingWrapperBig + +defaultTable("100%") + tr + td(align="center") + span.text.smallHeader.bold.greenText Почему выбирают товары у Баззи? + ++spacerLine(40) + +tr + td.paddingWrapper + +defaultTable("100%") + tr + td(width="250" valign="top") + +defaultTable("250") + //Unordered List + tr + td + +defaultTable("100%") + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="pic" width="12") + +tdFixed(10) + td + span.groceryText Официальный магазин
В наличии всё самое вкусное от ZONE 51 — кресла, столы, периферия и аксессуары + +spacerLine(20) + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="pic" width="12") + +tdFixed(10) + td + span.groceryText Первоклассные и надежные продукты
Из качественных, инопланетных и вроде как безопасных материалов для себя, родных и друзей. Не понравилось? Можешь вернуть в течение 28 дней с даты приобретения + +tdFixed(36) + td(width="250" valign="top") + +defaultTable("250") + tr + td + +defaultTable("100%") + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="pic" width="12") + +tdFixed(10) + td + span.groceryText Новинки и эксклюзивы
Я постоянно потею над новыми товарами, которые можно приобрести только здесь + +spacerLine(20) + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="pic" width="12") + +tdFixed(10) + td + span.groceryText Клиенто-ориентированность
Даю до 3 лет гарантии на свой товар +1 год за покупку в фирменном магазине ZONE 51 (онлайн и офлайн), а человеки у трубки помогут быстро обкашлять любые вопросы ++spacerLine(40) + +tr + td(align="center").paddingWrapper + +buttonRounded("Залетай к нам!", "https://z51.ru/", 300, 42, "#c9e905", 18, "#000000", 4, "#c9e905").bold.text +//Нумерованный список ++spacerLine(20) +tr + td.paddingWrapper + +defaultTable("100%") + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/1.png" alt="" width="14") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего мира + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/2.png" alt="" width="14") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего мира + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/3.png" alt="" width="14") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/4.png" alt="" width="14") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего +//Маркированный список ++spacerLine(25) +tr + td.paddingWrapper + +defaultTable("100%") + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="" width="12") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего мира + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="" width="12") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего мира + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="" width="12") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего + tr + +tdFixed(12, "center", "top").markerPadding + img(src="https://z51.ru/upload/email/master-template/markers/marker.png" alt="" width="12") + +tdFixed(16) + td + span.text БРЕНД ZONE 51 – результат работы профессионалов со всего \ No newline at end of file diff --git a/DOCKER-DEPLOY.md b/DOCKER-DEPLOY.md new file mode 100644 index 0000000..ed71653 --- /dev/null +++ b/DOCKER-DEPLOY.md @@ -0,0 +1,117 @@ +# Docker deploy: z51-pug-builder + email-gen + +## Что есть + +- `docker-compose.yml` — локальный/дев запуск (builder на `localhost:5173`) +- `docker-compose.prod.yml` — прод запуск через nginx + +Сервисы: +- `builder` — Svelte-конструктор + локальный API (`/api/*`) +- `email-gen-api` — мост к `email-gen` (рендер PUG -> HTML) +- `nginx` (только в prod compose) — входная точка на 80 порту + +--- + +## 1) Локальный запуск (dev) + +```bash +cd /Users/sergeyzotov/Documents/GENERATOR_Z51 +docker compose up -d --build +docker compose ps +``` + +Открыть: `http://localhost:5173` + +Остановить: +```bash +docker compose down +``` + +--- + +## 2) Прод запуск (nginx + docker) + +1. Подготовь env: +```bash +cd /Users/sergeyzotov/Documents/GENERATOR_Z51 +cp .env.prod.example .env +``` + +2. Запусти: +```bash +docker compose -f docker-compose.prod.yml up -d --build +``` + +3. Проверка: +```bash +docker compose -f docker-compose.prod.yml ps +``` + +Открыть: `http://` (или домен, если DNS уже настроен). + +Остановить: +```bash +docker compose -f docker-compose.prod.yml down +``` + +--- + +## 3) Как работает генерация HTML + +1. В конструкторе собирается PUG. +2. Нажимаешь `Превью -> Обновить`. +3. Builder вызывает `POST /api/project/:name/render-email`. +4. Запрос уходит в `email-gen-api`. +5. `email-gen-api`: + - пишет PUG в `email-gen/emails//letters/let.pug` + - запускает `gulp pug --project ` + - читает `email-gen/public/index.html` + - возвращает HTML обратно в конструктор. + +Важно: в `Настройки -> Текущий проект` заполняй поле `Папка проекта в email-gen` (например `numizmat`). + +--- + +## 4) Обновление email-gen без ручной пересборки всего + +Скрипт: +```bash +./deploy/scripts/update-email-gen.sh +``` + +Или с веткой: +```bash +./deploy/scripts/update-email-gen.sh main +``` + +Что делает скрипт: +- `git fetch`/`git pull --ff-only` в `email-gen` +- пересобирает и перезапускает только `email-gen-api` контейнер + +Это удобно, если `email-gen` обновляется через git и перезаписывается. + +--- + +## 5) Логи + +Prod: +```bash +docker compose -f docker-compose.prod.yml logs -f nginx +docker compose -f docker-compose.prod.yml logs -f builder +docker compose -f docker-compose.prod.yml logs -f email-gen-api +``` + +Dev: +```bash +docker compose logs -f builder +docker compose logs -f email-gen-api +``` + +--- + +## 6) Данные + +- Данные конструктора: `z51-pug-builder/data` +- Репозиторий генератора: `email-gen` (bind mount в контейнер) + +Оба каталога остаются на хосте и не теряются при пересоздании контейнеров. diff --git a/Untitled-1 b/Untitled-1 new file mode 100644 index 0000000..fc8c698 --- /dev/null +++ b/Untitled-1 @@ -0,0 +1,47 @@ +cd /Users/sergeyzotov/Documents/GENERATOR_Z51/z51-pug-builder + +npm run dev + +//Текст +tr +td.paddingWrapperBig ++defaultTable("100%") +tr +td +span.text.groceryText Запоминай дату: 13 февраля 2026 года. ++spacerLine(20) +tr +td +span.text.groceryText В этот день ты точно поменяешь ++spacerLine(20) +tr +td +span.text.groceryText Говорят, лучший способ пережить ++spacerLine(20) +tr +td +span.text.groceryText Но сначала в + + +отлично, только сделай кнопку пиктограммой в виде папки, и перенеси рядом с кнопкой сохранения. и добавь всем кнопкам и полям описание которое показывается при наведении мыши + + + +cd /Users/sergeyzotov/Documents/GENERATOR_Z51 +docker compose up -d --build --force-recreate builder + + +кб +https://email-images.mindbox.ru/numizmat/1371ccef-c936-48cd-b0b1-410beb7f04b5/38e24939-55d1-49cf-8932-561a78176448.jpg + +РУ +https://email-images.mindbox.ru/numizmat/1371ccef-c936-48cd-b0b1-410beb7f04b5/6dfa2b76-6f67-4be3-8ecc-ac88e5ff0a03.png + + +cd /Users/sergeyzotov/Documents/GENERATOR_Z51 + +# stable +docker compose -p z51_stable up -d --build + +# dev +docker compose -p z51_dev -f docker-compose.yml -f docker-compose.dev.yml up -d --build diff --git a/aspekter.zip b/aspekter.zip new file mode 100644 index 0000000..3db058a Binary files /dev/null and b/aspekter.zip differ diff --git a/aspekter_ref/__MACOSX/._editor-svelte b/aspekter_ref/__MACOSX/._editor-svelte new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/._editor-svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._.DS_Store b/aspekter_ref/__MACOSX/editor-svelte/._.DS_Store new file mode 100644 index 0000000..1a45974 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._.DS_Store differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._.vscode b/aspekter_ref/__MACOSX/editor-svelte/._.vscode new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._.vscode differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._README.md b/aspekter_ref/__MACOSX/editor-svelte/._README.md new file mode 100644 index 0000000..b8077c5 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._README.md differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._dist b/aspekter_ref/__MACOSX/editor-svelte/._dist new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._dist differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._html.pug b/aspekter_ref/__MACOSX/editor-svelte/._html.pug new file mode 100644 index 0000000..4d605fd Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._html.pug differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._index.html b/aspekter_ref/__MACOSX/editor-svelte/._index.html new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._index.html differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._node_modules b/aspekter_ref/__MACOSX/editor-svelte/._node_modules new file mode 100755 index 0000000..e2c98a1 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._node_modules differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._package-lock.json b/aspekter_ref/__MACOSX/editor-svelte/._package-lock.json new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._package-lock.json differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._package.json b/aspekter_ref/__MACOSX/editor-svelte/._package.json new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._package.json differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._public b/aspekter_ref/__MACOSX/editor-svelte/._public new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._public differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._server b/aspekter_ref/__MACOSX/editor-svelte/._server new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._server differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._src b/aspekter_ref/__MACOSX/editor-svelte/._src new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._src differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._svelte.config.js b/aspekter_ref/__MACOSX/editor-svelte/._svelte.config.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._svelte.config.js differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/._vite.config.js b/aspekter_ref/__MACOSX/editor-svelte/._vite.config.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/._vite.config.js differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/.vscode/._settings.json b/aspekter_ref/__MACOSX/editor-svelte/.vscode/._settings.json new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/.vscode/._settings.json differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/dist/._assets b/aspekter_ref/__MACOSX/editor-svelte/dist/._assets new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/dist/._assets differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/dist/._favicon.svg b/aspekter_ref/__MACOSX/editor-svelte/dist/._favicon.svg new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/dist/._favicon.svg differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/dist/._index.html b/aspekter_ref/__MACOSX/editor-svelte/dist/._index.html new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/dist/._index.html differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/dist/._readme.html b/aspekter_ref/__MACOSX/editor-svelte/dist/._readme.html new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/dist/._readme.html differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/dist/assets/._index-BUFzIg5U.js b/aspekter_ref/__MACOSX/editor-svelte/dist/assets/._index-BUFzIg5U.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/dist/assets/._index-BUFzIg5U.js differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/dist/assets/._index-CvxZHvQj.css b/aspekter_ref/__MACOSX/editor-svelte/dist/assets/._index-CvxZHvQj.css new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/dist/assets/._index-CvxZHvQj.css differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/public/._favicon.svg b/aspekter_ref/__MACOSX/editor-svelte/public/._favicon.svg new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/public/._favicon.svg differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/public/._readme.html b/aspekter_ref/__MACOSX/editor-svelte/public/._readme.html new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/public/._readme.html differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/server/._index.js b/aspekter_ref/__MACOSX/editor-svelte/server/._index.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/server/._index.js differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._.DS_Store b/aspekter_ref/__MACOSX/editor-svelte/src/._.DS_Store new file mode 100644 index 0000000..1a45974 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._.DS_Store differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._App.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/._App.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._App.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._app.css b/aspekter_ref/__MACOSX/editor-svelte/src/._app.css new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._app.css differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._components b/aspekter_ref/__MACOSX/editor-svelte/src/._components new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._components differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._lib b/aspekter_ref/__MACOSX/editor-svelte/src/._lib new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._lib differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._main.js b/aspekter_ref/__MACOSX/editor-svelte/src/._main.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._main.js differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/._store.js b/aspekter_ref/__MACOSX/editor-svelte/src/._store.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/._store.js differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/._.DS_Store b/aspekter_ref/__MACOSX/editor-svelte/src/components/._.DS_Store new file mode 100644 index 0000000..1a45974 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/._.DS_Store differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/._BlockCard.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/._BlockCard.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/._BlockCard.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/._BlockList.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/._BlockList.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/._BlockList.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/._aspekter.svg b/aspekter_ref/__MACOSX/editor-svelte/src/components/._aspekter.svg new file mode 100644 index 0000000..6c4383b Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/._aspekter.svg differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/._blocks b/aspekter_ref/__MACOSX/editor-svelte/src/components/._blocks new file mode 100755 index 0000000..d73dfc8 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/._blocks differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._BannerBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._BannerBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._BannerBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._BannerNoLinkBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._BannerNoLinkBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._BannerNoLinkBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonDoubleBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonDoubleBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonDoubleBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonSingleBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonSingleBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonSingleBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonTripleBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonTripleBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ButtonTripleBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._DividerBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._DividerBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._DividerBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ParagraphBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ParagraphBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ParagraphBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ProductsImageBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ProductsImageBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ProductsImageBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ProductsRowBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ProductsRowBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ProductsRowBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._PromocodeBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._PromocodeBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._PromocodeBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._SizeGridBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._SizeGridBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._SizeGridBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._SpacerBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._SpacerBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._SpacerBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TextImageBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TextImageBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TextImageBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ThreeBannersNoTextBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ThreeBannersNoTextBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._ThreeBannersNoTextBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TitleActualBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TitleActualBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TitleActualBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TwoBannersNoTextBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TwoBannersNoTextBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TwoBannersNoTextBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TwoBannersWithTextBlock.svelte b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TwoBannersWithTextBlock.svelte new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/components/blocks/._TwoBannersWithTextBlock.svelte differ diff --git a/aspekter_ref/__MACOSX/editor-svelte/src/lib/._pug.js b/aspekter_ref/__MACOSX/editor-svelte/src/lib/._pug.js new file mode 100644 index 0000000..0c87ec7 Binary files /dev/null and b/aspekter_ref/__MACOSX/editor-svelte/src/lib/._pug.js differ diff --git a/aspekter_ref/editor-svelte/.vscode/settings.json b/aspekter_ref/editor-svelte/.vscode/settings.json new file mode 100644 index 0000000..3b66410 --- /dev/null +++ b/aspekter_ref/editor-svelte/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.ignoreLimitWarning": true +} \ No newline at end of file diff --git a/aspekter_ref/editor-svelte/README.md b/aspekter_ref/editor-svelte/README.md new file mode 100644 index 0000000..20c4690 --- /dev/null +++ b/aspekter_ref/editor-svelte/README.md @@ -0,0 +1,74 @@ +# Конструктор писем VipAvenue (Svelte) + +Подробная инструкция по использованию редактора для сборки Pug-кода писем. + +## Запуск проекта +1. Установите зависимости: `npm install` +2. Запустите dev-сервер: `npm run dev` +3. Откройте ссылку из терминала (обычно `http://localhost:5173`) + +## Сохранение в email-gen +Для записи `let.pug` и `html.pug` нужен локальный сервер. Автосохранение работает только для `html.pug`, а `let.pug` сохраняется кнопкой «Сохранить». + +### Сборка и запуск +1. Соберите фронт: `npm run build` +2. Запустите сервер: `npm run serve` +3. Откройте интерфейс: `http://localhost:4173` + +### Переменные окружения +- `EMAIL_GEN_ROOT` — путь к корню `email-gen` +- `EMAIL_GEN_PROJECT` — имя проекта (по умолчанию `vipavenue`) +- `EMAIL_GEN_HTML_PATH` — путь к `html.pug` внутри `email-gen` (опционально) +- `EMAIL_GEN_LETTERS_DIR` — путь к папке `letters` внутри `email-gen` (опционально) +- `EMAIL_GEN_PUBLIC_INDEX` — путь к `public/index.html` (опционально) +- `PORT` — порт сервера (по умолчанию `4173`) + +Кнопка `HTML` в конструкторе копирует содержимое `public/index.html` через `/api/html`. + +### Dev-режим (опционально) +Если запускаете `npm run dev`, укажите `VITE_API_BASE=http://localhost:4173`, +чтобы кнопка сохранения обращалась к backend. + +## Общие элементы +- **Тёмная тема** — переключатель в топбаре. Сохраняется в `localStorage`. +- **Папка изображений** — глобальный префикс для всех картинок. В блоках указывается только имя файла и расширение. +- **Цены в товарах** — один глобальный флажок. Управляет всеми товарными блоками (включая «3 товара + картинка»). +- **Собрать мужское / Собрать женское** — переставляет сегменты относительно разделителя (`dividerVA`), сохраняя общие блоки до и после. +- **Сохранить как пресет** — сохраняет текущее состояние блоков и настроек. +- **Сбросить** — очищает блоки и Pug. + +## Работа с блоками +- Добавляйте блок через выпадающий список «Тип блока». +- Каждый блок имеет сегмент: **O** (общий), **Ж**, **М**. Сегментный бейдж меняется при клике. +- Перетаскивайте блоки за «ручку» или кнопками ↑/↓. +- Параметры блока сразу попадают в Pug (панель справа). +- Кнопки «Скопировать код» / «Экспорт .pug» работают сверху и снизу панели кода. + +### Сегменты и сборка версий +- Общие блоки **до** разделителя `dividerVA` всегда остаются сверху. +- При сборке **мужской** версии: сегмент М становится над разделителем, Ж — под ним; общие блоки вокруг разделителя остаются на месте. +- При возвращении на **женскую** версию порядок восстанавливается. + +## Пресеты +- Вкладка «Пресеты»: Новинки, Акция, Новые коллекции, Мои пресеты. +- Для Новинок/Акции/Новых коллекций введите женские и мужские ID (до 16), при необходимости цены. +- Кнопки «Женская версия» / «Мужская версия» создают набор блоков и переходят в конструктор. +- «Мои пресеты» — сохранённые состояния конструктора. Доступны загрузка/удаление. + +## Поля и картинки +- В блоках с картинками указывайте только имя файла и расширение; базовый путь — в «Папка изображений». +- Расширение по умолчанию: `.png`. + +## Хранение данных +- `localStorage` ключи: + - `vip_letter_editor_blocks_v1` + - `vip_letter_editor_settings_v1` (включая `imageBaseUrl`, `showPrices`, тема) + - `vip_letter_editor_theme` + - `vip_letter_editor_custom_presets_v1` + +## Частые действия +- **Показать превью HTML для текстового блока** — чекбокс внутри текстового блока (если нужен рендер HTML). +- **Убрать отступ после блока** — флажок внутри блока. +- **Ширина/высота, отступы** — в доп. настройках (кнопка «Доп. настройки» там, где она есть). + +Если что-то пошло не так: проверьте, что глобальный флажок цен включён/выключен как нужно, и убедитесь, что разделитель `dividerVA` стоит на месте, если используете сборку мужской/женской версии. diff --git a/aspekter_ref/editor-svelte/dist/assets/index-BUFzIg5U.js b/aspekter_ref/editor-svelte/dist/assets/index-BUFzIg5U.js new file mode 100644 index 0000000..8ab65ee --- /dev/null +++ b/aspekter_ref/editor-svelte/dist/assets/index-BUFzIg5U.js @@ -0,0 +1,265 @@ +var oi=Object.defineProperty;var si=(e,t,n)=>t in e?oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var bn=(e,t,n)=>si(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))l(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&l(r)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function l(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function fe(){}function Dl(e){return e()}function Ln(){return Object.create(null)}function ve(e){e.forEach(Dl)}function At(e){return typeof e=="function"}function Ye(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function ui(e){return Object.keys(e).length===0}function yn(e,...t){if(e==null){for(const l of t)l(void 0);return fe}const n=e.subscribe(...t);return n.unsubscribe?()=>n.unsubscribe():n}function vn(e){let t;return yn(e,n=>t=n)(),t}function un(e,t,n){e.$$.on_destroy.push(yn(t,n))}function Tn(e){return e&&At(e.destroy)?e.destroy:fe}const ri=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;function a(e,t){e.appendChild(t)}function N(e,t,n){e.insertBefore(t,n||null)}function M(e){e.parentNode&&e.parentNode.removeChild(e)}function Gt(e,t){for(let n=0;ne.removeEventListener(t,n,l)}function ci(e){return function(t){return t.stopPropagation(),e.call(this,t)}}function s(e,t,n){n==null?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function $t(e){return e===""?null:+e}function pi(e){return Array.from(e.childNodes)}function ut(e,t){t=""+t,e.data!==t&&(e.data=t)}function le(e,t){e.value=t??""}function Mn(e,t,n,l){n==null?e.style.removeProperty(t):e.style.setProperty(t,n,"")}function Nn(e,t,n){for(let l=0;le.indexOf(l)===-1?t.push(l):n.push(l)),n.forEach(l=>l()),xt=t}const cn=new Set;let jt;function Vt(){jt={r:0,c:[],p:jt}}function qt(){jt.r||ve(jt.c),jt=jt.p}function ke(e,t){e&&e.i&&(cn.delete(e),e.i(t))}function Se(e,t,n,l){if(e&&e.o){if(cn.has(e))return;cn.add(e),jt.c.push(()=>{cn.delete(e),l&&(n&&e.d(1),l())}),e.o(t)}else l&&l()}function gt(e){return(e==null?void 0:e.length)!==void 0?e:Array.from(e)}function vi(e,t){Se(e,1,1,()=>{t.delete(e.key)})}function _i(e,t,n,l,i,o,r,p,f,c,b,d){let g=e.length,k=o.length,v=g;const m={};for(;v--;)m[e[v].key]=v;const I=[],h=new Map,w=new Map,_=[];for(v=k;v--;){const A=d(i,o,v),O=n(A);let K=r.get(O);K?_.push(()=>K.p(A,t)):(K=c(O,A),K.c()),h.set(O,I[v]=K),O in m&&w.set(O,Math.abs(v-m[O]))}const y=new Set,S=new Set;function H(A){ke(A,1),A.m(p,b),r.set(A.key,A),b=A.first,k--}for(;g&&k;){const A=I[k-1],O=e[g-1],K=A.key,q=O.key;A===O?(b=A.first,g--,k--):h.has(q)?!r.has(K)||y.has(K)?H(A):S.has(q)?g--:w.get(K)>w.get(q)?(S.add(K),H(A)):(y.add(q),g--):(f(O,r),g--)}for(;g--;){const A=e[g];h.has(A.key)||f(A,r)}for(;k;)H(I[k-1]);return ve(_),I}function Qe(e){e&&e.c()}function qe(e,t,n){const{fragment:l,after_update:i}=e.$$;l&&l.m(t,n),pn(()=>{const o=e.$$.on_mount.map(Dl).filter(At);e.$$.on_destroy?e.$$.on_destroy.push(...o):ve(o),e.$$.on_mount=[]}),i.forEach(pn)}function Ge(e,t){const n=e.$$;n.fragment!==null&&(bi(n.after_update),ve(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function ki(e,t){e.$$.dirty[0]===-1&&(Xt.push(e),gi(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const v=k.length?k[0]:g;return c.ctx&&i(c.ctx[d],c.ctx[d]=v)&&(!c.skip_bound&&c.bound[d]&&c.bound[d](v),b&&ki(e,d)),g}):[],c.update(),b=!0,ve(c.before_update),c.fragment=l?l(c.ctx):!1,t.target){if(t.hydrate){const d=pi(t.target);c.fragment&&c.fragment.l(d),d.forEach(M)}else c.fragment&&c.fragment.c();t.intro&&ke(e.$$.fragment),qe(e,t.target,t.anchor),jl()}nn(f)}class Xe{constructor(){bn(this,"$$");bn(this,"$$set")}$destroy(){Ge(this,1),this.$destroy=fe}$on(t,n){if(!At(n))return fe;const l=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return l.push(n),()=>{const i=l.indexOf(n);i!==-1&&l.splice(i,1)}}$set(t){this.$$set&&!ui(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const wi="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(wi);let rn;const Si=new Uint8Array(16);function Ii(){if(!rn&&(rn=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!rn))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return rn(Si)}const st=[];for(let e=0;e<256;++e)st.push((e+256).toString(16).slice(1));function Bi(e,t=0){return st[e[t+0]]+st[e[t+1]]+st[e[t+2]]+st[e[t+3]]+"-"+st[e[t+4]]+st[e[t+5]]+"-"+st[e[t+6]]+st[e[t+7]]+"-"+st[e[t+8]]+st[e[t+9]]+"-"+st[e[t+10]]+st[e[t+11]]+st[e[t+12]]+st[e[t+13]]+st[e[t+14]]+st[e[t+15]]}const yi=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Pn={randomUUID:yi};function nt(e,t,n){if(Pn.randomUUID&&!e)return Pn.randomUUID();e=e||{};const l=e.random||(e.rng||Ii)();return l[6]=l[6]&15|64,l[8]=l[8]&63|128,Bi(l)}const Zt=[];function Ti(e,t){return{subscribe:fn(e,t).subscribe}}function fn(e,t=fe){let n;const l=new Set;function i(p){if(Ye(e,p)&&(e=p,n)){const f=!Zt.length;for(const c of l)c[1](),Zt.push(c,e);if(f){for(let c=0;c{l.delete(c),l.size===0&&n&&(n(),n=null)}}return{set:i,update:o,subscribe:r}}function Ci(e,t,n){const l=!Array.isArray(e),i=l?[e]:e;if(!i.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const o=t.length<2;return Ti(n,(r,p)=>{let f=!1;const c=[];let b=0,d=fe;const g=()=>{if(b)return;d();const v=t(l?c[0]:c,r,p);o?r(v):d=At(v)?v:fe},k=i.map((v,m)=>yn(v,I=>{c[m]=I,b&=~(1<{b|=1<i({...l.data,...p}),r=p=>o({height:parseInt(p.target.value,10)||0});return e.$$set=p=>{"block"in p&&n(0,l=p.block),"onChange"in p&&n(2,i=p.onChange)},[l,o,i,r]}class Mi extends Xe{constructor(t){super(),Ze(this,t,Li,Hi,Ye,{block:0,onChange:2})}}function Rn(e){let t,n,l,i,o,r;return{c(){t=u("div"),n=u("label"),l=F(`Отступ снизу (px) + `),i=u("input"),s(i,"type","number"),s(t,"class","advanced-panel")},m(p,f){N(p,t,f),a(t,n),a(n,l),a(n,i),le(i,e[0].data.bottomSpacing),o||(r=[C(i,"input",e[9]),C(i,"input",e[10])],o=!0)},p(p,f){f&1&&$t(i.value)!==p[0].data.bottomSpacing&&le(i,p[0].data.bottomSpacing)},d(p){p&&M(t),o=!1,ve(r)}}}function Ni(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w=e[2]&&Rn(e);return{c(){t=u("label"),n=F(`Текст актуального заголовка + `),l=u("textarea"),o=B(),r=u("button"),r.textContent="
",p=B(),f=u("div"),c=u("button"),c.textContent="Доп. настройки",b=B(),w&&w.c(),d=B(),g=u("label"),k=u("input"),m=F(` + Убрать отступ после блока`),s(l,"class","singleline-textarea"),s(l,"rows","1"),l.value=i=e[0].data.text??"",s(r,"class","btn-inline"),s(r,"type","button"),s(c,"class","btn-advanced-toggle"),s(c,"type","button"),ie(c,"is-open",e[2]),s(f,"class","advanced-wrapper"),s(k,"type","checkbox"),k.checked=v=e[0].data.removeBottomSpacing,s(g,"class","inline")},m(_,y){N(_,t,y),a(t,n),a(t,l),e[6](l),N(_,o,y),N(_,r,y),N(_,p,y),N(_,f,y),a(f,c),a(f,b),w&&w.m(f,null),N(_,d,y),N(_,g,y),a(g,k),a(g,m),I||(h=[C(l,"input",e[7]),C(r,"click",e[4]),C(c,"click",e[8]),C(k,"change",e[11])],I=!0)},p(_,[y]){y&1&&i!==(i=_[0].data.text??"")&&(l.value=i),y&4&&ie(c,"is-open",_[2]),_[2]?w?w.p(_,y):(w=Rn(_),w.c(),w.m(f,null)):w&&(w.d(1),w=null),y&1&&v!==(v=_[0].data.removeBottomSpacing)&&(k.checked=v)},i:fe,o:fe,d(_){_&&(M(t),M(o),M(r),M(p),M(f),M(d),M(g)),e[6](null),w&&w.d(),I=!1,ve(h)}}}function Ei(e,t,n){let{block:l}=t,{onChange:i}=t,o,r=!1;const p=m=>i({...l.data,...m});function f(){if(!o)return;const m=o,I="
",h=m.selectionStart??m.value.length,w=m.selectionEnd??h;m.value=m.value.slice(0,h)+I+m.value.slice(w);const _=h+I.length;m.selectionStart=m.selectionEnd=_,m.focus(),p({text:m.value})}function c(m){an[m?"unshift":"push"](()=>{o=m,n(1,o)})}const b=m=>p({text:m.target.value}),d=()=>n(2,r=!r);function g(){l.data.bottomSpacing=$t(this.value),n(0,l)}const k=m=>p({bottomSpacing:parseInt(m.target.value,10)||0}),v=m=>p({removeBottomSpacing:m.target.checked});return e.$$set=m=>{"block"in m&&n(0,l=m.block),"onChange"in m&&n(5,i=m.onChange)},[l,o,r,p,f,i,c,b,d,g,k,v]}class Pi extends Xe{constructor(t){super(),Ze(this,t,Ei,Ni,Ye,{block:0,onChange:5})}}function zn(e){let t,n=(e[0].data.text||"")+"";return{c(){t=u("div"),s(t,"class","block-preview paragraph-preview"),s(t,"aria-live","polite")},m(l,i){N(l,t,i),t.innerHTML=n},p(l,i){i&1&&n!==(n=(l[0].data.text||"")+"")&&(t.innerHTML=n)},d(l){l&&M(t)}}}function An(e){let t,n,l,i,o,r,p;return{c(){t=u("div"),n=u("label"),l=F(`Отступ снизу (px) + `),i=u("input"),s(i,"type","number"),i.value=o=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(f,c){N(f,t,c),a(t,n),a(n,l),a(n,i),r||(p=C(i,"input",e[15]),r=!0)},p(f,c){c&1&&o!==(o=f[0].data.bottomSpacing??40)&&i.value!==o&&(i.value=o)},d(f){f&&M(t),r=!1,p()}}}function Ri(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W=e[2]&&zn(e),T=e[3]&&An(e);return{c(){t=u("label"),n=F(`Текст блока + `),l=u("textarea"),o=B(),r=u("div"),p=u("button"),p.textContent="
",f=B(),c=u("button"),c.textContent="Жирный",b=B(),d=u("button"),d.textContent="—",g=B(),k=u("button"),k.textContent="Типограф",v=B(),m=u("button"),m.textContent="Авто
",I=B(),h=u("button"),w=F("HTML"),_=B(),W&&W.c(),y=B(),S=u("div"),H=u("button"),H.textContent="Доп. настройки",A=B(),T&&T.c(),O=B(),K=u("label"),q=u("input"),P=F(` + Убрать отступ после блока`),s(l,"class","paragraph-textarea"),l.value=i=e[0].data.text??"",s(p,"class","btn-inline"),s(p,"type","button"),s(c,"class","btn-inline"),s(c,"type","button"),s(d,"class","btn-inline"),s(d,"type","button"),s(k,"class","btn-inline"),s(k,"type","button"),s(m,"class","btn-inline"),s(m,"type","button"),s(h,"class","btn-inline push-right"),s(h,"type","button"),s(h,"aria-pressed",e[2]),ie(h,"active",e[2]),s(r,"class","btn-inline-row"),s(H,"class","btn-advanced-toggle"),s(H,"type","button"),ie(H,"is-open",e[3]),s(S,"class","advanced-wrapper"),s(q,"type","checkbox"),q.checked=L=e[0].data.removeBottomSpacing,s(K,"class","inline")},m(R,U){N(R,t,U),a(t,n),a(t,l),e[12](l),N(R,o,U),N(R,r,U),a(r,p),a(r,f),a(r,c),a(r,b),a(r,d),a(r,g),a(r,k),a(r,v),a(r,m),a(r,I),a(r,h),a(h,w),N(R,_,U),W&&W.m(R,U),N(R,y,U),N(R,S,U),a(S,H),a(S,A),T&&T.m(S,null),N(R,O,U),N(R,K,U),a(K,q),a(K,P),D||(Z=[C(l,"input",e[5]),C(p,"click",e[6]),C(c,"click",e[8]),C(d,"click",e[7]),C(k,"click",e[9]),C(m,"click",e[10]),C(h,"click",e[13]),C(H,"click",e[14]),C(q,"change",e[16])],D=!0)},p(R,[U]){U&1&&i!==(i=R[0].data.text??"")&&(l.value=i),U&4&&s(h,"aria-pressed",R[2]),U&4&&ie(h,"active",R[2]),R[2]?W?W.p(R,U):(W=zn(R),W.c(),W.m(y.parentNode,y)):W&&(W.d(1),W=null),U&8&&ie(H,"is-open",R[3]),R[3]?T?T.p(R,U):(T=An(R),T.c(),T.m(S,null)):T&&(T.d(1),T=null),U&1&&L!==(L=R[0].data.removeBottomSpacing)&&(q.checked=L)},i:fe,o:fe,d(R){R&&(M(t),M(o),M(r),M(_),M(y),M(S),M(O),M(K)),e[12](null),W&&W.d(R),T&&T.d(),D=!1,ve(Z)}}}function zi(e,t,n){let{block:l}=t,{onChange:i}=t,o,r=!1,p=!1;const f=L=>i({...l.data,...L});let c;const b=["в","во","без","до","для","за","из","изо","к","ко","на","над","о","об","обо","от","ото","по","под","подо","при","про","ради","с","со","у","через","черезо","между","перед","пред","около","после","вне"],d=["не"],g=["и","а","но","да","или"],k=[...g,...d,...b];function v(){c||(c=document.createElement("canvas").getContext("2d")),c.font="18px Helvetica, Arial, sans-serif"}function m(){o&&(n(1,o.style.height="auto",o),n(1,o.style.height=`${o.scrollHeight}px`,o))}function I(L){const P=L.target,D=P.value,Z=(D.slice(0,P.selectionStart??D.length).match(/\n/g)||[]).length,W=D.replace(/\r?\n/g,"
");if(W!==D){P.value=W;const T=(P.selectionStart??W.length)+Z*3;P.selectionStart=P.selectionEnd=T}f({text:W}),m()}function h(){if(!o)return;const L=o,P="
",D=L.selectionStart??L.value.length,Z=L.selectionEnd??D;L.value=L.value.slice(0,D)+P+L.value.slice(Z);const W=D+P.length;L.selectionStart=L.selectionEnd=W,L.focus(),f({text:L.value}),m()}function w(){if(!o)return;const L=o,P="—",D=L.selectionStart??L.value.length,Z=L.selectionEnd??D;L.value=L.value.slice(0,D)+P+L.value.slice(Z);const W=D+P.length;L.selectionStart=L.selectionEnd=W,L.focus(),f({text:L.value}),m()}function _(){if(!o)return;const L=o,P=L.selectionStart??0,D=L.selectionEnd??0,Z=L.value.slice(0,P),W=L.value.slice(P,D),T=L.value.slice(D),R='',U="";let $;if(P!==D)$=Z+R+W+U+T,L.value=$,L.selectionStart=P+R.length,L.selectionEnd=P+R.length+W.length;else{const x=R+U;$=Z+x+T,L.value=$;const Q=P+R.length;L.selectionStart=L.selectionEnd=Q}L.focus(),f({text:L.value}),m()}function y(){if(!o)return;const L=o;let P=L.value;P=P.replace(/\.\.\./g,"…").replace(/(^|[\s(])"([^"]+)"/g,"$1«$2»").replace(/--/g,"—").replace(/\s-\s/g," — ").replace(new RegExp(`(^|[\\s(])(${[...b,...d,...g].join("|")})\\s+`,"giu"),(Z,W,T)=>`${W}${T} `).replace(/\u00A0\s+/g," ").replace(/ {2,}/g," ").replace(/\s+,/g,",").replace(/\s+\./g,".").replace(/\s+!/g,"!").replace(/\s+\?/g,"?").replace(/\s+:/g,":"),L.value=P;const D=L.selectionEnd??P.length;L.selectionStart=L.selectionEnd=D,L.focus(),f({text:P}),m()}function S(){if(!o)return;v();const L=" ",P=520,D=c.measureText(" ").width,Z=o.value.replace(/ /g,L).replace(/\u00A0\s+/g,L).replace(/ {2,}/g," ").trim();if(!Z)return;const W=Z.split(/(<[^>]+>)/).filter(Boolean),T=[],R=[];let U=[],$=0;const x=()=>{const te=U.join("").trimEnd().replace(new RegExp(L,"g")," ");T.push(te),R.push([...U]),U=[],$=0},Q=te=>/^<[^>]+>$/.test(te),Y=()=>{for(let te=U.length-1;te>=0;te--){const ue=U[te];if(!Q(ue))return/[ \u00A0]$/.test(ue)}return!1},J=()=>{for(let te=U.length-1;te>=0;te--){const ue=U[te];if(Q(ue))continue;if(ue.trim())return{index:te,token:ue}}return null};W.forEach(te=>{if(/^<\s*br\s*\/?\s*>$/i.test(te)){U.length&&x();return}if(Q(te)){U.push(te);return}te.split(/[ \t\r\n]+/).filter(Boolean).forEach(he=>{const we=he.replace(new RegExp(L,"g")," "),ae=c.measureText(we).width;if(/^[-–—!?.,:;]+$/.test(we.trim())){if(U.length){U.push(he),$+=ae;return}if(T.length){const Me=T.pop()||"";T.push((Me+he).replace(new RegExp(L,"g")," "));return}U.push(he),$+=ae;return}const St=U.length>0&&!Y();if($+(St?D:0)+ae>P&&U.length){const Me=J();let Re=null;if(Me){const ht=Me.token.replace(new RegExp(L,"g")," ").trim().toLowerCase();k.includes(ht)&&(U.splice(Me.index,1),$-=c.measureText(ht).width,U.length&&U[U.length-1]===" "&&(U.pop(),$-=D),Re=Me.token)}x(),Re&&(U.push(Re),$+=c.measureText(Re.replace(new RegExp(L,"g")," ")).width)}St&&U.length&&(U.push(" "),$+=D),U.push(he),$+=ae})}),U.length&&x();const ee=te=>te.reduce((ue,se)=>!Q(se)&&se.trim()?ue+1:ue,0),V=te=>{let ue=[];for(;te.length;){const se=te.pop();if(Q(se)){ue.unshift(se);continue}if(se.trim()){ue.unshift(se);break}}for(;te.length&&!te[te.length-1].trim();)te.pop();return ue.length?ue:null};if(R.length>=2){const te=R[R.length-1],ue=R[R.length-2];if(ee(te)===1&&ee(ue)>1){const se=V(ue);se&&(ue.length&&!/[ \u00A0]$/.test(ue[ue.length-1]||"")&&se.unshift(" "),te.unshift(...se))}for(let se=0;se").replace(/\s*\s*/gi,"
");n(1,o.value=G,o);const re=o.value.length;n(1,o.selectionStart=n(1,o.selectionEnd=re,o),o),o.focus(),f({text:G}),m()}Wl(()=>{m()});function H(L){an[L?"unshift":"push"](()=>{o=L,n(1,o)})}const A=()=>n(2,r=!r),O=()=>n(3,p=!p),K=L=>f({bottomSpacing:parseInt(L.target.value,10)||0}),q=L=>f({removeBottomSpacing:L.target.checked});return e.$$set=L=>{"block"in L&&n(0,l=L.block),"onChange"in L&&n(11,i=L.onChange)},[l,o,r,p,f,I,h,w,_,y,S,i,H,A,O,K,q]}class Ai extends Xe{constructor(t){super(),Ze(this,t,zi,Ri,Ye,{block:0,onChange:11})}}function Fn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T;return{c(){t=u("div"),n=u("label"),l=F(`Ширина (px) + `),i=u("input"),r=B(),p=u("label"),f=F(`Высота (px) + `),c=u("input"),d=B(),g=u("label"),k=F(`Цвет фона (#hex) + `),v=u("input"),I=B(),h=u("label"),w=F(`Цвет текста (#hex) + `),_=u("input"),S=B(),H=u("label"),A=F(`Размер шрифта (px) + `),O=u("input"),q=B(),L=u("label"),P=F(`Отступ снизу (px) + `),D=u("input"),s(i,"type","number"),i.value=o=e[0].data.width??340,s(c,"type","number"),c.value=b=e[0].data.height??45,s(v,"type","text"),v.value=m=e[0].data.bgColor??"#242424",s(_,"type","text"),_.value=y=e[0].data.textColor??"#ffffff",s(O,"type","number"),O.value=K=e[0].data.fontSize??16,s(D,"type","number"),D.value=Z=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(R,U){N(R,t,U),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,O),a(t,q),a(t,L),a(L,P),a(L,D),W||(T=[C(i,"input",e[8]),C(c,"input",e[9]),C(v,"input",e[10]),C(_,"input",e[11]),C(O,"input",e[12]),C(D,"input",e[13])],W=!0)},p(R,U){U&1&&o!==(o=R[0].data.width??340)&&i.value!==o&&(i.value=o),U&1&&b!==(b=R[0].data.height??45)&&c.value!==b&&(c.value=b),U&1&&m!==(m=R[0].data.bgColor??"#242424")&&v.value!==m&&(v.value=m),U&1&&y!==(y=R[0].data.textColor??"#ffffff")&&_.value!==y&&(_.value=y),U&1&&K!==(K=R[0].data.fontSize??16)&&O.value!==K&&(O.value=K),U&1&&Z!==(Z=R[0].data.bottomSpacing??40)&&D.value!==Z&&(D.value=Z)},d(R){R&&M(t),W=!1,ve(T)}}}function Fi(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S=e[1]&&Fn(e);return{c(){t=u("label"),n=F(`Текст кнопки + `),l=u("input"),o=B(),r=u("label"),p=F(`Ссылка (href) + `),f=u("input"),b=B(),d=u("label"),g=u("input"),v=F(` + Убрать отступ после блока`),m=B(),I=u("div"),h=u("button"),h.textContent="Доп. настройки",w=B(),S&&S.c(),s(l,"type","text"),l.value=i=e[0].data.text??"",s(f,"type","text"),f.value=c=e[0].data.href??"",s(g,"type","checkbox"),g.checked=k=e[0].data.removeBottomSpacing,s(d,"class","inline"),s(h,"class","btn-advanced-toggle"),s(h,"type","button"),ie(h,"is-open",e[1]),s(I,"class","advanced-wrapper")},m(H,A){N(H,t,A),a(t,n),a(t,l),N(H,o,A),N(H,r,A),a(r,p),a(r,f),N(H,b,A),N(H,d,A),a(d,g),a(d,v),N(H,m,A),N(H,I,A),a(I,h),a(I,w),S&&S.m(I,null),_||(y=[C(l,"input",e[4]),C(f,"input",e[5]),C(g,"change",e[6]),C(h,"click",e[7])],_=!0)},p(H,[A]){A&1&&i!==(i=H[0].data.text??"")&&l.value!==i&&(l.value=i),A&1&&c!==(c=H[0].data.href??"")&&f.value!==c&&(f.value=c),A&1&&k!==(k=H[0].data.removeBottomSpacing)&&(g.checked=k),A&2&&ie(h,"is-open",H[1]),H[1]?S?S.p(H,A):(S=Fn(H),S.c(),S.m(I,null)):S&&(S.d(1),S=null)},i:fe,o:fe,d(H){H&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I)),S&&S.d(),_=!1,ve(y)}}}function Ui(e,t,n){let{block:l}=t,{onChange:i}=t,o=!1;const r=h=>i({...l.data,...h}),p=h=>r({text:h.target.value}),f=h=>r({href:h.target.value}),c=h=>r({removeBottomSpacing:h.target.checked}),b=()=>n(1,o=!o),d=h=>r({width:parseInt(h.target.value,10)||0}),g=h=>r({height:parseInt(h.target.value,10)||0}),k=h=>r({bgColor:h.target.value}),v=h=>r({textColor:h.target.value}),m=h=>r({fontSize:parseInt(h.target.value,10)||0}),I=h=>r({bottomSpacing:parseInt(h.target.value,10)||0});return e.$$set=h=>{"block"in h&&n(0,l=h.block),"onChange"in h&&n(3,i=h.onChange)},[l,o,r,i,p,f,c,b,d,g,k,v,m,I]}class Di extends Xe{constructor(t){super(),Ze(this,t,Ui,Fi,Ye,{block:0,onChange:3})}}function Un(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x,Q;return{c(){t=u("div"),n=u("label"),l=F(`Ширина (px) + `),i=u("input"),r=B(),p=u("label"),f=F(`Высота (px) + `),c=u("input"),d=B(),g=u("label"),k=F(`Отступ между кнопками (px) + `),v=u("input"),I=B(),h=u("label"),w=F(`Цвет фона (#hex) + `),_=u("input"),S=B(),H=u("label"),A=F(`Цвет текста (#hex) + `),O=u("input"),q=B(),L=u("label"),P=F(`Размер шрифта (px) + `),D=u("input"),W=B(),T=u("label"),R=F(`Отступ снизу (px) + `),U=u("input"),s(i,"type","number"),i.value=o=e[0].data.width??275,s(c,"type","number"),c.value=b=e[0].data.height??45,s(v,"type","number"),v.value=m=e[0].data.gap??20,s(_,"type","text"),_.value=y=e[0].data.bgColor??"#242424",s(O,"type","text"),O.value=K=e[0].data.textColor??"#ffffff",s(D,"type","number"),D.value=Z=e[0].data.fontSize??16,s(U,"type","number"),U.value=$=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(Y,J){N(Y,t,J),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,O),a(t,q),a(t,L),a(L,P),a(L,D),a(t,W),a(t,T),a(T,R),a(T,U),x||(Q=[C(i,"input",e[10]),C(c,"input",e[11]),C(v,"input",e[12]),C(_,"input",e[13]),C(O,"input",e[14]),C(D,"input",e[15]),C(U,"input",e[16])],x=!0)},p(Y,J){J&1&&o!==(o=Y[0].data.width??275)&&i.value!==o&&(i.value=o),J&1&&b!==(b=Y[0].data.height??45)&&c.value!==b&&(c.value=b),J&1&&m!==(m=Y[0].data.gap??20)&&v.value!==m&&(v.value=m),J&1&&y!==(y=Y[0].data.bgColor??"#242424")&&_.value!==y&&(_.value=y),J&1&&K!==(K=Y[0].data.textColor??"#ffffff")&&O.value!==K&&(O.value=K),J&1&&Z!==(Z=Y[0].data.fontSize??16)&&D.value!==Z&&(D.value=Z),J&1&&$!==($=Y[0].data.bottomSpacing??40)&&U.value!==$&&(U.value=$)},d(Y){Y&&M(t),x=!1,ve(Q)}}}function Oi(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W=e[1]&&Un(e);return{c(){t=u("label"),n=F(`Левая кнопка — текст + `),l=u("input"),o=B(),r=u("label"),p=F(`Левая кнопка — ссылка + `),f=u("input"),b=B(),d=u("label"),g=F(`Правая кнопка — текст + `),k=u("input"),m=B(),I=u("label"),h=F(`Правая кнопка — ссылка + `),w=u("input"),y=B(),S=u("label"),H=u("input"),O=F(` + Убрать отступ после блока`),K=B(),q=u("div"),L=u("button"),L.textContent="Доп. настройки",P=B(),W&&W.c(),s(l,"type","text"),l.value=i=e[0].data.leftText??"",s(f,"type","text"),f.value=c=e[0].data.leftHref??"",s(k,"type","text"),k.value=v=e[0].data.rightText??"",s(w,"type","text"),w.value=_=e[0].data.rightHref??"",s(H,"type","checkbox"),H.checked=A=e[0].data.removeBottomSpacing,s(S,"class","inline"),s(L,"class","btn-advanced-toggle"),s(L,"type","button"),ie(L,"is-open",e[1]),s(q,"class","advanced-wrapper")},m(T,R){N(T,t,R),a(t,n),a(t,l),N(T,o,R),N(T,r,R),a(r,p),a(r,f),N(T,b,R),N(T,d,R),a(d,g),a(d,k),N(T,m,R),N(T,I,R),a(I,h),a(I,w),N(T,y,R),N(T,S,R),a(S,H),a(S,O),N(T,K,R),N(T,q,R),a(q,L),a(q,P),W&&W.m(q,null),D||(Z=[C(l,"input",e[4]),C(f,"input",e[5]),C(k,"input",e[6]),C(w,"input",e[7]),C(H,"change",e[8]),C(L,"click",e[9])],D=!0)},p(T,[R]){R&1&&i!==(i=T[0].data.leftText??"")&&l.value!==i&&(l.value=i),R&1&&c!==(c=T[0].data.leftHref??"")&&f.value!==c&&(f.value=c),R&1&&v!==(v=T[0].data.rightText??"")&&k.value!==v&&(k.value=v),R&1&&_!==(_=T[0].data.rightHref??"")&&w.value!==_&&(w.value=_),R&1&&A!==(A=T[0].data.removeBottomSpacing)&&(H.checked=A),R&2&&ie(L,"is-open",T[1]),T[1]?W?W.p(T,R):(W=Un(T),W.c(),W.m(q,null)):W&&(W.d(1),W=null)},i:fe,o:fe,d(T){T&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I),M(y),M(S),M(K),M(q)),W&&W.d(),D=!1,ve(Z)}}}function Wi(e,t,n){let{block:l}=t,{onChange:i}=t,o=!1;const r=y=>i({...l.data,...y}),p=y=>r({leftText:y.target.value}),f=y=>r({leftHref:y.target.value}),c=y=>r({rightText:y.target.value}),b=y=>r({rightHref:y.target.value}),d=y=>r({removeBottomSpacing:y.target.checked}),g=()=>n(1,o=!o),k=y=>r({width:parseInt(y.target.value,10)||0}),v=y=>r({height:parseInt(y.target.value,10)||0}),m=y=>r({gap:parseInt(y.target.value,10)||0}),I=y=>r({bgColor:y.target.value}),h=y=>r({textColor:y.target.value}),w=y=>r({fontSize:parseInt(y.target.value,10)||0}),_=y=>r({bottomSpacing:parseInt(y.target.value,10)||0});return e.$$set=y=>{"block"in y&&n(0,l=y.block),"onChange"in y&&n(3,i=y.onChange)},[l,o,r,i,p,f,c,b,d,g,k,v,m,I,h,w,_]}class ji extends Xe{constructor(t){super(),Ze(this,t,Wi,Oi,Ye,{block:0,onChange:3})}}function Dn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x,Q;return{c(){t=u("div"),n=u("label"),l=F(`Ширина (px) + `),i=u("input"),r=B(),p=u("label"),f=F(`Высота (px) + `),c=u("input"),d=B(),g=u("label"),k=F(`Отступ между кнопками (px) + `),v=u("input"),I=B(),h=u("label"),w=F(`Цвет фона (#hex) + `),_=u("input"),S=B(),H=u("label"),A=F(`Цвет текста (#hex) + `),O=u("input"),q=B(),L=u("label"),P=F(`Размер шрифта (px) + `),D=u("input"),W=B(),T=u("label"),R=F(`Отступ снизу (px) + `),U=u("input"),s(i,"type","number"),i.value=o=e[0].data.width??174,s(c,"type","number"),c.value=b=e[0].data.height??45,s(v,"type","number"),v.value=m=e[0].data.gap??24,s(_,"type","text"),_.value=y=e[0].data.bgColor??"#242424",s(O,"type","text"),O.value=K=e[0].data.textColor??"#ffffff",s(D,"type","number"),D.value=Z=e[0].data.fontSize??16,s(U,"type","number"),U.value=$=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(Y,J){N(Y,t,J),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,O),a(t,q),a(t,L),a(L,P),a(L,D),a(t,W),a(t,T),a(T,R),a(T,U),x||(Q=[C(i,"input",e[12]),C(c,"input",e[13]),C(v,"input",e[14]),C(_,"input",e[15]),C(O,"input",e[16]),C(D,"input",e[17]),C(U,"input",e[18])],x=!0)},p(Y,J){J&1&&o!==(o=Y[0].data.width??174)&&i.value!==o&&(i.value=o),J&1&&b!==(b=Y[0].data.height??45)&&c.value!==b&&(c.value=b),J&1&&m!==(m=Y[0].data.gap??24)&&v.value!==m&&(v.value=m),J&1&&y!==(y=Y[0].data.bgColor??"#242424")&&_.value!==y&&(_.value=y),J&1&&K!==(K=Y[0].data.textColor??"#ffffff")&&O.value!==K&&(O.value=K),J&1&&Z!==(Z=Y[0].data.fontSize??16)&&D.value!==Z&&(D.value=Z),J&1&&$!==($=Y[0].data.bottomSpacing??40)&&U.value!==$&&(U.value=$)},d(Y){Y&&M(t),x=!1,ve(Q)}}}function Vi(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x,Q,Y,J,ee,V=e[1]&&Dn(e);return{c(){t=u("label"),n=F(`Левая кнопка — текст + `),l=u("input"),o=B(),r=u("label"),p=F(`Левая кнопка — ссылка + `),f=u("input"),b=B(),d=u("label"),g=F(`Средняя кнопка — текст + `),k=u("input"),m=B(),I=u("label"),h=F(`Средняя кнопка — ссылка + `),w=u("input"),y=B(),S=u("label"),H=F(`Правая кнопка — текст + `),A=u("input"),K=B(),q=u("label"),L=F(`Правая кнопка — ссылка + `),P=u("input"),Z=B(),W=u("label"),T=u("input"),U=F(` + Убрать отступ после блока`),$=B(),x=u("div"),Q=u("button"),Q.textContent="Доп. настройки",Y=B(),V&&V.c(),s(l,"type","text"),l.value=i=e[0].data.leftText??"",s(f,"type","text"),f.value=c=e[0].data.leftHref??"",s(k,"type","text"),k.value=v=e[0].data.centerText??"",s(w,"type","text"),w.value=_=e[0].data.centerHref??"",s(A,"type","text"),A.value=O=e[0].data.rightText??"",s(P,"type","text"),P.value=D=e[0].data.rightHref??"",s(T,"type","checkbox"),T.checked=R=e[0].data.removeBottomSpacing,s(W,"class","inline"),s(Q,"class","btn-advanced-toggle"),s(Q,"type","button"),ie(Q,"is-open",e[1]),s(x,"class","advanced-wrapper")},m(z,G){N(z,t,G),a(t,n),a(t,l),N(z,o,G),N(z,r,G),a(r,p),a(r,f),N(z,b,G),N(z,d,G),a(d,g),a(d,k),N(z,m,G),N(z,I,G),a(I,h),a(I,w),N(z,y,G),N(z,S,G),a(S,H),a(S,A),N(z,K,G),N(z,q,G),a(q,L),a(q,P),N(z,Z,G),N(z,W,G),a(W,T),a(W,U),N(z,$,G),N(z,x,G),a(x,Q),a(x,Y),V&&V.m(x,null),J||(ee=[C(l,"input",e[4]),C(f,"input",e[5]),C(k,"input",e[6]),C(w,"input",e[7]),C(A,"input",e[8]),C(P,"input",e[9]),C(T,"change",e[10]),C(Q,"click",e[11])],J=!0)},p(z,[G]){G&1&&i!==(i=z[0].data.leftText??"")&&l.value!==i&&(l.value=i),G&1&&c!==(c=z[0].data.leftHref??"")&&f.value!==c&&(f.value=c),G&1&&v!==(v=z[0].data.centerText??"")&&k.value!==v&&(k.value=v),G&1&&_!==(_=z[0].data.centerHref??"")&&w.value!==_&&(w.value=_),G&1&&O!==(O=z[0].data.rightText??"")&&A.value!==O&&(A.value=O),G&1&&D!==(D=z[0].data.rightHref??"")&&P.value!==D&&(P.value=D),G&1&&R!==(R=z[0].data.removeBottomSpacing)&&(T.checked=R),G&2&&ie(Q,"is-open",z[1]),z[1]?V?V.p(z,G):(V=Dn(z),V.c(),V.m(x,null)):V&&(V.d(1),V=null)},i:fe,o:fe,d(z){z&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I),M(y),M(S),M(K),M(q),M(Z),M(W),M($),M(x)),V&&V.d(),J=!1,ve(ee)}}}function qi(e,t,n){let{block:l}=t,{onChange:i}=t,o=!1;const r=H=>i({...l.data,...H}),p=H=>r({leftText:H.target.value}),f=H=>r({leftHref:H.target.value}),c=H=>r({centerText:H.target.value}),b=H=>r({centerHref:H.target.value}),d=H=>r({rightText:H.target.value}),g=H=>r({rightHref:H.target.value}),k=H=>r({removeBottomSpacing:H.target.checked}),v=()=>n(1,o=!o),m=H=>r({width:parseInt(H.target.value,10)||0}),I=H=>r({height:parseInt(H.target.value,10)||0}),h=H=>r({gap:parseInt(H.target.value,10)||0}),w=H=>r({bgColor:H.target.value}),_=H=>r({textColor:H.target.value}),y=H=>r({fontSize:parseInt(H.target.value,10)||0}),S=H=>r({bottomSpacing:parseInt(H.target.value,10)||0});return e.$$set=H=>{"block"in H&&n(0,l=H.block),"onChange"in H&&n(3,i=H.onChange)},[l,o,r,i,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S]}class Gi extends Xe{constructor(t){super(),Ze(this,t,qi,Vi,Ye,{block:0,onChange:3})}}function On(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h;return{c(){t=u("div"),n=u("label"),l=F(`Расширение файла + `),i=u("input"),r=B(),p=u("label"),f=F(`Отступ снизу (px) + `),c=u("input"),d=B(),g=u("label"),k=u("input"),m=F(` + Убрать отступ после блока`),s(i,"type","text"),i.value=o=e[0].data.imageExtension??".png",s(c,"type","number"),c.value=b=e[0].data.bottomSpacing??40,s(k,"type","checkbox"),k.checked=v=e[0].data.removeBottomSpacing,s(g,"class","inline"),s(t,"class","advanced-panel")},m(w,_){N(w,t,_),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,m),I||(h=[C(i,"input",e[7]),C(c,"input",e[8]),C(k,"change",e[9])],I=!0)},p(w,_){_&1&&o!==(o=w[0].data.imageExtension??".png")&&i.value!==o&&(i.value=o),_&1&&b!==(b=w[0].data.bottomSpacing??40)&&c.value!==b&&(c.value=b),_&1&&v!==(v=w[0].data.removeBottomSpacing)&&(k.checked=v)},d(w){w&&M(t),I=!1,ve(h)}}}function Ki(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I=e[1]&&On(e);return{c(){t=u("label"),n=F(`Ссылка (href) + `),l=u("input"),o=B(),r=u("label"),p=F(`Имя файла изображения (без расширения) + `),f=u("input"),b=B(),d=u("div"),g=u("button"),g.textContent="Доп. настройки",k=B(),I&&I.c(),s(l,"type","text"),l.value=i=e[0].data.href??"",s(f,"type","text"),f.value=c=e[0].data.imageBaseName??"",s(g,"class","btn-advanced-toggle"),s(g,"type","button"),ie(g,"is-open",e[1]),s(d,"class","advanced-wrapper")},m(h,w){N(h,t,w),a(t,n),a(t,l),N(h,o,w),N(h,r,w),a(r,p),a(r,f),N(h,b,w),N(h,d,w),a(d,g),a(d,k),I&&I.m(d,null),v||(m=[C(l,"input",e[4]),C(f,"input",e[5]),C(g,"click",e[6])],v=!0)},p(h,[w]){w&1&&i!==(i=h[0].data.href??"")&&l.value!==i&&(l.value=i),w&1&&c!==(c=h[0].data.imageBaseName??"")&&f.value!==c&&(f.value=c),w&2&&ie(g,"is-open",h[1]),h[1]?I?I.p(h,w):(I=On(h),I.c(),I.m(d,null)):I&&(I.d(1),I=null)},i:fe,o:fe,d(h){h&&(M(t),M(o),M(r),M(b),M(d)),I&&I.d(),v=!1,ve(m)}}}function Ji(e,t,n){let{block:l}=t,{onChange:i}=t;const o=k=>i({...l.data,...k});let r=!1;const p=k=>o({href:k.target.value}),f=k=>o({imageBaseName:k.target.value}),c=()=>n(1,r=!r),b=k=>o({imageExtension:k.target.value}),d=k=>o({bottomSpacing:parseInt(k.target.value,10)||0}),g=k=>o({removeBottomSpacing:k.target.checked});return e.$$set=k=>{"block"in k&&n(0,l=k.block),"onChange"in k&&n(3,i=k.onChange)},[l,r,o,i,p,f,c,b,d,g]}class Yi extends Xe{constructor(t){super(),Ze(this,t,Ji,Ki,Ye,{block:0,onChange:3})}}function Wn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L;return{c(){t=u("div"),n=u("label"),l=F(`Расширение файла + `),i=u("input"),r=B(),p=u("label"),f=F(`Высота баннера (px) + `),c=u("input"),d=B(),g=u("label"),k=F(`Отступ сверху (px) + `),v=u("input"),I=B(),h=u("label"),w=F(`Отступ снизу (px) + `),_=u("input"),S=B(),H=u("label"),A=u("input"),K=F(` + Убрать отступ после блока`),s(i,"type","text"),i.value=o=e[0].data.imageExtension??".png",s(c,"type","number"),c.value=b=e[0].data.height??293,s(v,"type","number"),v.value=m=e[0].data.topSpacing??40,s(_,"type","number"),_.value=y=e[0].data.bottomSpacing??0,s(A,"type","checkbox"),A.checked=O=e[0].data.removeBottomSpacing,s(H,"class","inline"),s(t,"class","advanced-panel")},m(P,D){N(P,t,D),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,K),q||(L=[C(i,"input",e[6]),C(c,"input",e[7]),C(v,"input",e[8]),C(_,"input",e[9]),C(A,"change",e[10])],q=!0)},p(P,D){D&1&&o!==(o=P[0].data.imageExtension??".png")&&i.value!==o&&(i.value=o),D&1&&b!==(b=P[0].data.height??293)&&c.value!==b&&(c.value=b),D&1&&m!==(m=P[0].data.topSpacing??40)&&v.value!==m&&(v.value=m),D&1&&y!==(y=P[0].data.bottomSpacing??0)&&_.value!==y&&(_.value=y),D&1&&O!==(O=P[0].data.removeBottomSpacing)&&(A.checked=O)},d(P){P&&M(t),q=!1,ve(L)}}}function Qi(e){let t,n,l,i,o,r,p,f,c,b,d=e[1]&&Wn(e);return{c(){t=u("label"),n=F(`Имя файла (без расширения) + `),l=u("input"),o=B(),r=u("div"),p=u("button"),p.textContent="Доп. настройки",f=B(),d&&d.c(),s(l,"type","text"),l.value=i=e[0].data.imageBaseName??"",s(p,"class","btn-advanced-toggle"),s(p,"type","button"),ie(p,"is-open",e[1]),s(r,"class","advanced-wrapper")},m(g,k){N(g,t,k),a(t,n),a(t,l),N(g,o,k),N(g,r,k),a(r,p),a(r,f),d&&d.m(r,null),c||(b=[C(l,"input",e[4]),C(p,"click",e[5])],c=!0)},p(g,[k]){k&1&&i!==(i=g[0].data.imageBaseName??"")&&l.value!==i&&(l.value=i),k&2&&ie(p,"is-open",g[1]),g[1]?d?d.p(g,k):(d=Wn(g),d.c(),d.m(r,null)):d&&(d.d(1),d=null)},i:fe,o:fe,d(g){g&&(M(t),M(o),M(r)),d&&d.d(),c=!1,ve(b)}}}function Zi(e,t,n){let{block:l}=t,{onChange:i}=t;const o=v=>i({...l.data,...v});let r=!1;const p=v=>o({imageBaseName:v.target.value}),f=()=>n(1,r=!r),c=v=>o({imageExtension:v.target.value}),b=v=>o({height:parseInt(v.target.value,10)||0}),d=v=>o({topSpacing:parseInt(v.target.value,10)||0}),g=v=>o({bottomSpacing:parseInt(v.target.value,10)||0}),k=v=>o({removeBottomSpacing:v.target.checked});return e.$$set=v=>{"block"in v&&n(0,l=v.block),"onChange"in v&&n(3,i=v.onChange)},[l,r,o,i,p,f,c,b,d,g,k]}class Xi extends Xe{constructor(t){super(),Ze(this,t,Zi,Qi,Ye,{block:0,onChange:3})}}function jn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T;return{c(){t=u("div"),n=u("label"),l=F(`Левый баннер — расширение + `),i=u("input"),r=B(),p=u("label"),f=F(`Правый баннер — расширение + `),c=u("input"),d=B(),g=u("label"),k=F(`Ширина баннеров (px) + `),v=u("input"),I=B(),h=u("label"),w=F(`Отступ между баннерами (px) + `),_=u("input"),S=B(),H=u("label"),A=F(`Отступ снизу (px) + `),O=u("input"),q=B(),L=u("label"),P=u("input"),Z=F(` + Убрать отступ после блока`),s(i,"type","text"),i.value=o=e[0].data.leftImageExtension??".png",s(c,"type","text"),c.value=b=e[0].data.rightImageExtension??".png",s(v,"type","number"),v.value=m=e[0].data.width??270,s(_,"type","number"),_.value=y=e[0].data.gap??30,s(O,"type","number"),O.value=K=e[0].data.bottomSpacing??40,s(P,"type","checkbox"),P.checked=D=e[0].data.removeBottomSpacing,s(L,"class","inline"),s(t,"class","advanced-panel")},m(R,U){N(R,t,U),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,O),a(t,q),a(t,L),a(L,P),a(L,Z),W||(T=[C(i,"input",e[11]),C(c,"input",e[12]),C(v,"input",e[13]),C(_,"input",e[14]),C(O,"input",e[15]),C(P,"change",e[16])],W=!0)},p(R,U){U&1&&o!==(o=R[0].data.leftImageExtension??".png")&&i.value!==o&&(i.value=o),U&1&&b!==(b=R[0].data.rightImageExtension??".png")&&c.value!==b&&(c.value=b),U&1&&m!==(m=R[0].data.width??270)&&v.value!==m&&(v.value=m),U&1&&y!==(y=R[0].data.gap??30)&&_.value!==y&&(_.value=y),U&1&&K!==(K=R[0].data.bottomSpacing??40)&&O.value!==K&&(O.value=K),U&1&&D!==(D=R[0].data.removeBottomSpacing)&&(P.checked=D)},d(R){R&&M(t),W=!1,ve(T)}}}function xi(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x=e[1]&&jn(e);return{c(){t=u("label"),n=F(`Левый баннер — ссылка + `),l=u("input"),o=B(),r=u("label"),p=F(`Левый баннер — имя файла + `),f=u("input"),b=B(),d=u("label"),g=F(`Левый баннер — текст + `),k=u("input"),m=B(),I=u("label"),h=F(`Правый баннер — ссылка + `),w=u("input"),y=B(),S=u("label"),H=F(`Правый баннер — имя файла + `),A=u("input"),K=B(),q=u("label"),L=F(`Правый баннер — текст + `),P=u("input"),Z=B(),W=u("div"),T=u("button"),T.textContent="Доп. настройки",R=B(),x&&x.c(),s(l,"type","text"),l.value=i=e[0].data.leftHref??"",s(f,"type","text"),f.value=c=e[0].data.leftImageBaseName??"",s(k,"type","text"),k.value=v=e[0].data.leftText??"",s(w,"type","text"),w.value=_=e[0].data.rightHref??"",s(A,"type","text"),A.value=O=e[0].data.rightImageBaseName??"",s(P,"type","text"),P.value=D=e[0].data.rightText??"",s(T,"class","btn-advanced-toggle"),s(T,"type","button"),ie(T,"is-open",e[1]),s(W,"class","advanced-wrapper")},m(Q,Y){N(Q,t,Y),a(t,n),a(t,l),N(Q,o,Y),N(Q,r,Y),a(r,p),a(r,f),N(Q,b,Y),N(Q,d,Y),a(d,g),a(d,k),N(Q,m,Y),N(Q,I,Y),a(I,h),a(I,w),N(Q,y,Y),N(Q,S,Y),a(S,H),a(S,A),N(Q,K,Y),N(Q,q,Y),a(q,L),a(q,P),N(Q,Z,Y),N(Q,W,Y),a(W,T),a(W,R),x&&x.m(W,null),U||($=[C(l,"input",e[4]),C(f,"input",e[5]),C(k,"input",e[6]),C(w,"input",e[7]),C(A,"input",e[8]),C(P,"input",e[9]),C(T,"click",e[10])],U=!0)},p(Q,[Y]){Y&1&&i!==(i=Q[0].data.leftHref??"")&&l.value!==i&&(l.value=i),Y&1&&c!==(c=Q[0].data.leftImageBaseName??"")&&f.value!==c&&(f.value=c),Y&1&&v!==(v=Q[0].data.leftText??"")&&k.value!==v&&(k.value=v),Y&1&&_!==(_=Q[0].data.rightHref??"")&&w.value!==_&&(w.value=_),Y&1&&O!==(O=Q[0].data.rightImageBaseName??"")&&A.value!==O&&(A.value=O),Y&1&&D!==(D=Q[0].data.rightText??"")&&P.value!==D&&(P.value=D),Y&2&&ie(T,"is-open",Q[1]),Q[1]?x?x.p(Q,Y):(x=jn(Q),x.c(),x.m(W,null)):x&&(x.d(1),x=null)},i:fe,o:fe,d(Q){Q&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I),M(y),M(S),M(K),M(q),M(Z),M(W)),x&&x.d(),U=!1,ve($)}}}function $i(e,t,n){let{block:l}=t,{onChange:i}=t;const o=y=>i({...l.data,...y});let r=!1;const p=y=>o({leftHref:y.target.value}),f=y=>o({leftImageBaseName:y.target.value}),c=y=>o({leftText:y.target.value}),b=y=>o({rightHref:y.target.value}),d=y=>o({rightImageBaseName:y.target.value}),g=y=>o({rightText:y.target.value}),k=()=>n(1,r=!r),v=y=>o({leftImageExtension:y.target.value}),m=y=>o({rightImageExtension:y.target.value}),I=y=>o({width:parseInt(y.target.value,10)||0}),h=y=>o({gap:parseInt(y.target.value,10)||0}),w=y=>o({bottomSpacing:parseInt(y.target.value,10)||0}),_=y=>o({removeBottomSpacing:y.target.checked});return e.$$set=y=>{"block"in y&&n(0,l=y.block),"onChange"in y&&n(3,i=y.onChange)},[l,r,o,i,p,f,c,b,d,g,k,v,m,I,h,w,_]}class eo extends Xe{constructor(t){super(),Ze(this,t,$i,xi,Ye,{block:0,onChange:3})}}function Vn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T;return{c(){t=u("div"),n=u("label"),l=F(`Левый баннер — расширение + `),i=u("input"),r=B(),p=u("label"),f=F(`Правый баннер — расширение + `),c=u("input"),d=B(),g=u("label"),k=F(`Ширина баннеров (px) + `),v=u("input"),I=B(),h=u("label"),w=F(`Отступ между баннерами (px) + `),_=u("input"),S=B(),H=u("label"),A=F(`Отступ снизу (px) + `),O=u("input"),q=B(),L=u("label"),P=u("input"),Z=F(` + Убрать отступ после блока`),s(i,"type","text"),i.value=o=e[0].data.leftImageExtension??".png",s(c,"type","text"),c.value=b=e[0].data.rightImageExtension??".png",s(v,"type","number"),v.value=m=e[0].data.width??270,s(_,"type","number"),_.value=y=e[0].data.gap??30,s(O,"type","number"),O.value=K=e[0].data.bottomSpacing??40,s(P,"type","checkbox"),P.checked=D=e[0].data.removeBottomSpacing,s(L,"class","inline"),s(t,"class","advanced-panel")},m(R,U){N(R,t,U),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,O),a(t,q),a(t,L),a(L,P),a(L,Z),W||(T=[C(i,"input",e[9]),C(c,"input",e[10]),C(v,"input",e[11]),C(_,"input",e[12]),C(O,"input",e[13]),C(P,"change",e[14])],W=!0)},p(R,U){U&1&&o!==(o=R[0].data.leftImageExtension??".png")&&i.value!==o&&(i.value=o),U&1&&b!==(b=R[0].data.rightImageExtension??".png")&&c.value!==b&&(c.value=b),U&1&&m!==(m=R[0].data.width??270)&&v.value!==m&&(v.value=m),U&1&&y!==(y=R[0].data.gap??30)&&_.value!==y&&(_.value=y),U&1&&K!==(K=R[0].data.bottomSpacing??40)&&O.value!==K&&(O.value=K),U&1&&D!==(D=R[0].data.removeBottomSpacing)&&(P.checked=D)},d(R){R&&M(t),W=!1,ve(T)}}}function to(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q=e[1]&&Vn(e);return{c(){t=u("label"),n=F(`Левый баннер — ссылка + `),l=u("input"),o=B(),r=u("label"),p=F(`Левый баннер — имя файла + `),f=u("input"),b=B(),d=u("label"),g=F(`Правый баннер — ссылка + `),k=u("input"),m=B(),I=u("label"),h=F(`Правый баннер — имя файла + `),w=u("input"),y=B(),S=u("div"),H=u("button"),H.textContent="Доп. настройки",A=B(),q&&q.c(),s(l,"type","text"),l.value=i=e[0].data.leftHref??"",s(f,"type","text"),f.value=c=e[0].data.leftImageBaseName??"",s(k,"type","text"),k.value=v=e[0].data.rightHref??"",s(w,"type","text"),w.value=_=e[0].data.rightImageBaseName??"",s(H,"class","btn-advanced-toggle"),s(H,"type","button"),ie(H,"is-open",e[1]),s(S,"class","advanced-wrapper")},m(L,P){N(L,t,P),a(t,n),a(t,l),N(L,o,P),N(L,r,P),a(r,p),a(r,f),N(L,b,P),N(L,d,P),a(d,g),a(d,k),N(L,m,P),N(L,I,P),a(I,h),a(I,w),N(L,y,P),N(L,S,P),a(S,H),a(S,A),q&&q.m(S,null),O||(K=[C(l,"input",e[4]),C(f,"input",e[5]),C(k,"input",e[6]),C(w,"input",e[7]),C(H,"click",e[8])],O=!0)},p(L,[P]){P&1&&i!==(i=L[0].data.leftHref??"")&&l.value!==i&&(l.value=i),P&1&&c!==(c=L[0].data.leftImageBaseName??"")&&f.value!==c&&(f.value=c),P&1&&v!==(v=L[0].data.rightHref??"")&&k.value!==v&&(k.value=v),P&1&&_!==(_=L[0].data.rightImageBaseName??"")&&w.value!==_&&(w.value=_),P&2&&ie(H,"is-open",L[1]),L[1]?q?q.p(L,P):(q=Vn(L),q.c(),q.m(S,null)):q&&(q.d(1),q=null)},i:fe,o:fe,d(L){L&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I),M(y),M(S)),q&&q.d(),O=!1,ve(K)}}}function no(e,t,n){let{block:l}=t,{onChange:i}=t;const o=w=>i({...l.data,...w});let r=!1;const p=w=>o({leftHref:w.target.value}),f=w=>o({leftImageBaseName:w.target.value}),c=w=>o({rightHref:w.target.value}),b=w=>o({rightImageBaseName:w.target.value}),d=()=>n(1,r=!r),g=w=>o({leftImageExtension:w.target.value}),k=w=>o({rightImageExtension:w.target.value}),v=w=>o({width:parseInt(w.target.value,10)||0}),m=w=>o({gap:parseInt(w.target.value,10)||0}),I=w=>o({bottomSpacing:parseInt(w.target.value,10)||0}),h=w=>o({removeBottomSpacing:w.target.checked});return e.$$set=w=>{"block"in w&&n(0,l=w.block),"onChange"in w&&n(3,i=w.onChange)},[l,r,o,i,p,f,c,b,d,g,k,v,m,I,h]}class lo extends Xe{constructor(t){super(),Ze(this,t,no,to,Ye,{block:0,onChange:3})}}function qn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x,Q;return{c(){t=u("div"),n=u("label"),l=F(`Баннер 1 — расширение + `),i=u("input"),r=B(),p=u("label"),f=F(`Баннер 2 — расширение + `),c=u("input"),d=B(),g=u("label"),k=F(`Баннер 3 — расширение + `),v=u("input"),I=B(),h=u("label"),w=F(`Ширина баннеров (px) + `),_=u("input"),S=B(),H=u("label"),A=F(`Отступ между баннерами (px) + `),O=u("input"),q=B(),L=u("label"),P=F(`Отступ снизу (px) + `),D=u("input"),W=B(),T=u("label"),R=u("input"),$=F(` + Убрать отступ после блока`),s(i,"type","text"),i.value=o=e[0].data.imgExtension1??".png",s(c,"type","text"),c.value=b=e[0].data.imgExtension2??".png",s(v,"type","text"),v.value=m=e[0].data.imgExtension3??".png",s(_,"type","number"),_.value=y=e[0].data.width??170,s(O,"type","number"),O.value=K=e[0].data.gap??30,s(D,"type","number"),D.value=Z=e[0].data.bottomSpacing??40,s(R,"type","checkbox"),R.checked=U=e[0].data.removeBottomSpacing,s(T,"class","inline"),s(t,"class","advanced-panel")},m(Y,J){N(Y,t,J),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),a(t,S),a(t,H),a(H,A),a(H,O),a(t,q),a(t,L),a(L,P),a(L,D),a(t,W),a(t,T),a(T,R),a(T,$),x||(Q=[C(i,"input",e[11]),C(c,"input",e[12]),C(v,"input",e[13]),C(_,"input",e[14]),C(O,"input",e[15]),C(D,"input",e[16]),C(R,"change",e[17])],x=!0)},p(Y,J){J&1&&o!==(o=Y[0].data.imgExtension1??".png")&&i.value!==o&&(i.value=o),J&1&&b!==(b=Y[0].data.imgExtension2??".png")&&c.value!==b&&(c.value=b),J&1&&m!==(m=Y[0].data.imgExtension3??".png")&&v.value!==m&&(v.value=m),J&1&&y!==(y=Y[0].data.width??170)&&_.value!==y&&(_.value=y),J&1&&K!==(K=Y[0].data.gap??30)&&O.value!==K&&(O.value=K),J&1&&Z!==(Z=Y[0].data.bottomSpacing??40)&&D.value!==Z&&(D.value=Z),J&1&&U!==(U=Y[0].data.removeBottomSpacing)&&(R.checked=U)},d(Y){Y&&M(t),x=!1,ve(Q)}}}function ao(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x=e[1]&&qn(e);return{c(){t=u("label"),n=F(`Баннер 1 — ссылка + `),l=u("input"),o=B(),r=u("label"),p=F(`Баннер 1 — имя файла + `),f=u("input"),b=B(),d=u("label"),g=F(`Баннер 2 — ссылка + `),k=u("input"),m=B(),I=u("label"),h=F(`Баннер 2 — имя файла + `),w=u("input"),y=B(),S=u("label"),H=F(`Баннер 3 — ссылка + `),A=u("input"),K=B(),q=u("label"),L=F(`Баннер 3 — имя файла + `),P=u("input"),Z=B(),W=u("div"),T=u("button"),T.textContent="Доп. настройки",R=B(),x&&x.c(),s(l,"type","text"),l.value=i=e[0].data.href1??"",s(f,"type","text"),f.value=c=e[0].data.imgBaseName1??"",s(k,"type","text"),k.value=v=e[0].data.href2??"",s(w,"type","text"),w.value=_=e[0].data.imgBaseName2??"",s(A,"type","text"),A.value=O=e[0].data.href3??"",s(P,"type","text"),P.value=D=e[0].data.imgBaseName3??"",s(T,"class","btn-advanced-toggle"),s(T,"type","button"),ie(T,"is-open",e[1]),s(W,"class","advanced-wrapper")},m(Q,Y){N(Q,t,Y),a(t,n),a(t,l),N(Q,o,Y),N(Q,r,Y),a(r,p),a(r,f),N(Q,b,Y),N(Q,d,Y),a(d,g),a(d,k),N(Q,m,Y),N(Q,I,Y),a(I,h),a(I,w),N(Q,y,Y),N(Q,S,Y),a(S,H),a(S,A),N(Q,K,Y),N(Q,q,Y),a(q,L),a(q,P),N(Q,Z,Y),N(Q,W,Y),a(W,T),a(W,R),x&&x.m(W,null),U||($=[C(l,"input",e[4]),C(f,"input",e[5]),C(k,"input",e[6]),C(w,"input",e[7]),C(A,"input",e[8]),C(P,"input",e[9]),C(T,"click",e[10])],U=!0)},p(Q,[Y]){Y&1&&i!==(i=Q[0].data.href1??"")&&l.value!==i&&(l.value=i),Y&1&&c!==(c=Q[0].data.imgBaseName1??"")&&f.value!==c&&(f.value=c),Y&1&&v!==(v=Q[0].data.href2??"")&&k.value!==v&&(k.value=v),Y&1&&_!==(_=Q[0].data.imgBaseName2??"")&&w.value!==_&&(w.value=_),Y&1&&O!==(O=Q[0].data.href3??"")&&A.value!==O&&(A.value=O),Y&1&&D!==(D=Q[0].data.imgBaseName3??"")&&P.value!==D&&(P.value=D),Y&2&&ie(T,"is-open",Q[1]),Q[1]?x?x.p(Q,Y):(x=qn(Q),x.c(),x.m(W,null)):x&&(x.d(1),x=null)},i:fe,o:fe,d(Q){Q&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I),M(y),M(S),M(K),M(q),M(Z),M(W)),x&&x.d(),U=!1,ve($)}}}function io(e,t,n){let{block:l}=t,{onChange:i}=t;const o=S=>i({...l.data,...S});let r=!1;const p=S=>o({href1:S.target.value}),f=S=>o({imgBaseName1:S.target.value}),c=S=>o({href2:S.target.value}),b=S=>o({imgBaseName2:S.target.value}),d=S=>o({href3:S.target.value}),g=S=>o({imgBaseName3:S.target.value}),k=()=>n(1,r=!r),v=S=>o({imgExtension1:S.target.value}),m=S=>o({imgExtension2:S.target.value}),I=S=>o({imgExtension3:S.target.value}),h=S=>o({width:parseInt(S.target.value,10)||0}),w=S=>o({gap:parseInt(S.target.value,10)||0}),_=S=>o({bottomSpacing:parseInt(S.target.value,10)||0}),y=S=>o({removeBottomSpacing:S.target.checked});return e.$$set=S=>{"block"in S&&n(0,l=S.block),"onChange"in S&&n(3,i=S.onChange)},[l,r,o,i,p,f,c,b,d,g,k,v,m,I,h,w,_,y]}class oo extends Xe{constructor(t){super(),Ze(this,t,io,ao,Ye,{block:0,onChange:3})}}function Gn(e){let t,n,l,i,o,r,p;return{c(){t=u("div"),n=u("label"),l=F(`Отступ снизу (px) + `),i=u("input"),s(i,"type","number"),i.value=o=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(f,c){N(f,t,c),a(t,n),a(n,l),a(n,i),r||(p=C(i,"input",e[6]),r=!0)},p(f,c){c&1&&o!==(o=f[0].data.bottomSpacing??40)&&i.value!==o&&(i.value=o)},d(f){f&&M(t),r=!1,p()}}}function so(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I=e[1]&&Gn(e);return{c(){t=u("label"),n=F(`ID товаров (через запятую) + `),l=u("input"),o=B(),r=u("div"),p=u("button"),p.textContent="Доп. настройки",f=B(),I&&I.c(),c=B(),b=u("label"),d=u("input"),k=F(` + Убрать отступ после блока`),s(l,"type","text"),l.value=i=e[0].data.productIds??"",s(p,"class","btn-advanced-toggle"),s(p,"type","button"),ie(p,"is-open",e[1]),s(r,"class","advanced-wrapper"),s(d,"type","checkbox"),d.checked=g=e[0].data.removeBottomSpacing,s(b,"class","inline")},m(h,w){N(h,t,w),a(t,n),a(t,l),N(h,o,w),N(h,r,w),a(r,p),a(r,f),I&&I.m(r,null),N(h,c,w),N(h,b,w),a(b,d),a(b,k),v||(m=[C(l,"input",e[4]),C(p,"click",e[5]),C(d,"change",e[7])],v=!0)},p(h,[w]){w&1&&i!==(i=h[0].data.productIds??"")&&l.value!==i&&(l.value=i),w&2&&ie(p,"is-open",h[1]),h[1]?I?I.p(h,w):(I=Gn(h),I.c(),I.m(r,null)):I&&(I.d(1),I=null),w&1&&g!==(g=h[0].data.removeBottomSpacing)&&(d.checked=g)},i:fe,o:fe,d(h){h&&(M(t),M(o),M(r),M(c),M(b)),I&&I.d(),v=!1,ve(m)}}}function uo(e,t,n){let{block:l}=t,{onChange:i}=t;const o=d=>i({...l.data,...d});let r=!1;const p=d=>o({productIds:d.target.value}),f=()=>n(1,r=!r),c=d=>o({bottomSpacing:parseInt(d.target.value,10)||0}),b=d=>o({removeBottomSpacing:d.target.checked});return e.$$set=d=>{"block"in d&&n(0,l=d.block),"onChange"in d&&n(3,i=d.onChange)},[l,r,o,i,p,f,c,b]}class ro extends Xe{constructor(t){super(),Ze(this,t,uo,so,Ye,{block:0,onChange:3})}}function Kn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h;return{c(){t=u("div"),n=u("label"),l=F(`Расширение файла + `),i=u("input"),r=B(),p=u("label"),f=F(`Ширина картинки (px) + `),c=u("input"),d=B(),g=u("label"),k=F(`Отступ снизу (px) + `),v=u("input"),s(i,"type","text"),i.value=o=e[0].data.imageExtension??".png",s(c,"type","number"),c.value=b=e[0].data.imgWidth??275,s(v,"type","number"),v.value=m=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(w,_){N(w,t,_),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),I||(h=[C(i,"input",e[8]),C(c,"input",e[9]),C(v,"input",e[10])],I=!0)},p(w,_){_&1&&o!==(o=w[0].data.imageExtension??".png")&&i.value!==o&&(i.value=o),_&1&&b!==(b=w[0].data.imgWidth??275)&&c.value!==b&&(c.value=b),_&1&&m!==(m=w[0].data.bottomSpacing??40)&&v.value!==m&&(v.value=m)},d(w){w&&M(t),I=!1,ve(h)}}}function co(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q=e[1]&&Kn(e);return{c(){t=u("label"),n=F(`ID товаров (через запятую) + `),l=u("input"),o=B(),r=u("label"),p=F(`Ссылка на картинку (href) + `),f=u("input"),b=B(),d=u("label"),g=F(`Имя файла картинки + `),k=u("input"),m=B(),I=u("div"),h=u("button"),h.textContent="Доп. настройки",w=B(),q&&q.c(),_=B(),y=u("label"),S=u("input"),A=F(` + Убрать отступ после блока`),s(l,"type","text"),l.value=i=e[0].data.productIds??"",s(f,"type","text"),f.value=c=e[0].data.link??"",s(k,"type","text"),k.value=v=e[0].data.imageBaseName??"",s(h,"class","btn-advanced-toggle"),s(h,"type","button"),ie(h,"is-open",e[1]),s(I,"class","advanced-wrapper"),s(S,"type","checkbox"),S.checked=H=e[0].data.removeBottomSpacing,s(y,"class","inline")},m(L,P){N(L,t,P),a(t,n),a(t,l),N(L,o,P),N(L,r,P),a(r,p),a(r,f),N(L,b,P),N(L,d,P),a(d,g),a(d,k),N(L,m,P),N(L,I,P),a(I,h),a(I,w),q&&q.m(I,null),N(L,_,P),N(L,y,P),a(y,S),a(y,A),O||(K=[C(l,"input",e[4]),C(f,"input",e[5]),C(k,"input",e[6]),C(h,"click",e[7]),C(S,"change",e[11])],O=!0)},p(L,[P]){P&1&&i!==(i=L[0].data.productIds??"")&&l.value!==i&&(l.value=i),P&1&&c!==(c=L[0].data.link??"")&&f.value!==c&&(f.value=c),P&1&&v!==(v=L[0].data.imageBaseName??"")&&k.value!==v&&(k.value=v),P&2&&ie(h,"is-open",L[1]),L[1]?q?q.p(L,P):(q=Kn(L),q.c(),q.m(I,null)):q&&(q.d(1),q=null),P&1&&H!==(H=L[0].data.removeBottomSpacing)&&(S.checked=H)},i:fe,o:fe,d(L){L&&(M(t),M(o),M(r),M(b),M(d),M(m),M(I),M(_),M(y)),q&&q.d(),O=!1,ve(K)}}}function po(e,t,n){let{block:l}=t,{onChange:i}=t;const o=m=>i({...l.data,...m});let r=!1;const p=m=>o({productIds:m.target.value}),f=m=>o({link:m.target.value}),c=m=>o({imageBaseName:m.target.value}),b=()=>n(1,r=!r),d=m=>o({imageExtension:m.target.value}),g=m=>o({imgWidth:parseInt(m.target.value,10)||0}),k=m=>o({bottomSpacing:parseInt(m.target.value,10)||0}),v=m=>o({removeBottomSpacing:m.target.checked});return e.$$set=m=>{"block"in m&&n(0,l=m.block),"onChange"in m&&n(3,i=m.onChange)},[l,r,o,i,p,f,c,b,d,g,k,v]}class fo extends Xe{constructor(t){super(),Ze(this,t,po,co,Ye,{block:0,onChange:3})}}function Jn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H;return{c(){t=u("div"),n=u("label"),l=F(`Расширение файла + `),i=u("input"),r=B(),p=u("label"),f=F(`Ширина картинки (px) + `),c=u("input"),d=B(),g=u("label"),k=F(`Высота картинки (px) + `),v=u("input"),I=B(),h=u("label"),w=F(`Отступ снизу (px) + `),_=u("input"),s(i,"type","text"),i.value=o=e[0].data.imageExtension??".png",s(c,"type","number"),c.value=b=e[0].data.imgWidth??264,s(v,"type","number"),v.value=m=e[0].data.imgHeight??330,s(_,"type","number"),_.value=y=e[0].data.bottomSpacing??20,s(t,"class","advanced-panel")},m(A,O){N(A,t,O),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,c),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,_),S||(H=[C(i,"input",e[7]),C(c,"input",e[8]),C(v,"input",e[9]),C(_,"input",e[10])],S=!0)},p(A,O){O&1&&o!==(o=A[0].data.imageExtension??".png")&&i.value!==o&&(i.value=o),O&1&&b!==(b=A[0].data.imgWidth??264)&&c.value!==b&&(c.value=b),O&1&&m!==(m=A[0].data.imgHeight??330)&&v.value!==m&&(v.value=m),O&1&&y!==(y=A[0].data.bottomSpacing??20)&&_.value!==y&&(_.value=y)},d(A){A&&M(t),S=!1,ve(H)}}}function mo(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T,R,U,$,x,Q,Y,J,ee,V=e[1]&&Jn(e);return{c(){t=u("label"),n=F(`Ссылка (href) + `),l=u("input"),o=B(),r=u("label"),p=F(`Имя файла картинки + `),f=u("input"),b=B(),d=u("div"),g=u("button"),g.textContent="Доп. настройки",k=B(),V&&V.c(),v=B(),m=u("label"),I=F(`Заголовок внутри блока + `),h=u("input"),_=B(),y=u("label"),S=F(`Текст внутри блока + `),H=u("textarea"),O=B(),K=u("label"),q=F(`Текст кнопки + `),L=u("input"),D=B(),Z=u("label"),W=F(`Ссылка кнопки + `),T=u("input"),U=B(),$=u("label"),x=u("input"),Y=F(` + Убрать отступ после блока`),s(l,"type","text"),l.value=i=e[0].data.link??"",s(f,"type","text"),f.value=c=e[0].data.imageBaseName??"",s(g,"class","btn-advanced-toggle"),s(g,"type","button"),ie(g,"is-open",e[1]),s(d,"class","advanced-wrapper"),s(h,"type","text"),h.value=w=e[0].data.header??"",H.value=A=e[0].data.text??"",s(L,"type","text"),L.value=P=e[0].data.buttonText??"",s(T,"type","text"),T.value=R=e[0].data.buttonHref??"",s(x,"type","checkbox"),x.checked=Q=e[0].data.removeBottomSpacing,s($,"class","inline")},m(z,G){N(z,t,G),a(t,n),a(t,l),N(z,o,G),N(z,r,G),a(r,p),a(r,f),N(z,b,G),N(z,d,G),a(d,g),a(d,k),V&&V.m(d,null),N(z,v,G),N(z,m,G),a(m,I),a(m,h),N(z,_,G),N(z,y,G),a(y,S),a(y,H),N(z,O,G),N(z,K,G),a(K,q),a(K,L),N(z,D,G),N(z,Z,G),a(Z,W),a(Z,T),N(z,U,G),N(z,$,G),a($,x),a($,Y),J||(ee=[C(l,"input",e[4]),C(f,"input",e[5]),C(g,"click",e[6]),C(h,"input",e[11]),C(H,"input",e[12]),C(L,"input",e[13]),C(T,"input",e[14]),C(x,"change",e[15])],J=!0)},p(z,[G]){G&1&&i!==(i=z[0].data.link??"")&&l.value!==i&&(l.value=i),G&1&&c!==(c=z[0].data.imageBaseName??"")&&f.value!==c&&(f.value=c),G&2&&ie(g,"is-open",z[1]),z[1]?V?V.p(z,G):(V=Jn(z),V.c(),V.m(d,null)):V&&(V.d(1),V=null),G&1&&w!==(w=z[0].data.header??"")&&h.value!==w&&(h.value=w),G&1&&A!==(A=z[0].data.text??"")&&(H.value=A),G&1&&P!==(P=z[0].data.buttonText??"")&&L.value!==P&&(L.value=P),G&1&&R!==(R=z[0].data.buttonHref??"")&&T.value!==R&&(T.value=R),G&1&&Q!==(Q=z[0].data.removeBottomSpacing)&&(x.checked=Q)},i:fe,o:fe,d(z){z&&(M(t),M(o),M(r),M(b),M(d),M(v),M(m),M(_),M(y),M(O),M(K),M(D),M(Z),M(U),M($)),V&&V.d(),J=!1,ve(ee)}}}function go(e,t,n){let{block:l}=t,{onChange:i}=t;const o=_=>i({...l.data,..._});let r=!1;const p=_=>o({link:_.target.value}),f=_=>o({imageBaseName:_.target.value}),c=()=>n(1,r=!r),b=_=>o({imageExtension:_.target.value}),d=_=>o({imgWidth:parseInt(_.target.value,10)||0}),g=_=>o({imgHeight:parseInt(_.target.value,10)||0}),k=_=>o({bottomSpacing:parseInt(_.target.value,10)||0}),v=_=>o({header:_.target.value}),m=_=>o({text:_.target.value}),I=_=>o({buttonText:_.target.value}),h=_=>o({buttonHref:_.target.value}),w=_=>o({removeBottomSpacing:_.target.checked});return e.$$set=_=>{"block"in _&&n(0,l=_.block),"onChange"in _&&n(3,i=_.onChange)},[l,r,o,i,p,f,c,b,d,g,k,v,m,I,h,w]}class ho extends Xe{constructor(t){super(),Ze(this,t,go,mo,Ye,{block:0,onChange:3})}}function Yn(e){let t,n,l,i,o,r,p;return{c(){t=u("div"),n=u("label"),l=F(`Отступ снизу (px) + `),i=u("input"),s(i,"type","number"),i.value=o=e[0].data.bottomSpacing??20,s(t,"class","advanced-panel")},m(f,c){N(f,t,c),a(t,n),a(n,l),a(n,i),r||(p=C(i,"input",e[7]),r=!0)},p(f,c){c&1&&o!==(o=f[0].data.bottomSpacing??20)&&i.value!==o&&(i.value=o)},d(f){f&&M(t),r=!1,p()}}}function bo(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S=e[1]&&Yn(e);return{c(){t=u("label"),n=F(`Размеры (через запятую) + `),l=u("input"),o=B(),r=u("label"),p=F(`Ссылки (через запятую) + `),f=u("input"),b=B(),d=u("div"),g=u("button"),g.textContent="Доп. настройки",k=B(),S&&S.c(),v=B(),m=u("label"),I=u("input"),w=F(` + Убрать отступ после блока`),s(l,"type","text"),l.value=i=e[0].data.sizes??"",s(f,"type","text"),f.value=c=e[0].data.links??"",s(g,"class","btn-advanced-toggle"),s(g,"type","button"),ie(g,"is-open",e[1]),s(d,"class","advanced-wrapper"),s(I,"type","checkbox"),I.checked=h=e[0].data.removeBottomSpacing,s(m,"class","inline")},m(H,A){N(H,t,A),a(t,n),a(t,l),N(H,o,A),N(H,r,A),a(r,p),a(r,f),N(H,b,A),N(H,d,A),a(d,g),a(d,k),S&&S.m(d,null),N(H,v,A),N(H,m,A),a(m,I),a(m,w),_||(y=[C(l,"input",e[4]),C(f,"input",e[5]),C(g,"click",e[6]),C(I,"change",e[8])],_=!0)},p(H,[A]){A&1&&i!==(i=H[0].data.sizes??"")&&l.value!==i&&(l.value=i),A&1&&c!==(c=H[0].data.links??"")&&f.value!==c&&(f.value=c),A&2&&ie(g,"is-open",H[1]),H[1]?S?S.p(H,A):(S=Yn(H),S.c(),S.m(d,null)):S&&(S.d(1),S=null),A&1&&h!==(h=H[0].data.removeBottomSpacing)&&(I.checked=h)},i:fe,o:fe,d(H){H&&(M(t),M(o),M(r),M(b),M(d),M(v),M(m)),S&&S.d(),_=!1,ve(y)}}}function vo(e,t,n){let{block:l}=t,{onChange:i}=t;const o=g=>i({...l.data,...g});let r=!1;const p=g=>o({sizes:g.target.value}),f=g=>o({links:g.target.value}),c=()=>n(1,r=!r),b=g=>o({bottomSpacing:parseInt(g.target.value,10)||0}),d=g=>o({removeBottomSpacing:g.target.checked});return e.$$set=g=>{"block"in g&&n(0,l=g.block),"onChange"in g&&n(3,i=g.onChange)},[l,r,o,i,p,f,c,b,d]}class _o extends Xe{constructor(t){super(),Ze(this,t,vo,bo,Ye,{block:0,onChange:3})}}function Qn(e){let t,n,l,i,o,r,p;return{c(){t=u("div"),n=u("label"),l=F(`Отступ снизу (px) + `),i=u("input"),s(i,"type","number"),i.value=o=e[0].data.bottomSpacing??40,s(t,"class","advanced-panel")},m(f,c){N(f,t,c),a(t,n),a(n,l),a(n,i),r||(p=C(i,"input",e[6]),r=!0)},p(f,c){c&1&&o!==(o=f[0].data.bottomSpacing??40)&&i.value!==o&&(i.value=o)},d(f){f&&M(t),r=!1,p()}}}function ko(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I=e[1]&&Qn(e);return{c(){t=u("label"),n=F(`Промокод + `),l=u("input"),o=B(),r=u("div"),p=u("button"),p.textContent="Доп. настройки",f=B(),I&&I.c(),c=B(),b=u("label"),d=u("input"),k=F(` + Убрать отступ после блока`),s(l,"type","text"),l.value=i=e[0].data.code??"",s(p,"class","btn-advanced-toggle"),s(p,"type","button"),ie(p,"is-open",e[1]),s(r,"class","advanced-wrapper"),s(d,"type","checkbox"),d.checked=g=e[0].data.removeBottomSpacing,s(b,"class","inline")},m(h,w){N(h,t,w),a(t,n),a(t,l),N(h,o,w),N(h,r,w),a(r,p),a(r,f),I&&I.m(r,null),N(h,c,w),N(h,b,w),a(b,d),a(b,k),v||(m=[C(l,"input",e[4]),C(p,"click",e[5]),C(d,"change",e[7])],v=!0)},p(h,[w]){w&1&&i!==(i=h[0].data.code??"")&&l.value!==i&&(l.value=i),w&2&&ie(p,"is-open",h[1]),h[1]?I?I.p(h,w):(I=Qn(h),I.c(),I.m(r,null)):I&&(I.d(1),I=null),w&1&&g!==(g=h[0].data.removeBottomSpacing)&&(d.checked=g)},i:fe,o:fe,d(h){h&&(M(t),M(o),M(r),M(c),M(b)),I&&I.d(),v=!1,ve(m)}}}function wo(e,t,n){let{block:l}=t,{onChange:i}=t;const o=d=>i({...l.data,...d});let r=!1;const p=d=>o({code:d.target.value}),f=()=>n(1,r=!r),c=d=>o({bottomSpacing:parseInt(d.target.value,10)||0}),b=d=>o({removeBottomSpacing:d.target.checked});return e.$$set=d=>{"block"in d&&n(0,l=d.block),"onChange"in d&&n(3,i=d.onChange)},[l,r,o,i,p,f,c,b]}class So extends Xe{constructor(t){super(),Ze(this,t,wo,ko,Ye,{block:0,onChange:3})}}function Zn(e){let t,n,l,i,o,r,p,f,c,b,d,g,k,v,m,I,h,w,_,y,S,H;return{c(){t=u("div"),n=u("label"),l=F(`Высота (px) + `),i=u("input"),r=B(),p=u("label"),f=u("input"),b=F(` + Использовать как центральный разделитель`),d=B(),g=u("label"),k=F(`Отступ снизу (px) + `),v=u("input"),I=B(),h=u("label"),w=u("input"),y=F(` + Убрать отступ после блока`),s(i,"type","number"),i.value=o=e[0].data.height??1,s(f,"type","checkbox"),f.checked=c=e[0].data.swapCenter,s(p,"class","inline"),s(v,"type","number"),v.value=m=e[0].data.bottomSpacing??40,s(w,"type","checkbox"),w.checked=_=e[0].data.removeBottomSpacing,s(h,"class","inline"),s(t,"class","advanced-panel")},m(A,O){N(A,t,O),a(t,n),a(n,l),a(n,i),a(t,r),a(t,p),a(p,f),a(p,b),a(t,d),a(t,g),a(g,k),a(g,v),a(t,I),a(t,h),a(h,w),a(h,y),S||(H=[C(i,"input",e[6]),C(f,"change",e[7]),C(v,"input",e[8]),C(w,"change",e[9])],S=!0)},p(A,O){O&1&&o!==(o=A[0].data.height??1)&&i.value!==o&&(i.value=o),O&1&&c!==(c=A[0].data.swapCenter)&&(f.checked=c),O&1&&m!==(m=A[0].data.bottomSpacing??40)&&v.value!==m&&(v.value=m),O&1&&_!==(_=A[0].data.removeBottomSpacing)&&(w.checked=_)},d(A){A&&M(t),S=!1,ve(H)}}}function Io(e){let t,n,l,i,o,r,p,f,c,b,d=e[1]&&Zn(e);return{c(){t=u("label"),n=F(`Ширина (px) + `),l=u("input"),o=B(),r=u("div"),p=u("button"),p.textContent="Доп. настройки",f=B(),d&&d.c(),s(l,"type","number"),l.value=i=e[0].data.width??300,s(p,"class","btn-advanced-toggle"),s(p,"type","button"),ie(p,"is-open",e[1]),s(r,"class","advanced-wrapper")},m(g,k){N(g,t,k),a(t,n),a(t,l),N(g,o,k),N(g,r,k),a(r,p),a(r,f),d&&d.m(r,null),c||(b=[C(l,"input",e[4]),C(p,"click",e[5])],c=!0)},p(g,[k]){k&1&&i!==(i=g[0].data.width??300)&&l.value!==i&&(l.value=i),k&2&&ie(p,"is-open",g[1]),g[1]?d?d.p(g,k):(d=Zn(g),d.c(),d.m(r,null)):d&&(d.d(1),d=null)},i:fe,o:fe,d(g){g&&(M(t),M(o),M(r)),d&&d.d(),c=!1,ve(b)}}}function Bo(e,t,n){let{block:l}=t,{onChange:i}=t;const o=k=>i({...l.data,...k});let r=!1;const p=k=>o({width:parseInt(k.target.value,10)||0}),f=()=>n(1,r=!r),c=k=>o({height:parseInt(k.target.value,10)||0}),b=k=>o({swapCenter:k.target.checked}),d=k=>o({bottomSpacing:parseInt(k.target.value,10)||0}),g=k=>o({removeBottomSpacing:k.target.checked});return e.$$set=k=>{"block"in k&&n(0,l=k.block),"onChange"in k&&n(3,i=k.onChange)},[l,r,o,i,p,f,c,b,d,g]}class yo extends Xe{constructor(t){super(),Ze(this,t,Bo,Io,Ye,{block:0,onChange:3})}}function Xn(e,t,n){const l=e.slice();return l[38]=t[n],l}function xn(e){let t,n,l=e[7]&&e[9]&&$n(e),i=e[8].length&&el(e);return{c(){t=u("div"),l&&l.c(),n=B(),i&&i.c(),s(t,"class","block-meta")},m(o,r){N(o,t,r),l&&l.m(t,null),a(t,n),i&&i.m(t,null)},p(o,r){o[7]&&o[9]?l?l.p(o,r):(l=$n(o),l.c(),l.m(t,n)):l&&(l.d(1),l=null),o[8].length?i?i.p(o,r):(i=el(o),i.c(),i.m(t,null)):i&&(i.d(1),i=null)},d(o){o&&M(t),l&&l.d(),i&&i.d()}}}function $n(e){let t,n;return{c(){t=u("div"),n=F(e[9]),s(t,"class","block-summary")},m(l,i){N(l,t,i),a(t,n)},p(l,i){i[0]&512&&ut(n,l[9])},d(l){l&&M(t)}}}function el(e){let t,n=gt(e[8]),l=[];for(let i=0;i{p[d]=null}),qt(),i=p[l],i?i.p(c,b):(i=p[l]=r[l](c),i.c()),ke(i,1),i.m(t,null))},i(c){o||(ke(i),o=!0)},o(c){Se(i),o=!1},d(c){c&&M(t),p[l].d()}}}function To(e){let t,n,l=e[0].type+"",i,o;return{c(){t=u("div"),n=F('Редактор для "'),i=F(l),o=F('" ещё не реализован')},m(r,p){N(r,t,p),a(t,n),a(t,i),a(t,o)},p(r,p){p[0]&1&&l!==(l=r[0].type+"")&&ut(i,l)},i:fe,o:fe,d(r){r&&M(t)}}}function Co(e){let t,n;return t=new yo({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Ho(e){let t,n;return t=new So({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Lo(e){let t,n;return t=new _o({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Mo(e){let t,n;return t=new ho({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function No(e){let t,n;return t=new fo({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Eo(e){let t,n;return t=new ro({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Po(e){let t,n;return t=new oo({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Ro(e){let t,n;return t=new lo({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function zo(e){let t,n;return t=new eo({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Ao(e){let t,n;return t=new Xi({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Fo(e){let t,n;return t=new Yi({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Uo(e){let t,n;return t=new Gi({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Do(e){let t,n;return t=new ji({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Oo(e){let t,n;return t=new Di({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Wo(e){let t,n;return t=new Ai({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function jo(e){let t,n;return t=new Pi({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function Vo(e){let t,n;return t=new Mi({props:{block:e[0],onChange:e[11]}}),{c(){Qe(t.$$.fragment)},m(l,i){qe(t,l,i),n=!0},p(l,i){const o={};i[0]&1&&(o.block=l[0]),t.$set(o)},i(l){n||(ke(t.$$.fragment,l),n=!0)},o(l){Se(t.$$.fragment,l),n=!1},d(l){Ge(t,l)}}}function qo(e){let t,n,l,i,o,r,p,f=e[1]+1+"",c,b,d,g=e[13](e[0].type)+"",k,v,m,I,h,w,_,y,S,H,A,O,K,q,L,P,D,Z,W,T=(e[7]&&e[9]||e[8].length)&&xn(e),R=!e[7]&&nl(e);return{c(){var U;t=u("div"),n=u("div"),l=u("div"),i=u("span"),o=F(e[6]),r=B(),p=u("span"),c=F(f),b=B(),d=u("span"),k=F(g),m=B(),I=u("div"),h=u("div"),w=u("button"),w.textContent="О",_=B(),y=u("button"),y.textContent="Ж",S=B(),H=u("button"),H.textContent="М",A=B(),O=u("span"),O.innerHTML='',K=B(),q=u("button"),q.innerHTML='',L=B(),T&&T.c(),P=B(),R&&R.c(),s(i,"class","segment-badge"),s(i,"title","Назначение блока"),s(p,"class","block-index svelte-1et8qw6"),s(d,"class","block-name svelte-1et8qw6"),Mn(d,"color",e[10]),s(l,"class","block-title clickable"),s(l,"role","button"),s(l,"aria-expanded",v=!e[7]),s(l,"tabindex","0"),s(w,"type","button"),ie(w,"active",e[5]==="common"),s(y,"type","button"),ie(y,"active",e[5]==="female"),s(H,"type","button"),ie(H,"active",e[5]==="male"),s(h,"class","segment-toggle compact"),s(O,"class","block-drag-handle"),s(O,"title","Перетащить"),s(O,"role","button"),s(O,"tabindex","0"),s(q,"class","icon-btn danger"),s(q,"aria-label","Удалить"),s(q,"title","Удалить"),s(I,"class","block-actions"),s(n,"class","block-header"),s(t,"class","block-card"),ie(t,"collapsed",e[7]),ie(t,"marker-female",e[5]==="female"),ie(t,"marker-male",e[5]==="male"),ie(t,"marker-common",e[5]==="common"),ie(t,"marker-center",e[0].type==="dividerVA"&&((U=e[0].data)==null?void 0:U.swapCenter)),ie(t,"dragging",e[4])},m(U,$){N(U,t,$),a(t,n),a(n,l),a(l,i),a(i,o),a(l,r),a(l,p),a(p,c),a(l,b),a(l,d),a(d,k),a(n,m),a(n,I),a(I,h),a(h,w),a(h,_),a(h,y),a(h,S),a(h,H),a(I,A),a(I,O),a(I,K),a(I,q),a(t,L),T&&T.m(t,null),a(t,P),R&&R.m(t,null),D=!0,Z||(W=[C(l,"click",e[14]),C(l,"keydown",e[15]),C(w,"click",e[21]),C(y,"click",e[22]),C(H,"click",e[23]),C(O,"pointerdown",ci(function(){At(e[3])&&e[3].apply(this,arguments)})),C(q,"click",e[24])],Z=!0)},p(U,$){var x;e=U,(!D||$[0]&64)&&ut(o,e[6]),(!D||$[0]&2)&&f!==(f=e[1]+1+"")&&ut(c,f),(!D||$[0]&1)&&g!==(g=e[13](e[0].type)+"")&&ut(k,g),$[0]&1024&&Mn(d,"color",e[10]),(!D||$[0]&128&&v!==(v=!e[7]))&&s(l,"aria-expanded",v),(!D||$[0]&32)&&ie(w,"active",e[5]==="common"),(!D||$[0]&32)&&ie(y,"active",e[5]==="female"),(!D||$[0]&32)&&ie(H,"active",e[5]==="male"),e[7]&&e[9]||e[8].length?T?T.p(e,$):(T=xn(e),T.c(),T.m(t,P)):T&&(T.d(1),T=null),e[7]?R&&(Vt(),Se(R,1,1,()=>{R=null}),qt()):R?(R.p(e,$),$[0]&128&&ke(R,1)):(R=nl(e),R.c(),ke(R,1),R.m(t,null)),(!D||$[0]&128)&&ie(t,"collapsed",e[7]),(!D||$[0]&32)&&ie(t,"marker-female",e[5]==="female"),(!D||$[0]&32)&&ie(t,"marker-male",e[5]==="male"),(!D||$[0]&32)&&ie(t,"marker-common",e[5]==="common"),(!D||$[0]&1)&&ie(t,"marker-center",e[0].type==="dividerVA"&&((x=e[0].data)==null?void 0:x.swapCenter)),(!D||$[0]&16)&&ie(t,"dragging",e[4])},i(U){D||(ke(R),D=!0)},o(U){Se(R),D=!1},d(U){U&&M(t),T&&T.d(),R&&R.d(),Z=!1,ve(W)}}}function Go(e,t,n){let l,i,o,{block:r}=t,{index:p}=t,{femaleIndex:f=0}=t,{maleIndex:c=0}=t,{onChange:b}=t,{onRemove:d}=t,{forceCollapse:g=null}=t,{colorizeTitles:k=!1}=t,{onHandlePointerDown:v=()=>{}}=t,{isDragging:m=!1}=t;const I=V=>b(r.id,V),h=(V,z,G)=>V==="female"?`Ж${z||""}`:V==="male"?`М${G||""}`:"О";let w=r.segment||"common",_=h(w,f,c),y=!1;const S=V=>{n(5,w=V),n(6,_=h(V)),b(r.id,{segment:V})},H=V=>{switch(V){case"titleActual":return"АКТУАЛЬНЫЙ заголовок";case"paragraph":return"Текстовый блок";case"buttonSingle":return"Кнопка по центру";case"buttonDouble":return"Две кнопки";case"buttonTriple":return"Три кнопки";case"banner":return"Баннер с ссылкой";case"bannerNoLink":return"Баннер без ссылки";case"twoBannersWithText":return"Два баннера с текстом";case"twoBannersNoText":return"Два баннера без текста";case"threeBannersNoText":return"Три баннера без текста";case"products4Row":return"4 товара в ряд";case"products3Row":return"3 товара в ряд";case"productsImageLeft":return"Товары + картинка слева";case"productsImageRight":return"Товары + картинка справа";case"productsImageLeft3":return"3 товара + картинка слева";case"productsImageRight3":return"3 товара + картинка справа";case"textImageLeft":return"Текст справа, картинка слева";case"textImageRight":return"Текст слева, картинка справа";case"sizeGrid":return"Размерная сетка";case"promocode":return"Промокод";case"spacer":return"Отступ";case"dividerVA":return"Разделитель";default:return V}},A=()=>n(7,y=!y),O=V=>{(V.key==="Enter"||V.key===" ")&&(V.preventDefault(),A())},K={titleActual:"#e85a5a",paragraph:"#b388ff",buttonSingle:"#2ab27b",buttonDouble:"#26a69a",buttonTriple:"#0097a7",banner:"#ffb74d",bannerNoLink:"#ff9800",twoBannersWithText:"#c27447",twoBannersNoText:"#bf6d3f",threeBannersNoText:"#b0552c",products4Row:"#4dabf5",products3Row:"#42a5f5",productsImageLeft:"#ec6a7d",productsImageRight:"#ec6a7d",productsImageLeft3:"#ec6a7d",productsImageRight3:"#ec6a7d",textImageLeft:"#7fd1b9",textImageRight:"#7fd1b9",sizeGrid:"#90a4ae",promocode:"#f06292",spacer:"#cfd8dc",dividerVA:"#8bc34a"},q=(V,z)=>z?K[V==null?void 0:V.type]||"#9aa0a6":null,L={products4Row:{field:"productIds",count:4},products3Row:{field:"productIds",count:3},productsImageLeft:{field:"productIds",count:4},productsImageRight:{field:"productIds",count:4},productsImageLeft3:{field:"productIds",count:3},productsImageRight3:{field:"productIds",count:3}},P=(V="")=>V.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim(),D=(V="",z=80)=>{const G=P(V);return G?G.length>z?`${G.slice(0,z-1).trim()}…`:G:""},Z=(V="",z=32)=>{if(!V)return"";const G=V.trim().replace(/^https?:\/\//i,"");return G.length>z?`${G.slice(0,z-1)}…`:G},W=(V="")=>V.split(/[\n,]/).map(z=>z.trim()).filter(Boolean),T=V=>V.map(z=>`${z.label}: ${D(z.text||z.image||"—",18)||"—"} → ${Z(z.href)||"нет"}`).join(" • "),R=V=>{var te;const z=L[V==null?void 0:V.type];if(!z)return null;const G=((te=V==null?void 0:V.data)==null?void 0:te[z.field])||"",re=W(G);return{summary:`ID ${re.length}/${z.count}`,count:re.length,expected:z.count}},U=V=>{var G;if(!V)return"";const z=V.data||{};switch(V.type){case"titleActual":case"paragraph":return D(z.text);case"buttonSingle":return`${D(z.text,26)||"Кнопка"} → ${Z(z.href)||"нет ссылки"}`;case"buttonDouble":return T([{label:"Л",text:z.leftText,href:z.leftHref},{label:"П",text:z.rightText,href:z.rightHref}]);case"buttonTriple":return T([{label:"Л",text:z.leftText,href:z.leftHref},{label:"С",text:z.centerText,href:z.centerHref},{label:"П",text:z.rightText,href:z.rightHref}]);case"banner":return`${z.imageBaseName?`${z.imageBaseName}${z.imageExtension||".png"}`:"Файл не задан"} → ${Z(z.href)||"нет ссылки"}`;case"bannerNoLink":return z.imageBaseName?`${z.imageBaseName}${z.imageExtension||".png"}`:"";case"twoBannersWithText":return T([{label:"Л",text:z.leftText||z.leftImageBaseName,href:z.leftHref},{label:"П",text:z.rightText||z.rightImageBaseName,href:z.rightHref}]);case"twoBannersNoText":return T([{label:"Л",text:z.leftImageBaseName,href:z.leftHref},{label:"П",text:z.rightImageBaseName,href:z.rightHref}]);case"threeBannersNoText":return[1,2,3].map((re,te)=>{const ue=z[`imgBaseName${re}`],se=z[`href${re}`];return`${["Л","Ц","П"][te]}: ${ue||"—"}${se?` → ${Z(se)}`:""}`}).join(" • ");case"products4Row":case"products3Row":case"productsImageLeft":case"productsImageRight":case"productsImageLeft3":case"productsImageRight3":return((G=R(V))==null?void 0:G.summary)||"";case"textImageLeft":case"textImageRight":return`${D(z.header,32)||"Без заголовка"} • ${z.buttonText||"кнопка"}`;case"sizeGrid":return`Размеры ${W(z.sizes).length}${z.links?` • Ссылки ${W(z.links).length}`:""}`;case"promocode":return z.code?`Код: ${z.code}`:"";case"spacer":return`${z.height??40}px`;case"dividerVA":return`${z.width??300}×${z.height??1}px`;default:return""}},$=(V,z)=>{z&&!V.includes(z)&&V.push(z)},x=V=>{const z=[];if(!V)return z;const G=V.data||{},re=R(V);re&&re.count!==re.expected&&z.push(`ID ${re.count}/${re.expected}`);const te=(_e,he)=>{(!_e||!_e.trim())&&$(z,he?`Нет текста (${he})`:"Нет текста")},ue=(_e,he)=>{(!_e||!_e.trim())&&$(z,he?`Нет ссылки (${he})`:"Нет ссылки")},se=(_e,he,we)=>{const ae=_e&&_e.trim(),me=he&&he.trim();!ae&&!me&&$(z,we?`Нет изображения (${we})`:"Нет изображения")};switch(V.type){case"titleActual":case"paragraph":te(G.text);break;case"buttonSingle":te(G.text),ue(G.href);break;case"buttonDouble":te(G.leftText,"Л"),ue(G.leftHref,"Л"),te(G.rightText,"П"),ue(G.rightHref,"П");break;case"buttonTriple":te(G.leftText,"Л"),ue(G.leftHref,"Л"),te(G.centerText,"С"),ue(G.centerHref,"С"),te(G.rightText,"П"),ue(G.rightHref,"П");break;case"banner":se(G.imageBaseName,G.imageUrl),ue(G.href);break;case"bannerNoLink":se(G.imageBaseName,G.imageUrl);break;case"twoBannersWithText":se(G.leftImageBaseName,G.leftImage,"Л"),ue(G.leftHref,"Л"),se(G.rightImageBaseName,G.rightImage,"П"),ue(G.rightHref,"П");break;case"twoBannersNoText":se(G.leftImageBaseName,G.leftImage,"Л"),ue(G.leftHref,"Л"),se(G.rightImageBaseName,G.rightImage,"П"),ue(G.rightHref,"П");break;case"threeBannersNoText":[1,2,3].forEach((_e,he)=>{const we=["Л","Ц","П"][he];se(G[`imgBaseName${_e}`],G[`img${_e}`],we),ue(G[`href${_e}`],we)});break;case"textImageLeft":case"textImageRight":te(G.header),te(G.buttonText,"Кнопка"),ue(G.buttonHref,"Кнопка"),ue(G.link,"Картинка"),se(G.imageBaseName,G.imageUrl,"Картинка");break;case"sizeGrid":W(G.sizes).length||$(z,"Нет размеров"),G.links&&W(G.sizes).length!==W(G.links).length&&$(z,"Размеры ≠ ссылки");break;case"promocode":te(G.code,"Промокод");break}return z},Q=()=>S("common"),Y=()=>S("female"),J=()=>S("male"),ee=()=>d(r.id);return e.$$set=V=>{"block"in V&&n(0,r=V.block),"index"in V&&n(1,p=V.index),"femaleIndex"in V&&n(16,f=V.femaleIndex),"maleIndex"in V&&n(17,c=V.maleIndex),"onChange"in V&&n(18,b=V.onChange),"onRemove"in V&&n(2,d=V.onRemove),"forceCollapse"in V&&n(19,g=V.forceCollapse),"colorizeTitles"in V&&n(20,k=V.colorizeTitles),"onHandlePointerDown"in V&&n(3,v=V.onHandlePointerDown),"isDragging"in V&&n(4,m=V.isDragging)},e.$$.update=()=>{e.$$.dirty[0]&1&&n(5,w=r.segment||"common"),e.$$.dirty[0]&196640&&n(6,_=h(w,f,c)),e.$$.dirty[0]&524288&&g!==null&&n(7,y=g),e.$$.dirty[0]&1048577&&n(10,l=q(r,k)),e.$$.dirty[0]&1&&n(9,i=U(r)),e.$$.dirty[0]&1&&n(8,o=x(r))},[r,p,d,v,m,w,_,y,o,i,l,I,S,H,A,O,f,c,b,g,k,Q,Y,J,ee]}class Cn extends Xe{constructor(t){super(),Ze(this,t,Go,qo,Ye,{block:0,index:1,femaleIndex:16,maleIndex:17,onChange:18,onRemove:2,forceCollapse:19,colorizeTitles:20,onHandlePointerDown:3,isDragging:4},null,[-1,-1])}}const{Map:Ko}=ri;function ll(e,t,n){const l=e.slice();return l[36]=t[n],l}function al(e,t,n){const l=e.slice();return l[39]=t[n],l}function il(e,t,n){const l=e.slice();return l[42]=t[n],l[44]=n,l}function ol(e){let t;return{c(){t=u("div"),t.textContent="Добавляй блоки в нужном порядке.",s(t,"class","hint")},m(n,l){N(n,t,l)},d(n){n&&M(t)}}}function sl(e){let t,n,l=e[42].dividerLabel+"",i,o;return{c(){t=u("div"),n=u("span"),i=F(l),s(t,"class","segment-divider"),s(t,"data-segment",o=e[42].segment)},m(r,p){N(r,t,p),a(t,n),a(n,i)},p(r,p){p[0]&256&&l!==(l=r[42].dividerLabel+"")&&ut(i,l),p[0]&256&&o!==(o=r[42].segment)&&s(t,"data-segment",o)},d(r){r&&M(t)}}}function ul(e){let t,n,l,i,o,r;return n=new Cn({props:{block:e[11].block,index:e[44],femaleIndex:e[11].femaleIndex,maleIndex:e[11].maleIndex,onChange:e[1],onRemove:e[2],onHandlePointerDown:e[13](e[11].block.id),forceCollapse:e[6],colorizeTitles:e[5],isDragging:!0}}),{c(){t=u("div"),Qe(n.$$.fragment),s(t,"role","listitem")},m(p,f){N(p,t,f),qe(n,t,null),i=!0,o||(r=Tn(l=e[12].call(null,t,e[11].block.id)),o=!0)},p(p,f){const c={};f[0]&2048&&(c.block=p[11].block),f[0]&256&&(c.index=p[44]),f[0]&2048&&(c.femaleIndex=p[11].femaleIndex),f[0]&2048&&(c.maleIndex=p[11].maleIndex),f[0]&2&&(c.onChange=p[1]),f[0]&4&&(c.onRemove=p[2]),f[0]&2048&&(c.onHandlePointerDown=p[13](p[11].block.id)),f[0]&64&&(c.forceCollapse=p[6]),f[0]&32&&(c.colorizeTitles=p[5]),n.$set(c),l&&At(l.update)&&f[0]&2048&&l.update.call(null,p[11].block.id)},i(p){i||(ke(n.$$.fragment,p),i=!0)},o(p){Se(n.$$.fragment,p),i=!1},d(p){p&&M(t),Ge(n),o=!1,r()}}}function rl(e){let t,n,l,i,o,r;return n=new Cn({props:{block:e[42].block,index:e[44],femaleIndex:e[42].femaleIndex,maleIndex:e[42].maleIndex,onChange:e[1],onRemove:e[2],onHandlePointerDown:e[13](e[42].block.id),forceCollapse:e[6],colorizeTitles:e[5],isDragging:!1}}),{c(){t=u("div"),Qe(n.$$.fragment),s(t,"role","listitem")},m(p,f){N(p,t,f),qe(n,t,null),i=!0,o||(r=Tn(l=e[12].call(null,t,e[42].block.id)),o=!0)},p(p,f){e=p;const c={};f[0]&256&&(c.block=e[42].block),f[0]&256&&(c.index=e[44]),f[0]&256&&(c.femaleIndex=e[42].femaleIndex),f[0]&256&&(c.maleIndex=e[42].maleIndex),f[0]&2&&(c.onChange=e[1]),f[0]&4&&(c.onRemove=e[2]),f[0]&256&&(c.onHandlePointerDown=e[13](e[42].block.id)),f[0]&64&&(c.forceCollapse=e[6]),f[0]&32&&(c.colorizeTitles=e[5]),n.$set(c),l&&At(l.update)&&f[0]&256&&l.update.call(null,e[42].block.id)},i(p){i||(ke(n.$$.fragment,p),i=!0)},o(p){Se(n.$$.fragment,p),i=!1},d(p){p&&M(t),Ge(n),o=!1,r()}}}function cl(e,t){let n,l,i,o,r,p=t[42].showDivider&&sl(t),f=t[7]&&t[9]===t[44]&&t[11]&&ul(t),c=t[42].block.id!==t[7]&&rl(t);return{key:e,first:null,c(){n=In(),p&&p.c(),l=B(),f&&f.c(),i=B(),c&&c.c(),o=In(),this.first=n},m(b,d){N(b,n,d),p&&p.m(b,d),N(b,l,d),f&&f.m(b,d),N(b,i,d),c&&c.m(b,d),N(b,o,d),r=!0},p(b,d){t=b,t[42].showDivider?p?p.p(t,d):(p=sl(t),p.c(),p.m(l.parentNode,l)):p&&(p.d(1),p=null),t[7]&&t[9]===t[44]&&t[11]?f?(f.p(t,d),d[0]&2944&&ke(f,1)):(f=ul(t),f.c(),ke(f,1),f.m(i.parentNode,i)):f&&(Vt(),Se(f,1,1,()=>{f=null}),qt()),t[42].block.id!==t[7]?c?(c.p(t,d),d[0]&384&&ke(c,1)):(c=rl(t),c.c(),ke(c,1),c.m(o.parentNode,o)):c&&(Vt(),Se(c,1,1,()=>{c=null}),qt())},i(b){r||(ke(f),ke(c),r=!0)},o(b){Se(f),Se(c),r=!1},d(b){b&&(M(n),M(l),M(i),M(o)),p&&p.d(b),f&&f.d(b),c&&c.d(b)}}}function pl(e){let t,n,l,i,o,r;return n=new Cn({props:{block:e[11].block,index:e[9]-1,femaleIndex:e[11].femaleIndex,maleIndex:e[11].maleIndex,onChange:e[1],onRemove:e[2],onHandlePointerDown:e[13](e[11].block.id),forceCollapse:e[6],colorizeTitles:e[5],isDragging:!0}}),{c(){t=u("div"),Qe(n.$$.fragment),s(t,"role","listitem")},m(p,f){N(p,t,f),qe(n,t,null),i=!0,o||(r=Tn(l=e[12].call(null,t,e[11].block.id)),o=!0)},p(p,f){const c={};f[0]&2048&&(c.block=p[11].block),f[0]&512&&(c.index=p[9]-1),f[0]&2048&&(c.femaleIndex=p[11].femaleIndex),f[0]&2048&&(c.maleIndex=p[11].maleIndex),f[0]&2&&(c.onChange=p[1]),f[0]&4&&(c.onRemove=p[2]),f[0]&2048&&(c.onHandlePointerDown=p[13](p[11].block.id)),f[0]&64&&(c.forceCollapse=p[6]),f[0]&32&&(c.colorizeTitles=p[5]),n.$set(c),l&&At(l.update)&&f[0]&2048&&l.update.call(null,p[11].block.id)},i(p){i||(ke(n.$$.fragment,p),i=!0)},o(p){Se(n.$$.fragment,p),i=!1},d(p){p&&M(t),Ge(n),o=!1,r()}}}function fl(e){let t,n=e[39].label+"",l,i;return{c(){t=u("option"),l=F(n),t.__value=i=e[39].value,le(t,t.__value)},m(o,r){N(o,t,r),a(t,l)},p(o,r){r[0]&16&&n!==(n=o[39].label+"")&&ut(l,n),r[0]&16&&i!==(i=o[39].value)&&(t.__value=i,le(t,t.__value))},d(o){o&&M(t)}}}function dl(e){let t,n,l=gt(e[36].options),i=[];for(let o=0;oT[42].block.id;for(let T=0;T