@vnejs/docs 0.2.19 → 0.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  Краткая история изменений плагинов и внешнего API. Версии — релизы пакета `@vnejs/docs`.
4
4
 
5
+ ## 0.2.21
6
+
7
+ - `core/media` — ошибка/timeout fetch не занимает слот semaphore и не кладёт битый blob в память; `GET` не ждёт вечно и возвращает `null` для отсутствующего или битого asset.
8
+ - `core/scenario` — `LABEL_GET` / `LINE_GET` завершаются, если предзагрузка одной строки упала.
9
+ - `cli/desktop` — закрытие последнего окна завершает Electron и на macOS (Steam не держит игру запущенной); Fastify закрывается на quit, если процесс не выходит — `app.exit(0)`. API: `runServer` возвращает `{ port, close }`, `runElectron` принимает `onBeforeQuit`.
10
+
11
+ ## 0.2.20
12
+
13
+ - `views.screens/confirm` — горизонтальные стрелки в модуле `confirm.controller.arrows` на `@vnejs/module.controller.arrows.horizontal`; индекс в стейте `currentArrowHorizontalItem`. `ACCEPT` / `INTERACT` читают его, не `currentItem`. `STATE.CLEAR` → `HIDE` с `{ isForce: true }` в `confirm.hide.state` на `@vnejs/module.controller.hide.on.state` (`IS_STATE_SET_ENABLED = false`). API: `EVENTS.CONFIRM.UPDATE_FAST`.
14
+ - `views.screens/disclaimer` — `ACCEPT` / `INTERACT` в `disclaimer.controller.accept` на `@vnejs/module.controller.accept` → `DISCLAIMER.ACCEPT` → `HIDE`, `emitNext`.
15
+ - `views.screens/credits` — `ACCEPT` / `INTERACT` → `HIDE` в `credits.controller.accept` на `@vnejs/module.controller.accept`. `BACK` / `MENU` / `GAMEMENU` → `HIDE` в `credits.hide.controls` на `@vnejs/module.controller.hide.on.controls`. `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }` в `credits.hide.state` на `@vnejs/module.controller.hide.on.state`.
16
+ - `views/settings` — вертикальные стрелки в модуле `settings.fields.controller.arrows` на `@vnejs/module.controller.arrows.vertical`; индекс в стейте `currentArrowVerticalItem`. `TAB_SET` сбрасывает индекс. API: `EVENTS.SETTINGS_VIEW.STATE_UPDATE`, `EVENTS.SETTINGS_VIEW.UPDATE_FAST`.
17
+ - `views.screens/eula` — вертикальные стрелки по тексту в `eula.controller.arrows` на `@vnejs/module.controller.arrows.vertical`; пустые строки через `isArrowItemAvailable`; индекс `currentArrowVerticalItem`. `STATE.SET` / `STATE.CLEAR` → `HIDE` в `eula.hide.state` на `@vnejs/module.controller.hide.on.state`. API: `EVENTS.EULA.STATE_UPDATE`, `EVENTS.EULA.UPDATE_FAST`.
18
+ - `views.screens/gallery` — `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }` в `gallery.hide.state` на `@vnejs/module.controller.hide.on.state`.
19
+ - `views/video` — `STATE.CLEAR` → `HIDE` с `{ isForce: true }` в `video.hide.state` на `@vnejs/module.controller.hide.on.state` (`IS_STATE_SET_ENABLED = false`).
20
+ - `canvas/sprite` — пустая строка и другие falsy в `getSrc` → transparent (`EMPTY_IMG`), без `MEDIA.GET` / `MEDIA.LOAD`; `indexSrc` берётся с первого непустого overlay.
21
+
5
22
  ## 0.2.19
6
23
 
7
24
  - `views.screens/gamemenu` — вертикальные стрелки в модуле `gameMenu.controller.arrows` на `@vnejs/module.controller.arrows.vertical`; индекс в стейте `currentArrowVerticalItem`. `ACCEPT` / `INTERACT` и хендлер `ACCEPT` → `CLICK` в `gameMenu.controller.accept` на `@vnejs/module.controller.accept`. `BACK` / `MENU` / `GAMEMENU` → `HIDE` в `gameMenu.hide.controls` на `@vnejs/module.controller.hide.on.controls`. `STATE.SET` / `STATE.CLEAR` эмитят `HIDE` с `{ isForce: true }` из модуля `gameMenu.hide.state` на `@vnejs/module.controller.hide.on.state`. API: `EVENTS.GAMEMENU.STATE_UPDATE`, `EVENTS.GAMEMENU.UPDATE_FAST`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/docs",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "description": "VNEJS documentation for engine consumers and coding agents",
5
5
  "files": [
6
6
  "*.md",
@@ -24,7 +24,7 @@ $ ul.sprite show co left {co/default} opacity 500
24
24
  | Поле | Смысл |
25
25
  |------|-------|
26
26
  | `mapOverlays?` | Преобразование карты overlays перед резолвом путей |
27
- | `getSrc?` | Кастомный список src по `(variation, realOverlays, options, otherArgs)` |
27
+ | `getSrc?` | Кастомный список src по `(variation, realOverlays, options, otherArgs)`. Пустая строка и другие falsy-элементы сохраняют слот и рисуются как transparent-картинка (без `MEDIA.GET` / `MEDIA.LOAD`). |
28
28
 
29
29
  ## События
30
30
 
@@ -8,14 +8,14 @@
8
8
 
9
9
  | Ключ | Строка | Смысл |
10
10
  |------|--------|-------|
11
- | `GET` | `vne:media:get` | Получить готовый медиа-элемент: из кэша или через цепочку load. |
11
+ | `GET` | `vne:media:get` | Получить готовый медиа-элемент: из кэша или через цепочку load. Битый или отсутствующий asset → `null`, без вечного wait. |
12
12
  | `SET` | `vne:media:set` | Положить готовый DOM-элемент в memory-подсистему media. |
13
- | `LOAD` | `vne:media:load` | Запуск загрузки по id/type/name с учётом semaphore и dedup через `LOAD_CHECK`. |
13
+ | `LOAD` | `vne:media:load` | Запуск загрузки по id/type/name с учётом semaphore и dedup через `LOAD_CHECK`. Слот очереди освобождается и при ошибке. |
14
14
  | `LOAD_CHECK` | `vne:media:load_check` | Проверить: уже в памяти, в процессе process или load. |
15
15
  | `LOAD_START` | `vne:media:load_start` | Начало загрузки asset (маркер lifecycle). |
16
16
  | `LOAD_END` | `vne:media:load_end` | Окончание загрузки asset (маркер lifecycle). |
17
17
  | `ERROR_NO_SRC` | `vne:media:error_no_src` | В манифесте нет src для запрошенного asset. |
18
- | `ERROR_FETCH` | `vne:media:error_fetch` | Ошибка fetch при загрузке blob. |
18
+ | `ERROR_FETCH` | `vne:media:error_fetch` | Ошибка fetch: сеть, HTTP не-ok, timeout. Битый blob в память не кладётся. |
19
19
  | `PROCESS` | `vne:media:process` | Скачать blob, создать `<img>` / `<audio>` / `<video>`, вызвать `SET`. |
20
20
  | `PROCESS_CHECK` | `vne:media:process_check` | Есть ли уже promise/результат process для `mediaId`. |
21
21
  | `MEMORY_GET` | `vne:media:memory_get` | Прокси к `MEMORY.GET` для namespace media. |
@@ -39,10 +39,10 @@
39
39
 
40
40
  | Модуль | Зона ответственности |
41
41
  |--------|----------------------|
42
- | `media.load` | Semaphore-gated load, dedup, делегирование в process/memory. |
43
- | `media.process` | Fetch blob и создание DOM-медиа. |
42
+ | `media.load` | Semaphore-gated load, dedup, делегирование в process/memory. Слот всегда освобождается (`finally`), даже если process reject. |
43
+ | `media.process` | Fetch blob и создание DOM-медиа. HTTP не-ok и timeout fetch → `ERROR_FETCH`, без `SET`. |
44
44
  | `media.memory` | REG в memory, монтирование элементов в скрытый `#media`. |
45
- | `media` | Высокоуровневый get/set. |
45
+ | `media` | Высокоуровневый get/set. `GET` возвращает `null`, если asset нет или не готов (битая картинка, error). |
46
46
  | `media.logs` | Логирование lifecycle media. |
47
47
 
48
48
  ## Близкие плагины
@@ -11,9 +11,9 @@
11
11
  | `EXEC` | `vne:scenario:exec` | Выполнить строку сценария: dispatch по module/block с line, args и keywords. |
12
12
  | `EXEC_DELAY` | `vne:scenario:exec_delay` | Отложить promise до завершения текущего exec (async-строки). |
13
13
  | `NEXT` | `vne:scenario:next` | Шаг вперёд по сценарию: выполнить текущую строку или завершить текущую метку. |
14
- | `LABEL_GET` | `vne:scenario:label_get` | Предзагрузка строк метки на глубину `deep` с приоритетом. |
14
+ | `LABEL_GET` | `vne:scenario:label_get` | Предзагрузка строк метки на глубину `deep` с приоритетом. Упавшая строка не блокирует метку. |
15
15
  | `LINE_LOAD` | `vne:scenario:line_load` | Условная предзагрузка одной строки (с учётом depth в memory). |
16
- | `LINE_GET` | `vne:scenario:line_get` | Получить и подготовить одну строку сценария по label и index. |
16
+ | `LINE_GET` | `vne:scenario:line_get` | Получить и подготовить одну строку сценария по label и index. Ошибка предзагрузки не оставляет промис висящим. |
17
17
  | `LINE_LOAD_REG` | `vne:scenario:line_load_reg` | Зарегистрировать обработчик предзагрузки строк для module/block. |
18
18
  | `LINE_EXEC_REG` | `vne:scenario:line_exec_reg` | Зарегистрировать обработчик выполнения строк для module/block. |
19
19
  | `LINES_GET` | `vne:scenario:lines_get` | Получить массив строк метки (JSON с хоста, кэш в memory). |
@@ -48,8 +48,8 @@
48
48
  | `scenario` | Главный цикл `NEXT`, exec строк, sync state. |
49
49
  | `scenario.autostart` | Дефолт `shared.shouldAutostartScenario`; на `SYSTEM.STARTED` — init label + `emitNext` при включённом флаге. |
50
50
  | `scenario.exec` | Dispatch `$module` / `%block`, registry handlers, `EXEC_DELAY`. |
51
- | `scenario.label` | `LABEL_GET`, preload меток; init label на `STATE.CLEAR`. |
52
- | `scenario.line` | `LINE_LOAD` / `LINE_GET`, registry preload handlers. |
51
+ | `scenario.label` | `LABEL_GET`, preload меток; init label на `STATE.CLEAR`. Одна упавшая строка не валит всю метку. |
52
+ | `scenario.line` | `LINE_LOAD` / `LINE_GET`, registry preload handlers. Executor `LINE_GET` всегда resolve. |
53
53
  | `scenario.lines` | Fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
54
54
 
55
55
  ## Близкие плагины
@@ -12,6 +12,8 @@
12
12
  | `TAB_SET` | `vne:settings_view:tab_set` | Сменить активную вкладку; payload `{ tab, tabKey?, locs?, isForce? }`. Старая и новая одновременно: `PositionBox opacity` 1↔0. |
13
13
  | `HIDE` | `vne:settings_view:hide` | Скрыть слой полей. |
14
14
  | `UPDATE` | `vne:settings_view:update` | Обновить состояние или отображение. |
15
+ | `UPDATE_FAST` | `vne:settings_view:update_fast` | Быстрый UPDATE view без анимации (стрелки). |
16
+ | `STATE_UPDATE` | `vne:settings_view:state_update` | Слить `{ currentArrowVerticalItem }` в стейт controller; пересчитать `currentItemInner`. |
15
17
 
16
18
  ## Константы
17
19
 
@@ -37,8 +39,9 @@
37
39
 
38
40
  | Модуль | Зона ответственности |
39
41
  |--------|----------------------|
40
- | `settings.fields.controller` | `SHOW`/`HIDE`/`TAB_SET`; `ARROW_UP`/`ARROW_BOTTOM` по полям. На `selector_texts` / `actions` (`options`): `ARROW_LEFT`/`ARROW_RIGHT` циклят `currentItemInner` (modulo); у `selector_texts` сразу `SETTINGS.SET`. `INTERACT` — option value или named action (в т.ч. `actions` без `settingKey`). `ACCEPT` не обрабатывает — оставляют экраны. |
41
- | `settings.fields.view` | Обёртка `<View {...propsView} />` (fade show/hide); внутри вкладки `<SettingsTabContent />` с `PositionBox opacity` для crossfade по `tabKey`. |
42
+ | `settings.fields.controller` | `SHOW`/`HIDE`/`TAB_SET`; зеркалит `STATE_UPDATE` (`currentArrowVerticalItem` + `currentItemInner`). На `selector_texts` / `actions` (`options`): `ARROW_LEFT`/`ARROW_RIGHT` циклят `currentItemInner` (modulo); у `selector_texts` сразу `SETTINGS.SET`. `INTERACT` — option value или named action (в т.ч. `actions` без `settingKey`). `ACCEPT` не обрабатывает — оставляют экраны. |
43
+ | `settings.fields.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP`/`ARROW_BOTTOM` по полям; PUSH/POP на SHOW/HIDE; `TAB_SET` сбрасывает индекс; эмитит `STATE_UPDATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
44
+ | `settings.fields.view` | Обёртка `<View {...propsView} />` (fade show/hide); внутри вкладки `<SettingsTabContent />` с `PositionBox opacity` для crossfade по `tabKey`. Подсветка полей по `currentArrowVerticalItem`. |
42
45
 
43
46
  ## Близкие плагины
44
47
 
@@ -37,7 +37,8 @@
37
37
 
38
38
  | Модуль | Зона ответственности |
39
39
  |--------|----------------------|
40
- | `video.controller` | Обрабатывает UPDATE, EMIT, SHOW, HIDE, …. |
40
+ | `video.controller` | SHOW/HIDE, SET_SRC, `BUTTONS.ANY` → `INTERACT.EMIT`. |
41
+ | `video.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: только `STATE.CLEAR` → `HIDE` с `{ isForce: true }` (`IS_STATE_SET_ENABLED = false`). |
41
42
  | `video` | Обрабатывает HIDE, PLAY, LOAD, GET, …. |
42
43
  | `video.view` | Подмодуль `view` плагина. |
43
44
 
@@ -12,10 +12,11 @@
12
12
  | `HIDE` | `vne:confirm:hide` | Скрыть UI или слой. |
13
13
  | `EMIT` | `vne:confirm:emit` | Инициировать действие или цикл. |
14
14
  | `UPDATE` | `vne:confirm:update` | Обновить состояние или отображение. |
15
- | `STATE_UPDATE` | `vne:confirm:state_update` | Слить `{ currentItem }` в стейт accept-модуля без UPDATE view. |
15
+ | `UPDATE_FAST` | `vne:confirm:update_fast` | Быстрый UPDATE view без анимации (стрелки). |
16
+ | `STATE_UPDATE` | `vne:confirm:state_update` | Слить `{ currentArrowHorizontalItem }` в стейт controller/accept без UPDATE view. |
16
17
  | `ACCEPT` | `vne:confirm:accept` | Событие `ACCEPT` namespace плагина. |
17
18
  | `DECLINE` | `vne:confirm:decline` | Событие `DECLINE` namespace плагина. |
18
- | `SUBMIT` | `vne:confirm:submit` | `ACCEPT` / `INTERACT`: при `currentItem` — ACCEPT (0) или DECLINE, иначе ACCEPT. |
19
+ | `SUBMIT` | `vne:confirm:submit` | `ACCEPT` / `INTERACT`: при `currentArrowHorizontalItem` — ACCEPT (0) или DECLINE, иначе ACCEPT. |
19
20
 
20
21
  ## Константы
21
22
 
@@ -35,8 +36,10 @@
35
36
 
36
37
  | Модуль | Зона ответственности |
37
38
  |--------|----------------------|
38
- | `confirm.controller` | SHOW/HIDE; BACK → `DECLINE`; стрелки меняют `currentItem` и эмитят `STATE_UPDATE`. |
39
- | `confirm.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `SUBMIT` → `ACCEPT` или `DECLINE` по `currentItem`; зеркалит `STATE_UPDATE`; PUSH/POP на SHOW/HIDE. |
39
+ | `confirm.controller` | SHOW/HIDE; BACK → `DECLINE`; зеркалит `STATE_UPDATE` в стейт и `UPDATE_FAST` во view. |
40
+ | `confirm.controller.arrows` | Наследует `@vnejs/module.controller.arrows.horizontal`: `ARROW_LEFT` / `ARROW_RIGHT` по Accept/Decline; PUSH/POP controls на SHOW/HIDE; эмитит `STATE_UPDATE` с `{ currentArrowHorizontalItem }` и `UPDATE_FAST`. |
41
+ | `confirm.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `SUBMIT` → `ACCEPT` или `DECLINE` по `currentArrowHorizontalItem`; зеркалит `STATE_UPDATE`; PUSH/POP на SHOW/HIDE. |
42
+ | `confirm.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: только `STATE.CLEAR` → `HIDE` с `{ isForce: true }` (`IS_STATE_SET_ENABLED = false`). |
40
43
  | `confirm` | Обрабатывает EMIT, ACCEPT, DECLINE. |
41
44
  | `confirm.view` | Подмодуль `view` плагина. |
42
45
 
@@ -30,7 +30,10 @@
30
30
 
31
31
  | Модуль | Зона ответственности |
32
32
  |--------|----------------------|
33
- | `credits.controller` | Обрабатывает HIDE, UPDATE, SHOW, CLEAR. |
33
+ | `credits.controller` | SHOW/HIDE; пустой `controls` на `ZINDEX`; `afterHide` → emitNext. |
34
+ | `credits.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `CREDITS.HIDE`; PUSH/POP на SHOW/HIDE. |
35
+ | `credits.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
36
+ | `credits.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
34
37
  | `credits` | Модуль `credits`. |
35
38
  | `credits.view` | Подмодуль `view` плагина. |
36
39
 
@@ -38,9 +41,9 @@
38
41
 
39
42
  ### plugins/core/
40
43
 
44
+ - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
41
45
  - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
42
- - [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR
43
46
 
44
47
  ### Остальные
45
48
 
46
- - [controls.md](../controls/controls.md) — `CONTROLS`: CONST.BUTTONS.ACCEPT, CONST.BUTTONS.INTERACT, CONST.BUTTONS.MENU
49
+ - [controls.md](../controls/controls.md) — `CONTROLS`: CONST.BUTTONS.ACCEPT, CONST.BUTTONS.INTERACT, CONST.BUTTONS.BACK, CONST.BUTTONS.MENU, CONST.BUTTONS.GAMEMENU
@@ -34,8 +34,9 @@
34
34
 
35
35
  | Модуль | Зона ответственности |
36
36
  |--------|----------------------|
37
- | `disclaimer.controller` | SHOW/HIDE, controls ACCEPT/INTERACT → ACCEPT. |
38
- | `disclaimer` | `$ disclaimer show <id>` → SHOW; ACCEPT → HIDE → emitNext. |
37
+ | `disclaimer.controller` | SHOW/HIDE; пустой `controls` на `ZINDEX`, чтобы стопорить слои ниже. |
38
+ | `disclaimer.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `DISCLAIMER.ACCEPT` → `HIDE`, `emitNext`; PUSH/POP на SHOW/HIDE. |
39
+ | `disclaimer` | `$ disclaimer show <id>` → SHOW. |
39
40
  | `disclaimer.view` | React UI: title / text / accept из locs. |
40
41
 
41
42
  ## Локализация
@@ -9,6 +9,8 @@
9
9
  | Ключ | Строка | Смысл |
10
10
  |------|--------|-------|
11
11
  | `UPDATE` | `vne:eula:update` | Обновить состояние или отображение. |
12
+ | `UPDATE_FAST` | `vne:eula:update_fast` | Быстрый UPDATE view без анимации (стрелки по тексту). |
13
+ | `STATE_UPDATE` | `vne:eula:state_update` | Слить `{ currentArrowVerticalItem }` в стейт controller без UPDATE view. |
12
14
  | `SHOW` | `vne:eula:show` | Показать UI или слой. |
13
15
  | `HIDE` | `vne:eula:hide` | Скрыть UI или слой. |
14
16
  | `ACCEPT` | `vne:eula:accept` | Событие `ACCEPT` namespace плагина. |
@@ -36,8 +38,10 @@
36
38
 
37
39
  | Модуль | Зона ответственности |
38
40
  |--------|----------------------|
39
- | `eula.controller` | Обрабатывает UPDATE, SHOW, HIDE, EXTERNAL_UPDATE, …. Стрелки по тексту, BACK → `EXIT`. |
41
+ | `eula.controller` | SHOW/HIDE; `BACK` → `EXIT`; зеркалит `STATE_UPDATE` / `UPDATE_FAST`; lang/locs. |
42
+ | `eula.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP` / `ARROW_BOTTOM` по строкам текста; пустые строки через `isArrowItemAvailable`; смена `SETTINGS.EULA.LANG` сбрасывает индекс; PUSH/POP на SHOW/HIDE; эмитит `STATE_UPDATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
40
43
  | `eula.controller.accept` | Наследует `@vnejs/module.controller.accept`: только `ACCEPT` (`IS_INTERACT_ENABLED = false`) → `EULA.ACCEPT` → `ACCEPTED_VERSION`, `HIDE`; PUSH/POP на SHOW/HIDE. |
44
+ | `eula.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
41
45
  | `eula` | `MAINMENU.SHOW` → `SHOW` (если версия не принята); `EXIT` → `SYSTEM.CLOSE`. |
42
46
  | `eula.view` | Подмодуль `view` плагина. |
43
47
 
@@ -47,7 +51,7 @@
47
51
 
48
52
  - [components.md](../core/components.md) — `COMPONENTS`: EVENTS.EXTERNAL_UPDATE
49
53
  - [settings.md](../core/settings.md) — `SETTINGS`: EVENTS.CHANGED, EVENTS.INIT, EVENTS.SET
50
- - [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR
54
+ - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
51
55
  - [system.md](../core/system.md) — `SYSTEM`: EVENTS.CLOSE
52
56
 
53
57
  ### Остальные
@@ -52,6 +52,7 @@ ACCEPT/INTERACT эмитит `CHOOSE` только для выбранного
52
52
  | `gallery.controller.audio` | Наследник `ModuleControllerAudio`: SHOW/HIDE/PRELOAD → pause global, play/stop `view`-трека; `VOLUME_SETTING = MUSIC.VOLUME`; SHOW передаёт в `AUDIO.PLAY` уже посчитанный `volume`; при `VOLUME_CHANGED` / смене `VOLUME_SETTING` — повторный `AUDIO.VOLUME`. |
53
53
  | `gallery.controller` | Обрабатывает UPDATE, HIDE, TAB_SET, …. ACCEPT/INTERACT → `CHOOSE` только если слот открыт. Стрелки и ACCEPT/INTERACT в `controls` контроллера. |
54
54
  | `gallery.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
55
+ | `gallery.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
55
56
  | `gallery.controller.tabs` | Наследник `ModuleControllerTabs`: TAB_PREV/TAB_NEXT → `TAB_SET`; PUSH/POP controls на SHOW/HIDE. |
56
57
  | `gallery` | Обрабатывает OPEN, CHECK, CLEAR. |
57
58
  | `gallery.view` | Подмодуль `view` плагина. |
@@ -61,7 +62,7 @@ ACCEPT/INTERACT эмитит `CHOOSE` только для выбранного
61
62
  ### plugins/core/
62
63
 
63
64
  - [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED, EVENTS.CLEAR
64
- - [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR
65
+ - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
65
66
  - [storage.md](../core/storage.md) — `STORAGE`: EVENTS.SET, EVENTS.GET, EVENTS.RM_ALL
66
67
  - [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED
67
68