Skip to content

Документация wmkit ​

Headless оконный менеджер для веба. Корневой README — это обзор, а эти страницы — справочник.

СтраницаЧто внутри
Справочник APIкаждый экспорт, опция, метод, событие и тип
Адаптерыполные интеграции для React, Vue, Svelte, Solid, Angular, Preact, Lit и Qwik, плюс веб-компоненты <wm-desktop>
Темизацияконтракт data-wm-*, CSS-переменные, тема с нуля
Рецептыокно с нуля, таскбар, модалки, персист, рабочие столы, SSR, тестирование
Поддержка браузеровминимальные версии для каждой точки входа и что где деградирует

Как устроена библиотека ​

Три слоя, каждый можно использовать отдельно:

text
createWindowManager()   машина состояний — геометрия, наложение, стадии, фокус, история. Без DOM.
attachDesktop()         DOM-контроллер — указатель, клавиатура, ARIA, превью снэпа, анимации.
адаптеры                тонкие обёртки — встраивают оба слоя выше в жизненный цикл фреймворка.

Менеджер никогда не читает и не пишет DOM, поэтому работает в Node и во время SSR. Контроллер никогда не рендерит контент — он двигает и размечает элементы, которые уже принадлежат вам. Поэтому контент окна остаётся в вашем дереве компонентов: никакого innerHTML, порталов и переноса узлов.

Словарь ​

ТерминЗначение
окно (window)запись в менеджере: id, геометрия, стадия, слой, рабочий стол, флаги, meta
стадия (stage)normal, minimized, maximized или snapped — взаимоисключающие
слой (layer)normal < floating (всегда поверх) < modal (блокирует фокус ниже)
рабочий стол (workspace)индекс виртуального рабочего стола; активен всегда только один
зона (zone)цель снэпа: половины, четверти или трети вьюпорта
элемент рабочего стола (desktop)элемент, который вы передаёте в attachDesktop; он задаёт систему координат
взаимодействие (interaction)жест в процессе, собранный в одну запись истории

Установка ​

bash
pnpm add @surdeddd/wmkit

Точки входа: . (ядро + DOM), ./react, ./vue, ./svelte, ./solid, ./angular, ./preact, ./lit, ./qwik, ./elements и ./elements/define (веб-компоненты), ./persist, ./popout, ./gestures, ./devtools, ./chrome, ./dock, ./winbox, ./themes (таблицы стилей в виде текста) и ./themes/*.css. ESM и CJS, типы для каждого условия экспорта, ноль зависимостей.