UNPKG

@oi-reactive/io-reactive

Version:

Modern reactive UI framework with router, state management, and islands architecture

1,240 lines (1,237 loc) 35.2 kB
// Generated by dts-bundle-generator v9.5.1 /** * Tag enumeration for supported HTML elements */ export declare enum tag { DIV = "div", H1 = "h1", H2 = "h2", H3 = "h3", H4 = "h4", H5 = "h5", H6 = "h6", P = "p", SPAN = "span", A = "a", IMG = "img", UL = "ul", OL = "ol", LI = "li", NAV = "nav", HEADER = "header", FOOTER = "footer", SECTION = "section", ARTICLE = "article", ASIDE = "aside", MAIN = "main", FORM = "form", INPUT = "input", BUTTON = "button", LABEL = "label", TEXTAREA = "textarea", SELECT = "select", OPTION = "option", TABLE = "table", TR = "tr", TD = "td", TH = "th", THEAD = "thead", TBODY = "tbody", TFOOT = "tfoot", CAPTION = "caption", VIDEO = "video", AUDIO = "audio", IFRAME = "iframe", CANVAS = "canvas", SVG = "svg", PATH = "path" } /** * Type for tag property (enum or string) */ export type _tag = tag | string; /** * Type for classList property */ export type _classList = ((() => string) | string)[]; /** * Type for id property */ export type _id = (number | string) | (() => string | number); /** * Type for events property */ export type _events = { [key: string]: (e?: Event | undefined) => void; }; /** * Type for attributes property */ export type _atr = { [key: string]: (() => string) | string | undefined; }; /** * Type for children property */ export type _children = unknown[]; /** * Type for text property */ export type _text = (() => string | number) | (string | number); /** * Type for inner property */ export type _inner = string | null; /** * Interface for IO element props */ export interface iIO { tag?: _tag; classList?: _classList; id?: _id; events?: _events; atr?: _atr; children?: _children; components?: _components; text?: _text; inner?: _inner; inputProps?: { placeholder?: string; [key: string]: unknown; }; } /** * Interface for query status */ export interface iQueryStatus<T> { data: () => T; loading: boolean; error: Error | null; } /** * Interface for IO root */ export interface iIORoot { rootElement: HTMLElement; rootComponent: (() => unknown) | null; } /** * Interface for IO page */ export interface iPage { [key: string]: () => unknown; } /** * Interface for state query callbacks */ export interface iStateQueryCallbacks<T> { ok?: (res: T) => void; error?: (err: Error) => void; } /** * Model directive for two-way data binding */ export type ModelDirective<T = string> = [ getter: () => T, setter: (value: T) => void ]; /** * Submit directive for form submission */ export type SubmitDirective<T = string> = (value: T) => void; /** * Validate directive for value validation */ export type ValidateDirective<T = string> = (value: T) => boolean | string; /** * Transform directive for value transformation */ export type TransformDirective<TInput = string, TOutput = string> = { toState?: (value: TInput) => TOutput; toDOM?: (value: TOutput) => TInput; }; /** * Mask directive configuration */ export interface MaskDirective { pattern: string; placeholder?: string; definitions?: Record<string, RegExp>; showMaskOnFocus?: boolean; showMaskOnHover?: boolean; clearIncomplete?: boolean; } /** * Custom directive configuration */ export interface CustomDirective<T = unknown> { name: string; init: (element: HTMLElement, value: T, context: DirectiveContext) => void; destroy?: () => void; update?: (newValue: T) => void; options?: Record<string, unknown>; } /** * Directive execution context */ export interface DirectiveContext { element: HTMLElement; io: unknown; addCleanup: (fn: () => void) => void; getValue: () => unknown; setValue: (value: unknown) => void; } /** * Advanced directive options */ export interface AdvancedDirectiveOptions { debounceOptions?: { delay: number; leading?: boolean; maxWait?: number; }; focusOptions?: { preserve: boolean; preserveCursor?: boolean; preserveSelection?: boolean; }; validationOptions?: { validateOnChange?: boolean; validateOnBlur?: boolean; showErrorsRealtime?: boolean; cssClasses?: { valid?: string; invalid?: string; pending?: string; }; }; } /** * Full set of form directives */ export interface FormDirectives<T = string> extends AdvancedDirectiveOptions { model?: ModelDirective<T>; onSubmit?: SubmitDirective<T>; validate?: ValidateDirective<T>; transform?: TransformDirective<unknown, T>; mask?: MaskDirective; custom?: CustomDirective[]; debounce?: number; preserveFocus?: boolean; clearOnSubmit?: boolean; autoTrim?: boolean; autoLowercase?: boolean; autoUppercase?: boolean; maxLength?: number; allowedChars?: RegExp; forbiddenChars?: RegExp; } /** * Factory for synchronous module */ export type ModuleFactory<T> = () => T; /** * Factory for asynchronous module */ export type AsyncModuleFactory<T> = () => Promise<T>; /** * Lazy module type */ export type LazyModule<T> = () => Promise<T>; /** * Lazy load configuration */ export interface LazyLoadConfig { preload?: boolean; timeout?: number; retries?: number; fallback?: unknown; priority?: number; } /** * Cache entry for element cache */ export interface CacheEntry { element: Element; timestamp: number; ttl: number; } /** * Type that can be returned by component functions in the components array. * @template IOType - Main IO component type * @template IslandType - Island component type */ export type ComponentReturn<IOType = unknown, IslandType = unknown> = IOType | IslandType | null; /** * Array of component-returning functions. * @template IOType - Main IO component type * @template IslandType - Island component type */ export type IOArray<IOType = unknown, IslandType = unknown> = (() => ComponentReturn<IOType, IslandType>)[]; /** * Type for components property (array of component-returning functions or a function returning such an array) * @template IOType - Main IO component type * @template IslandType - Island component type */ export type _components<IOType = unknown, IslandType = unknown> = IOArray<IOType, IslandType> | (() => IOArray<IOType, IslandType>); /** * Hydration strategy for islands */ export type HydrationStrategy = { "client:load"?: boolean; "client:idle"?: boolean; "client:visible"?: boolean; "client:media"?: string; }; /** * Island configuration interface */ export interface IslandConfig { classList?: unknown; id?: unknown; atr?: unknown; hydration: HydrationStrategy; fallback?: () => unknown; component: () => unknown | Promise<unknown>; props?: Record<string, unknown>; } /** * Stream message interface */ export interface iStreamMessage { id: string; data: unknown; } /** * Path type for route definitions */ export type path = `/${string}`; /** * Route parameters interface */ export interface iRouteParams { isActive?: boolean; isPrivate?: boolean; redirectTo?: path; guards?: RouteGuard[]; metadata?: RouteMetadata; cache?: boolean; preload?: boolean; layout?: layoutTemplate; useIOLayout?: boolean; layoutDepth?: number; animateLayoutLevel?: boolean; } /** * Route interface */ export interface iRoute { path: path; name?: string; template: routeIO; params?: iRouteParams; children?: iRoutes; includes?: iRoutes; guards?: RouteGuard[]; metadata?: RouteMetadata; } /** * Array of routes */ export type iRoutes = iRoute[]; /** * Router map type */ export type routerMap = Map<string, Route>; /** * Route IO function type */ export type routeIO = (data: string) => unknown | Promise<unknown>; /** * Domain type */ export type domain = string; /** * Middleware function type */ export type middleware = ((data: iMiddlewareData) => void) | undefined; /** * Layout template function type */ export type layoutTemplate = ((children: (() => unknown)[]) => unknown) | undefined; /** * Router instance interface */ export interface iIORouter { domain: domain; routes: Promise<iRoutes>; root?: HTMLElement; auth?: () => Promise<boolean>; middleware?: (data: iMiddlewareData) => void; layout?: layoutTemplate; } /** * Middleware data interface */ export interface iMiddlewareData { domain: string; routes: [ string, Route ][]; href: path; state?: unknown; } /** * Router config interface */ export interface iConfig { root: HTMLElement; domain: domain; routes: Promise<iRoutes>; auth?: (() => Promise<boolean>) | undefined; middleware?: middleware; layout?: layoutTemplate; } /** * Query params interface */ export interface iQueryParams { [key: string]: string; } /** * Route guard interface */ export interface RouteGuard { canActivate(route: Route): Promise<boolean> | boolean; canDeactivate?(route: Route): Promise<boolean> | boolean; resolve?(route: Route): Promise<unknown> | unknown; onReject?(route: Route): void; } /** * Open Graph metadata interface */ export interface OpenGraphData { title?: string; description?: string; image?: string; url?: string; type?: string; siteName?: string; } /** * Twitter Card metadata interface */ export interface TwitterCardData { card?: "summary" | "summary_large_image" | "app" | "player"; site?: string; creator?: string; title?: string; description?: string; image?: string; } /** * Route metadata interface */ export interface RouteMetadata { title?: string; description?: string; keywords?: string[]; author?: string; canonical?: string; robots?: string; viewport?: string; charset?: string; openGraph?: OpenGraphData; twitterCard?: TwitterCardData; customMeta?: { [key: string]: string; }; structuredData?: unknown; } /** * Route class stub for type references */ export declare class Route { path: path; name: string; } /** * Класс интерактивного островка */ export declare class IslandComponent { private _tag; private _config; private _isHydrated; private _element; private _hydratedComponent; private _observerCleanup; constructor(tag: _tag$1, config: IslandConfig$1); /** * Рендерит островок (изначально fallback) */ render(): HTMLElement; /** * Инициализирует гидратацию в зависимости от стратегии */ private _initHydration; /** * Настройка Intersection Observer для 'client:visible' */ private _setupVisibilityObserver; /** * Настройка медиа-запроса для 'client:media' */ private _setupMediaQuery; /** * Выполняет гидратацию островка */ private _hydrate; /** * Уничтожает островок и очищает ресурсы */ destroy(): void; /** * Возвращает состояние гидратации */ isHydrated(): boolean; /** * Возвращает гидратированный компонент (если есть) */ getHydratedComponent(): IO | null; } type ModelDirective$1<T = string> = [ /** Получить текущее значение */ getter: () => T, /** Установить новое значение */ setter: (value: T) => void ]; type SubmitDirective$1<T = string> = (value: T) => void; type ValidateDirective$1<T = string> = (value: T) => boolean | string; type TransformDirective$1<TInput = string, TOutput = string> = { /** Преобразование из DOM в состояние */ toState?: (value: TInput) => TOutput; /** Преобразование из состояния в DOM */ toDOM?: (value: TOutput) => TInput; }; interface MaskDirective$1 { /** Шаблон маски (например: "+7 (###) ###-##-##") */ pattern: string; /** Символ-заполнитель (по умолчанию '_') */ placeholder?: string; /** Разрешенные символы для замены */ definitions?: Record<string, RegExp>; /** Показывать маску при фокусе */ showMaskOnFocus?: boolean; /** Показывать маску при hover */ showMaskOnHover?: boolean; /** Очищать неполные значения */ clearIncomplete?: boolean; } interface CustomDirective$1<T = unknown> { /** Имя директивы */ name: string; /** Инициализация директивы */ init: (element: HTMLElement, value: T, context: DirectiveContext$1) => void; /** Очистка ресурсов */ destroy?: () => void; /** Обновление значения */ update?: (newValue: T) => void; /** Опции директивы */ options?: Record<string, unknown>; } interface DirectiveContext$1 { /** Элемент, к которому применяется директива */ element: HTMLElement; /** IO компонент */ io: unknown; /** Функции для добавления cleanup */ addCleanup: (fn: () => void) => void; /** Получить значение элемента */ getValue: () => unknown; /** Установить значение элемента */ setValue: (value: unknown) => void; } interface AdvancedDirectiveOptions$1 { /** Настройки debounce */ debounceOptions?: { /** Задержка в миллисекундах */ delay: number; /** Срабатывание на leading edge */ leading?: boolean; /** Максимальное время ожидания */ maxWait?: number; }; /** Настройки сохранения фокуса */ focusOptions?: { /** Сохранять фокус при обновлениях */ preserve: boolean; /** Сохранять позицию курсора */ preserveCursor?: boolean; /** Восстанавливать выделение */ preserveSelection?: boolean; }; /** Настройки валидации */ validationOptions?: { /** Валидировать при каждом изменении */ validateOnChange?: boolean; /** Валидировать при потере фокуса */ validateOnBlur?: boolean; /** Показывать ошибки в реальном времени */ showErrorsRealtime?: boolean; /** CSS классы для состояний */ cssClasses?: { valid?: string; invalid?: string; pending?: string; }; }; } interface FormDirectives$1<T = string> extends AdvancedDirectiveOptions$1 { /** Двустороннее связывание данных */ model?: ModelDirective$1<T>; /** Обработчик отправки формы */ onSubmit?: SubmitDirective$1<T>; /** Функция валидации */ validate?: ValidateDirective$1<T>; /** Преобразование значений */ transform?: TransformDirective$1<unknown, T>; /** Маска ввода */ mask?: MaskDirective$1; /** Пользовательские директивы */ custom?: CustomDirective$1[]; /** Задержка debounce (упрощенная версия) */ debounce?: number; /** Сохранять фокус при обновлениях */ preserveFocus?: boolean; /** Очищать поле после отправки */ clearOnSubmit?: boolean; /** Автоматическое обрезание пробелов */ autoTrim?: boolean; /** Автоматическое приведение к нижнему регистру */ autoLowercase?: boolean; /** Автоматическое приведение к верхнему регистру */ autoUppercase?: boolean; /** Максимальная длина ввода */ maxLength?: number; /** Разрешенные символы (регулярное выражение) */ allowedChars?: RegExp; /** Запрещенные символы (регулярное выражение) */ forbiddenChars?: RegExp; } export type tSetState<T> = { (value: T): void; (updater: (value: T) => T): void; }; declare enum tag$1 { DIV = "div", H1 = "h1", H2 = "h2", H3 = "h3", H4 = "h4", H5 = "h5", H6 = "h6", P = "p", SPAN = "span", A = "a", IMG = "img", UL = "ul", OL = "ol", LI = "li", NAV = "nav", HEADER = "header", FOOTER = "footer", SECTION = "section", ARTICLE = "article", ASIDE = "aside", MAIN = "main", FORM = "form", INPUT = "input", BUTTON = "button", LABEL = "label", TEXTAREA = "textarea", SELECT = "select", OPTION = "option", TABLE = "table", TR = "tr", TD = "td", TH = "th", THEAD = "thead", TBODY = "tbody", TFOOT = "tfoot", CAPTION = "caption", VIDEO = "video", AUDIO = "audio", IFRAME = "iframe", CANVAS = "canvas", SVG = "svg", PATH = "path" } type _components$1 = _components<IO, IslandComponent>; type _tag$1 = tag$1 | string; type _classList$1 = ((() => string) | string)[]; type _id$1 = (number | string) | (() => string | number); type _events$1 = { [key: string]: (e?: Event | undefined) => void; }; type _atr$1 = { [key: string]: (() => string) | string | undefined; }; type _children$1 = IO[]; type _text$1 = (() => string | number) | (string | number); type _inner$1 = string | null; interface iIO$1 extends FormDirectives$1 { tag?: _tag$1; classList?: _classList$1; id?: _id$1; events?: _events$1; atr?: _atr$1; children?: _children$1; components?: _components$1; text?: _text$1; inner?: _inner$1; /** * Специфичные свойства для input (placeholder, type, value и др.) */ inputProps?: { placeholder?: string; [key: string]: unknown; }; } interface iStateQueryCallbacks$1<T> { ok?: (res: T) => void; error?: (err: Error) => void; } type HydrationStrategy$1 = { "client:load"?: boolean; "client:idle"?: boolean; "client:visible"?: boolean; "client:media"?: string; }; interface IslandConfig$1 { classList?: _classList$1; id?: _id$1; atr?: _atr$1; hydration: HydrationStrategy$1; fallback?: () => IO; component: () => IO | Promise<IO>; props?: Record<string, unknown>; } declare class DirectiveManager { private element; private directives; private cleanup; private domCache; private lazyInit; private initialized; private stats; constructor(element: HTMLElement, directives: FormDirectives$1); /** * Ленивая инициализация директив * Директивы инициализируются только при первом использовании */ init(): void; /** * Получает статистику производительности */ getPerformanceStats(): { cacheEfficiency: number; domOperationsPerEvent: number; domOperations: number; eventsFired: number; validationCalls: number; cacheHits: number; cacheMisses: number; }; /** Очистка ресурсов с оптимизированной очисткой */ destroy(): void; /** * Строит кэш DOM операций для повышения производительности */ private buildDOMCache; /** * Планирует ленивую инициализацию директив */ private scheduleDirectiveInit; /** * Планирует инициализацию директив при первом взаимодействии */ private scheduleInteractionInit; private validateDirectives; /** * Инициализация model директивы с оптимизированной синхронизацией */ private initModelDirective; /** * Настройка умной синхронизации состояния без rAF polling */ private setupStateSync; /** * Обновление с сохранением фокуса и позиции курсора */ private preserveFocusUpdate; /** * Инициализация submit директивы */ private initSubmitDirective; /** * Инициализация validate директивы */ private initValidateDirective; /** * Оптимизированное получение значения элемента с кэшированием */ private getElementValueOptimized; /** * Оптимизированная установка значения элемента */ private setElementValueOptimized; /** * Fallback методы для совместимости */ private getElementValueFallback; private setElementValueFallback; private getRelevantEvents; } declare class Hydration { private tagSwitcher; private create; private createSVG; /** * Устанавливает classList для элемента * @param element - HTML элемент * @param classList - список классов или реактивная ссылка * @param batched - использовать батчинг */ private setClassList; /** * Устанавливает id для элемента * @param element - HTML элемент * @param id - id или реактивная ссылка */ private setID; /** * Устанавливает события для элемента * @param element - HTML элемент * @param events - объект событий или реактивная ссылка */ private setEvents; private setComponents; /** * Устанавливает текстовое содержимое для элемента * @param element - HTML элемент * @param text - текст, функция или реактивная ссылка * @param batched - использовать батчинг */ private setText; /** * Метод для установки HTML содержимого (ВНИМАНИЕ: потенциально небезопасно!) * Используйте только с доверенным контентом или предварительной санитизацией * @param element - HTML элемент * @param html - HTML содержимое (строка или функция) * @param options - опции безопасности */ setHTML(element: HTMLElement, html: string | (() => string), options?: { trusted?: boolean; sanitize?: boolean; warnInDev?: boolean; }): void; /** * Устанавливает атрибуты для элемента * @param element - HTML элемент * @param atr - объект атрибутов или реактивная ссылка * @param batched - использовать батчинг */ private setAtr; private setComponentId; hydrate(_node: IO, renderStackOrBatching?: Set<IO> | boolean, useBatching?: boolean): HTMLElement; mutate(_node: IO, _element: HTMLElement): HTMLElement | undefined; /** * Легаси метод mutate (старая версия для обратной совместимости) * Рекомендуется использовать новый mutate с diff алгоритмом */ mutateLegacy(_node: IO, _element: HTMLElement): HTMLElement | undefined; } export declare class StateQueryModule { private readonly _node; private readonly _state; private _update; constructor(node: IO); stateQuery<stateType>(init: stateType | null, queryPromise: Promise<stateType>, callback?: iStateQueryCallbacks$1<stateType>): { data: () => stateType; refetch: () => void; }; } export interface ReactiveRef<T> { value: T; subscribe: (callback: (value: T) => void) => void; unsubscribe: (callback: (value: T) => void) => void; } export declare function reactiveRef<T>(initialValue: T): ReactiveRef<T>; export interface iSignal<T> { value: T; effect: null | ((data: T) => void); } export declare function signal<T>(value: T): iSignal<T>; export interface stateInterface<stateType> { init: stateType; update?: boolean; callback?: (val: stateType) => void; forceRender?: boolean; debounce?: boolean | { wait?: number; maxWait?: number; immediate?: boolean; }; } export declare class StateModule { private readonly _node; private readonly _state; private _update; private componentUpdateFunc; constructor(node: IO); private getComponentUpdateFunction; state<stateType>({ init, update, callback, forceRender }: stateInterface<stateType>): [ ReactiveRef<stateType>, tSetState<stateType> ]; } export interface iSubscriber<T> { id: string; subscriber: StreamSubscriber<T>; } declare class Stream<T> { private subscribers; constructor(); notify(message: T): void; subscribe(subscriber: iSubscriber<T>): void; unsubscribe(id: string): void; clearSubscribers(): void; } declare class StreamSubscriber<T> { private callback; private id; private stream; constructor(stream: Stream<T>, callback: (message: T) => void); effect(message: T): void; unsubscribe(): void; } interface iStreamMessage$1 { id: string; data: unknown; } export declare class StreamModule { protected readonly _$stream: Stream<iStreamMessage$1>; protected $subscriber: StreamSubscriber<iStreamMessage$1> | null; constructor(); stream<T>(): { subscribe: (id: string, effect?: (data: T) => void) => StreamSubscriber<iStreamMessage$1>; notify: (id: string, data?: T) => void; }; } /** * Главный класс UI-элемента IO. * Обеспечивает реактивность, управление DOM, поддержку директив, батчинг, оптимизации и интеграцию с островковой архитектурой. * Используйте для создания интерактивных и статических компонентов. */ export declare class IO { _hydration: Hydration; _testStateModule: StateModule | null; _testStateQueryModule: StateQueryModule | null; _stream: StreamModule | null; protected _tag: _tag$1; protected _classList?: _classList$1; protected _id?: _id$1; protected _events?: _events$1; protected _atr?: _atr$1; _elementID: string; protected _components?: _components$1; protected _text?: _text$1; protected _inputProps?: iIO$1["inputProps"]; protected _directives?: FormDirectives$1; protected _directiveManager: DirectiveManager | null; onRender: ((io: IO) => void) | null; onMutate: ((io: IO) => void) | null; elementRef: HTMLElement | null; protected _reactiveUnsubscribers: Record<string, (() => void) | null>; constructor(tag: _tag$1, props?: iIO$1, children?: _components$1); /** * Сеттер/геттер для tag */ set tag(value: _tag$1); get tag(): _tag$1; /** * Сеттер/геттер для classList */ set classList(value: _classList$1 | ReactiveRef<_classList$1>); get classList(): _classList$1 | undefined; /** * Сеттер/геттер для id */ set id(value: _id$1 | ReactiveRef<_id$1>); get id(): _id$1 | undefined; /** * Сеттер/геттер для events */ set events(value: _events$1 | ReactiveRef<_events$1>); get events(): _events$1 | undefined; /** * Сеттер/геттер для atr */ set atr(value: _atr$1 | ReactiveRef<_atr$1>); get atr(): _atr$1 | undefined; /** * Сеттер/геттер для text */ set text(value: _text$1 | ReactiveRef<_text$1>); get text(): _text$1 | undefined; /** * Сеттер/геттер для components */ set components(value: _components$1 | IO[]); get components(): _components$1 | undefined; state<T>(init: T, isUpdate?: boolean, forceRender?: boolean): [ ReactiveRef<T>, tSetState<T> ]; stateQuery<T>(init: T | null, promise: Promise<T>, callback?: iStateQueryCallbacks<T>): Promise<{ data: () => T; refetch: () => void; }>; stream<T>(): Promise<{ subscribe: (id: string, effect?: ((data: T) => void) | undefined) => StreamSubscriber<iStreamMessage$1>; notify: (id: string, data?: T | undefined) => void; }>; render(renderStack?: Set<IO>): HTMLElement; forceUpdate(): void; /** * Установить HTML содержимое */ setHTML(html: string | (() => string), options?: { trusted?: boolean; sanitize?: boolean; warnInDev?: boolean; }): void; /** * Удаление компонента IO (destroy + очистка директив) */ destroy(): void; /** * Алиас для destroy (unmount) */ unmount(): void; /** * Получить ссылку на DOM элемент */ getRef(): HTMLElement | null; /** * Оптимизированная установка текста */ setOptimizedText(text: string): void; /** * Оптимизированный поиск элементов */ querySelector(selector: string, parent?: Element | Document): Element | null; /** * Оптимизированный поиск всех элементов */ querySelectorAll(selector: string, parent?: Element | Document): NodeList; /** * Делегированный обработчик событий */ delegateEvent(selector: string, eventType: string, handler: (event: Event, element: Element) => void): () => void; /** * Автоматический выбор способа обработки событий */ autoEvent(selector: string | null, eventType: string, handler: EventListenerOrEventListenerObject | ((event: Event, element: Element) => void)): () => void; /** * Принудительно выполнить все отложенные DOM операции */ flushDOMOperations(): void; /** * Получить статистику DOM оптимизаций */ getDOMOptimizationStats(): Record<string, unknown>; /** * Получить количество активных event listeners */ getListenerCount(): number; /** * Настройка дебаунса состояния */ setStateDebouncing(enabled: boolean, options?: { delay?: number; leading?: boolean; maxWait?: number; strategyByProperty?: Record<string, { delay: number; leading?: boolean; }>; condition?: (oldValue: unknown, newValue: unknown) => boolean; }): void; /** * Получить статистику дебаунса состояния */ getStateDebounceStats(): { activeDebounces: number; debouncers: Array<{ key: string; lastUpdate: number; updateCount: number; timeSinceLastUpdate: number; }>; totalStateChanges?: number; debouncedUpdates?: number; preventedRenders?: number; }; /** * Принудительно выполнить все отложенные обновления состояния */ flushStateUpdates(): void; /** * Принудительно обновить компонент с использованием diff-алгоритма */ forceUpdateWithDiff(): void; /** * Принудительно обновить компонент с использованием legacy-алгоритма */ forceUpdateLegacy(): void; /** * Умное обновление компонента (выбор diff/legacy) */ smartUpdate(): void; /** * Глобальная настройка diff-алгоритма */ static configureDiff(config: { useKeys?: boolean; compareAttributes?: boolean; compareText?: boolean; }): void; /** * Глобальный flush для всех обновлений */ static flushAllUpdates(): void; /** * Создает статический компонент (для SSR/SSG) * Не имеет JavaScript логики, быстро рендерится * @param tag - HTML тег * @param props - свойства компонента * @param children - дочерние элементы */ static static(tag: _tag$1, props?: iIO$1, children?: _components$1): IO; /** * Создает интерактивный островок с гидратацией * @param tag - HTML тег * @param config - конфигурация островка * @returns Функция, создающая IslandComponent (из modules/islands/IslandComponent) */ static island(tag: _tag$1, config: IslandConfig$1): () => IslandComponent; /** * Проверяет, является ли компонент статическим */ isStatic(): boolean; /** * Включить или отключить глобальный батчинг DOM */ static setBatchingEnabled(enabled: boolean): void; /** * Получить глобальную статистику DOM батчера */ static getDOMBatcherStats(): { queueLength: number; isScheduled: boolean; batchingEnabled: boolean; operations: string[]; }; /** * Принудительно выполнить все DOM оптимизации глобально */ static flushDOMOptimizations(): void; /** * Оптимизированный querySelector (глобальный) */ static optimizedQuerySelector(parent: Element | Document, selector: string): Element | null; /** * Оптимизированная установка текста (глобальная) */ static optimizedSetText(element: HTMLElement, text: string): void; /** * Планировщик чтения DOM */ static scheduleRead<T>(readFn: () => T): Promise<T>; /** * Планировщик записи в DOM */ static scheduleWrite(writeFn: () => void): void; /** * Получить глобальную статистику DOM-оптимизаций */ static getDOMOptimizationStats(): Record<string, unknown>; /** * Зарегистрировать ленивый модуль */ static registerLazyModule<T>(name: string, factory: (() => T) | (() => Promise<T>), config?: { preload?: boolean; timeout?: number; retries?: number; }): void; /** * Загрузить ленивый модуль */ static loadLazyModule<T>(name: string): Promise<T>; /** * Получить ленивый модуль */ static getLazyModule<T>(name: string): T | null; /** * Проверить, загружен ли ленивый модуль */ static isLazyModuleLoaded(name: string): boolean; /** * Прелоад ленивого модуля */ static preloadLazyModule(name: string): void; /** * Получить статистику ленивых модулей */ static getLazyModuleStats(): { registered: number; loaded: number; loading: number; cached: string[]; loading_modules: string[]; modulesLoaded?: number; modulesPreloaded?: number; loadingErrors?: number; modulesRegistered?: number; memoryEfficiency?: number; cacheHits?: number; }; } /** * Инкрементальный генератор ID для компонентов IO * Более быстрый и предсказуемый, чем случайная генерация */ /** * Генерирует уникальный ID для компонента * Формат: io-{sessionPrefix}-{counter} * Пример: io-kx2m-1, io-kx2m-2, etc. * @returns уникальный ID */ export declare function getID(): string; /** * Получает ссылку на элемент по ID компонента с кэшированием * @param id - ID компонента * @returns HTML элемент или null */ export declare function getRef(id: string): HTMLElement | null; /** * @deprecated Используйте `new IO('input', { model, onSubmit, validate, … })`. * Класс оставлен для обратной совместимости. Будет удалён в следующем major релизе. */ export declare class IOInput extends IO { constructor(tag?: string, props?: iIO$1, children?: _components$1, callback?: (value: string) => void); } export declare const VERSION = "1.0.8"; export {};