2025-04-26 18:35:26 +00:00
|
|
|
|
import { CheckboxSyncPluginSettings } from "src/types";
|
|
|
|
|
|
import { ValidationError } from "../validation/types";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Интерфейс для компонента, отвечающего за одну настройку в UI.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface ISettingComponent {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Получает ключ настройки, за которую отвечает этот компонент.
|
|
|
|
|
|
* @returns Ключ из CheckboxSyncPluginSettings.
|
|
|
|
|
|
*/
|
|
|
|
|
|
getSettingKey(): keyof CheckboxSyncPluginSettings;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Получает значение по умолчанию для этой настройки.
|
|
|
|
|
|
* @returns Значение по умолчанию.
|
|
|
|
|
|
*/
|
|
|
|
|
|
getDefaultValue(): any;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Рендерит UI-элементы для этой настройки в указанный контейнер.
|
|
|
|
|
|
* @param container - HTML-элемент, куда добавлять настройку.
|
|
|
|
|
|
* @param currentValue - Текущее сохраненное значение настройки.
|
|
|
|
|
|
*/
|
|
|
|
|
|
render(container: HTMLElement, currentValue: any): void;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Считывает значение из UI-элементов компонента.
|
|
|
|
|
|
* Может включать парсинг (например, JSON).
|
|
|
|
|
|
* @returns Текущее значение из UI.
|
|
|
|
|
|
* @throws Error если значение в UI некорректно для извлечения (например, невалидный JSON).
|
|
|
|
|
|
*/
|
|
|
|
|
|
getValueFromUi(): any;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Устанавливает значение в UI-элементы компонента.
|
|
|
|
|
|
* Может включать форматирование (например, JSON.stringify).
|
|
|
|
|
|
* @param value - Значение для установки в UI.
|
|
|
|
|
|
*/
|
|
|
|
|
|
setValueInUi(value: any): void;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Выполняет *индивидуальную* валидацию значения.
|
|
|
|
|
|
* **Важно:** Этот метод должен быть тестируемым и не зависеть от Obsidian API.
|
|
|
|
|
|
* Он принимает чистое значение и возвращает ошибку или null.
|
|
|
|
|
|
* @param value - Чистое значение для валидации (обычно результат getValueFromUi).
|
|
|
|
|
|
* @returns Объект ValidationError, если значение невалидно, иначе null.
|
|
|
|
|
|
*/
|
2025-04-26 20:25:41 +00:00
|
|
|
|
validate(): ValidationError | null;
|
2025-04-26 18:35:26 +00:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Устанавливает колбэк, который будет вызван при изменении значения в UI.
|
|
|
|
|
|
* Используется для управления флагом isDirty.
|
|
|
|
|
|
* @param listener - Функция обратного вызова.
|
|
|
|
|
|
*/
|
|
|
|
|
|
setChangeListener(listener: () => void): void;
|
|
|
|
|
|
}
|