На этой страницеAPI ui
Нативные страницы
Стройте интерфейс из описания узлов, callback ID и ресурсов пакета.
API ui
Страница плагина — нативный интерфейс, описанный JSON-совместимыми узлами. Для неё объявите ui.contribute / settings.
Первая страница
const clicked = api.ui.callback(async () => {
await api.ui.toast("Готово");
});
await api.ui.render({
id: "tools",
title: "Инструменты",
nodes: [
{ id: "intro", type: "text", text: "Выберите действие" },
{ id: "run", type: "button", title: "Проверить", callbackId: clicked.id }
]
});
Типы узлов
| Тип | Основные поля |
|---|---|
section, list |
children |
text, markdown |
text, необязательный title |
button |
title, callbackId |
toggle |
title, boolean value, callbackId |
input, multiline |
title, строковый value, callbackId |
select |
options, выбранный value, callbackId |
slider, stepper |
minimum, maximum, step, value, callbackId |
image |
asset от api.assets.image |
Переключатель
const changed = api.ui.callback(async value => {
const current = await api.settings.get();
await api.settings.set({ ...current, enabled: value });
});
const toggle = {
id: "enabled",
type: "toggle",
title: "Включить замену",
value: true,
callbackId: changed.id
};
Поле enabled должно быть объявлено в settingsSchema, если callback сохраняет его через settings API.
Значения select и чисел
У select до 32 вариантов { title, value }; value — строка, число, boolean или null и должен совпадать с одним вариантом. Для slider/stepper обязательны конечные согласованные границы, положительный шаг и выровненное значение.
Лимиты
До 128 узлов, глубина 0–6 и 64 КиБ JSON на страницу. id уникальны во всём дереве. Заголовок — до 200 UTF-16 единиц, текст и значение input — до 4096.
Время жизни
Повторный render того же page ID заменяет содержимое. Закрытая или устаревшая страница не вызывает прежние callbacks. При остановке runtime её ресурсы освобождаются.
await api.ui.dispose({ id: "tools" });
clicked.dispose();
Проверка перед запуском
python tools/dgplugin.py validate-ui page.json
Markdown поддерживает ограниченный набор оформления и списки. Произвольные HTML, CSS, WebView, внешние картинки и исполняемые ссылки не вставляются в нативную страницу.