# -*- coding: utf-8 -*-
"""Український текст для Level 0 A1 — «Бог створює світ».

Рівень 0 — дошкільний: 4 сторінки, тексту мало, майже все — малювання,
розфарбовування й обведення по крапках. Блоки `Adult Guidance` адресовані
дорослому, який веде заняття, і теж перекладаються.

Цитати — Турконяк (УБТ, 2020).
"""
import json
import os

import fitz

TR = {}
POST = []
WIPES = []

HERE = os.path.dirname(os.path.abspath(__file__))
PURPLE = (0.702, 0.341, 0.616)       # #b3579d — фірмовий колір рівня 0
ROUND = '/System/Library/Fonts/SFNSRounded.ttf'

with open(os.path.join(HERE, 'work', 'Level0_A1', 'template.json'),
          encoding='utf-8') as _fh:
    _TPL = json.load(_fh)
IDX = {f"p{p['page']}b{b['i']}": b for p in _TPL for b in p['blocks']}


def rows(key, *text_lines, s=0):
    TR[key] = {'lines': [[(t, s)] for t in text_lines]}


def one(key, text, s=0):
    TR[key] = {'lines': [[(text, s)]]}


def guidance(key, *text_lines, read=None):
    """Блок «Adult Guidance»; у сторінках 3–4 він ділить блок із «ЧИТАЙ»."""
    lines = []
    if read:
        lines.append([('ЧИТАЙ:', 0)])
        lines.append([(read, 1)])
        head_s, body_s = 2, 3
    else:
        head_s, body_s = 0, 1
    lines.append([('Для дорослого', head_s), (' — ' + text_lines[0], body_s)])
    lines += [[(t, body_s)] for t in text_lines[1:]]
    TR[key] = {'lines': lines}


# ═══════════════════════════════════════════════════════════ сторінка 1
rows('p0b0', 'Впиши тут своє імʼя та адресу.', 'Вік:', "Ім'я:", 'Адреса:')
for _i, _t in ((1, 'Вік:'), (2, "Ім'я:"), (3, 'Адреса:')):
    TR['p0b0']['lines'][_i] = [(_t, 1)]
one('p0b1', 'Учитель:')
# «level N» — білий текст на білому тлі, тобто невидимий (§1.3).
# І перекладати, і **стирати** його не можна: напис повернутий на 90°,
# тож його прямокутник — висока смуга вздовж правого краю, і редагування
# ковтає бокс балів, що стоїть усередині неї. Лишаємо блок недоторканим.
TR['p0b3'] = {'lines': [
    [('bible', 0), ('time', 1)],
    [('www.besweb.com', 2)],
    [('Рівень 0 — біблійні історії', 3)],
    [('A1', 4)],
]}
one('p0b4', 'Рівень 0')
TR['p0b5'] = {'lines': [
    [('B.E.S.', 0)], [('мудрий друг', 1)],
    [('Q', 0)], [('ставить', 1)], [('запитання', 1)]]}
TR['p0b6'] = {'right': 514.0, 'lines': [
    [('Pause', 0)], [('любить', 1)], [('подумати', 1)]]}
TR['p0b7'] = {'lines': [
    [('Beam', 0)], [('друг, який', 1)], [('підбадьорює', 1)]]}
one('p0b44', 'Біблія каже, що Бог створив усе на небі й на землі.')
one('p0b45', "З'єднай крапки, намалюй сонце й розфарбуй його жовтим.")
one('p0b46', 'Прикрась вірш.')
# Контурний напис (Arial-Black, режим обведення) — його розфарбовують.
TR['p0b47'] = {'render': 1, 'border': 0.5, 'lines': [
    [('«Бог створив', 0)],
    [('небо і', 0)],
    [('землю».', 0)],
]}
one('p0b48', 'Буття 1: 1')
one('p0b49', 'ІСТОРІЯ 1: Бог створює світ')
one('p0b50', 'Ця історія про те, як Бог створив небо і землю.')
TR['p0b52'] = {'lines': [[('ЧИТАЙ:', 0)], [('Буття 1: 1-19', 1)]]}
guidance('p0b54',
         'поясніть дітям, що з Біблії ми дізнаємося про все, що створив Бог.',
         'Попросіть їх назвати кілька речей, які створив Бог.')

# ═══════════════════════════════════════════════════════════ сторінка 2
TR['p1b0'] = {'lines': [
    [('bible', 0), ('time', 1)],
    [('Рівень 0 — біблійні історії', 2)],
]}
one('p1b2', 'A1')
one('p1b3', 'ІСТОРІЯ 2: Бог створює тварин і людей')
one('p1b4', 'Ця історія про перших чоловіка й жінку.')
TR['p1b6'] = {'lines': [
    [('ЧИТАЙ:', 0)], [('Буття', 1)], [('1: 20 — 2: 3', 1)]]}
one('p1b7', 'Біблія каже, що Бог створив усіх тварин і людей.')
one('p1b8', 'Першого чоловіка звали Адам, а першу жінку — Єва.')
rows('p1b9', "Розфарбуй малюнок. З'єднай крапки внизу — і дізнаєшся, що Бог",
     'сказав про Своє творіння.')
# Другий рядок — пунктирний напис для обведення; малюється в POST.
TR['p1b10'] = {'lines': [[('«Це було', 0)], [('', 1)]]}
TR['p1b11'] = {'lines': [[('Буття 1: 31', 0)], [('/ 10', 1)]]}
guidance('p1b12',
         'за малюнком попросіть дітей назвати те, що створив Бог. Біблія',
         'вчить, що люди — найважливіше Боже творіння. Він створив їх не такими, як тварин.',
         'Він доручив їм особливу справу — дбати про все на землі. Усе, що створив Бог, було досконале.')
rows('p1b24', 'Що тобі', 'найбільше подобається', 'у Божому творінні?')

# ═══════════════════════════════════════════════════════════ сторінка 3
TR['p2b1'] = {'lines': [
    [('bible', 0), ('time', 1)],
    [('Рівень 0 — біблійні історії', 2)],
    [('A1', 3)],
]}
one('p2b3', 'Бог любив Адама і Єву й дав їм прекрасний сад, щоб там жити.')
one('p2b4', 'Він сказав їм не їсти плодів з одного дерева.')
rows('p2b5', 'Розфарбуй плоди на дереві червоним.', 'Обведи змія.',
     'Розфарбуй Адама і Єву.')
one('p2b6', 'Одного дня Божий ворог, сатана, зʼявився в саду в подобі змія.')
one('p2b7', 'Сатана намовив Адама і Єву не послухатися Бога. Вони знали, що це зле.')
one('p2b8', 'Біблія каже, що непослух Богові — це гріх.')
one('p2b9', 'ІСТОРІЯ 3: Перші чоловік і жінка')
one('p2b10', 'Ця історія про те, як Адам і Єва не послухалися Бога.')
guidance('p2b12',
         'Бог сказав Адамові та Єві не їсти плодів з одного дерева. Але в сьогоднішній',
         'історії ми читаємо, що вони обрали непослух. Поміркуйте: як люди не слухаються Бога сьогодні?',
         read='Буття 2: 4-25')

# ═══════════════════════════════════════════════════════════ сторінка 4
TR['p3b0'] = {'lines': [[('Бали', 0), (' (вписує вчитель)', 1)]]}
for _i in range(1, 5):
    one(f'p3b{_i}', f'ІСТОРІЯ {_i}:')
one('p3b5', 'Разом')
one('p3b6', 'Загалом')
rows('p3b7', 'Коментар учителя:', 'Надішли свої уроки на адресу:')
TR['p3b8'] = {'lines': [
    [('©', 0), (' Bible Educational Services. Відвідай ', 1), ('www.besweb.com', 2),
     (' або телефонуй +44 (0) 28 6632 2462.', 1)],
    [('Registered Charity UK CIO 1186004', 1)],
    [('РІВЕНЬ 0 A1', 3)],
    [('01/2025', 4)],
]}
rows('p3b9', 'Бог мусив покарати Адама і Єву за їхній гріх. Він вигнав їх',
     'із прекрасного саду.')
rows('p3b10', 'Біблія каже, що й ми маємо бути покарані за свій гріх. Добра новина',
     'у тому, що Бог послав Ісуса понести нашу кару. Ісус помер на хресті',
     'за наш гріх. Це показує, як сильно Бог нас любить.')
one('p3b11', "З'єднай крапки, намалюй хрест і розфарбуй малюнок.")
rows('p3b12', 'Біблія каже: коли ми просимо в Бога пробачення',
     'за свій гріх, Він прощає нас.')
one('p3b13', 'ІСТОРІЯ 4: Божий світ зіпсовано')
one('p3b14', 'Ця історія про те, як гріх увійшов у світ.')
guidance('p3b16',
         'запитайте дітей, чому нас треба карати, коли ми робимо щось погане.',
         'Біблія вчить, що Бог послав Ісуса померти на хресті, щоб нам могло бути прощено.',
         read='Буття 3: 1-24')
rows('p3b34', 'Коли ми читаємо', 'Біблію, ми дізнаємося', 'про Божу любов', 'до нас.')
rows('p3b35', 'Саме так,', 'B.E.S.! Коли ми довіряємо', 'Богові, Він — наш', 'найкращий друг!')


# ═══════════════════════════════════════════════════════════ пунктирний напис
from puzzlekit import dotted_text                             # noqa: E402

DOTTED = [('дуже добре».', (154.0, 764.0), 55.0)]


def _draw_puzzles(doc, only=None):
    if only is not None and 1 not in only:
        return
    for text, at, size in DOTTED:
        ok = dotted_text(doc[1], at, text, 'uaDot', ROUND, size)
        if not ok:
            print(f'  !! пунктир не застосовано до {text!r}')
    print(f'  стор. 2: пунктирний напис — {DOTTED[0][0]!r}')


POST.append(_draw_puzzles)

# ── праві межі абзаців (§2.4, правило 1) ─────────────────────────────────
for _k, _v in TR.items():
    if 'flow' in _v and 'right' not in _v:
        _r = IDX[_k]['bbox'][2]
        if _r < 480:
            _v['right'] = _r + 2.0
