Metadata-Version: 2.4
Name: exteragram-alib
Version: 1.0.0
Summary: A reactive declarative UI and threading utility library for exteraGram / Telegram plugins.
Author-email: Your Name <your.email@example.com>
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# exteragram-alib 🚀

Библиотека реактивного декларативного UI и утилит работы с потоками для плагинов **exteraGram** (клиента Telegram на Android).

A reactive declarative UI and threading utility library for writing **exteraGram** (Android Telegram client) plugins.

---

## Установка / Installation (PyPI)

В метаданных вашего плагина exteraGram укажите библиотеку в списке `__requirements__`:
Add the library to the `__requirements__` metadata list in your exteraGram plugin:

```python
__requirements__ = ["exteragram-alib"]
```

---

## Возможности / Features

### 1. Реактивные состояния / Reactive States (`State`)
Связывает состояние переменных с UI-элементами. При изменении значения через `.set()`, UI автоматически перерисовывается на Android-устройстве.
Binds state values to UI components. When the value changes via `.set()`, the UI elements automatically update.

```python
from alib import State

counter = State(0)
counter.set(counter.get() + 1)
```

### 2. Декларативный UI / Declarative UI (`alib.ui`)
Компоновка интерфейса с помощью древовидной структуры виджетов:
Build native Android Telegram interfaces using nested declarative layouts:

```python
from alib import VBox, Card, RowItem, Toggle, Selector, Button

layout = VBox(
    padding=[16, 12, 16, 12],
    children=[
        Card(
            children=[
                RowItem(
                    title="Настройка плагина",
                    subtext="Включение или выключение",
                    right_widget=Toggle(value=my_state)
                ),
                Selector(
                    text="Язык интерфейса",
                    items=["Русский", "English"],
                    value=lang_index
                )
            ]
        )
    ]
)
```

### 3. Управление потоками / Threading & Dispatching (`alib.threading`)
Декораторы и хелперы для бесшовного выполнения задач на UI-потоке Android или в фоновых очередях Telegram.
Decorators and helper utilities for executing code on Android UI thread or background queues in Telegram.

* `@main_thread` (или `@run_on_ui`) — переключает исполнение функции на главный UI-поток.
* `@background_thread` (или `@run_on_background`) — запускает функцию асинхронно в фоне на одной из очередей (например, `"network"`, `"plugins"`, `"global"`).

```python
from alib import main_thread, background_thread

@background_thread(queue="network", delay=1000)
def fetch_api_data():
    # Работает в фоновом потоке
    data = load_some_data_from_web()
    update_ui(data)

@main_thread
def update_ui(data):
    # Работает на UI-потоке
    status_label.set(data)
```

---

## Лицензия / License

Библиотека распространяется под лицензией MIT. / Distributed under the MIT license.
