@vnejs/docs 0.2.56 → 0.2.58

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
  Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
4
4
 
5
+ ## 0.2.58
6
+
7
+ - `text/text` — `STATE.SET` и `STATE.CLEAR` эмитят `TEXT.EMIT` с `isKeepProcessState`, чтобы восстановление не затирало `text.process.state`. `TEXT.EMIT_END` с этим флагом не шлёт `TEXT.PROCESS_STATE` и `TEXT.EMIT_NEXT`. Сценарный `TEXT.EMIT` флаг не ставит. API: `TextEmitPayload.isKeepProcessState`, `TextEmitEndPayload.isKeepProcessState`.
8
+ - `scenario/choose` — у каждого открытия выбора свой `id` (`crypto.randomUUID()` на `EMIT`, `""` после закрытия). `STATE.SET` при другом открытом выборе пишет срез и шлёт `HIDE`, затем `SHOW` с `{ isForce: true }`. Смена `isShow` шлёт один `EVENTS.CHOOSE.HIDE` или `EVENTS.CHOOSE.SHOW` с `{ isForce: true }`. API: `ChoosePluginModelState.id`.
9
+ - `module.controller.interact` — `BUTTONS.ANY` → `EVENTS.INTERACT.EMIT`; после показа `EVENTS.INTERACT.PUSH` с `onInteract`, перед скрытием `EVENTS.INTERACT.POP`; controls PUSH/POP на `SHOW.CONTROLS` / `HIDE.CONTROLS`. API: `ModuleControllerInteract.onInteract`, `ModuleControllerInteract.EVENT_SHOW`, `ModuleControllerInteract.EVENT_HIDE`, `ModuleControllerInteract.CONTROLS_ZINDEX`, `ModuleControllerInteract.CONTROLS_CHECK_NEXT`.
10
+ - `views/video` — `BUTTONS.ANY` и `INTERACT.PUSH` / `POP` в `video.controller.interact` на `@vnejs/module.controller.interact`; `onInteract` возвращает промис `EVENTS.VIDEO.HIDE`. `video.controller` на `SHOW.BEFORE` эмитит `EVENTS.INTERFACE.TEXT_HIDE`, на `HIDE.AFTER` — `EVENTS.VIDEO.SET_SRC` и `EVENTS.SCENARIO.NEXT`.
11
+ - `views.screens/intro` — `BUTTONS.ANY` и `INTERACT.PUSH` / `POP` в `intro.controller.interact` на `@vnejs/module.controller.interact`; `onInteract` → `EVENTS.INTRO.INTERACT`.
12
+ - `views.screens/credits` — `credits.controller.accept` заменён на `credits.controller.interact` на `@vnejs/module.controller.interact`; `onInteract` → `EVENTS.CREDITS.HIDE`. Снято `EVENTS.CREDITS.ACCEPT`.
13
+
14
+ ## 0.2.57
15
+
16
+ - `module.controller.arrows.horizontal` — кнопки зовут переопределяемые `onArrowLeft` / `onArrowRight` (по умолчанию `decCurrentItem` / `incCurrentItem`). Хук может вернуть `Promise`. `getMaxCurrentItem` больше не abstract, по умолчанию `0`. `EVENT_UPDATE_STATE` сливает partial в стейт модуля. API: `ModuleControllerArrowsHorizontal.onArrowLeft`, `ModuleControllerArrowsHorizontal.onArrowRight`, `ModuleControllerArrowsHorizontal.getMaxCurrentItem`.
17
+ - `module.controller.arrows.vertical` — кнопки зовут переопределяемые `onArrowUp` / `onArrowBottom` (по умолчанию `decCurrentItem` / `incCurrentItem`). Хук может вернуть `Promise`. `getMaxCurrentItem` больше не abstract, по умолчанию `0`. API: `ModuleControllerArrowsVertical.onArrowUp`, `ModuleControllerArrowsVertical.onArrowBottom`, `ModuleControllerArrowsVertical.getMaxCurrentItem`.
18
+ - `module.controller.arrows.grid` — кнопки зовут переопределяемые `onArrowUp` / `onArrowRight` / `onArrowBottom` / `onArrowLeft`. Хук может вернуть `Promise`. API: `ModuleControllerArrowsGrid.onArrowUp`, `ModuleControllerArrowsGrid.onArrowRight`, `ModuleControllerArrowsGrid.onArrowBottom`, `ModuleControllerArrowsGrid.onArrowLeft`.
19
+ - `views.screens/gallery.full` — горизонтальные стрелки в `gallery.full.controller.arrows`; `onArrowLeft` / `onArrowRight` эмитят `EVENTS.GALLERY_FULL_VIEW.PREV` / `EVENTS.GALLERY_FULL_VIEW.NEXT`. `gallery.full.variation` наследует `@vnejs/module.controller.pages`: `PREV` / `NEXT` / `PAGE_SET`, `applyPage` → `LOAD`. Индекс вариации в стейте — `pageIndex` / `pagesCount` (вместо `variationIndex` / `variantsCount`). `LOAD` payload `{ pageIndex }`; для открытой вариации эмитит `LOAD_SRC`; src грузит `gallery.full.load.src`. Контекст айтема (`itemFullName`, `itemMediaType`, `itemLayerChildType`, `variants`) пишет контроллер в `EVENTS.GALLERY_FULL_VIEW.UPDATE_STATE`. `GALLERY.CHOOSE` → `SHOW` в `gallery.full.bridge`. Сняты `EVENTS.GALLERY_FULL_VIEW.VARIATION_PREV`, `EVENTS.GALLERY_FULL_VIEW.VARIATION_NEXT`, `EVENTS.GALLERY_FULL_VIEW.VARIATION_LOAD`. API: `EVENTS.GALLERY_FULL_VIEW.LOAD`, `EVENTS.GALLERY_FULL_VIEW.LOAD_SRC`, `EVENTS.GALLERY_FULL_VIEW.PREV`, `EVENTS.GALLERY_FULL_VIEW.NEXT`, `EVENTS.GALLERY_FULL_VIEW.PAGE_SET`, `GalleryFullLoadPayload`, `GalleryFullLoadSrcPayload`, `GalleryFullLoadSrcResult`, `GalleryFullImageSrcItem`, `GalleryFullPageSetPayload`.
20
+ - `views/settings` — горизонтальные стрелки в `settings.fields.controller.arrows.horizontal`; `onArrowLeft` / `onArrowRight` эмитят `EVENTS.SETTINGS_VIEW.ARROW_LEFT` / `EVENTS.SETTINGS_VIEW.ARROW_RIGHT`, хендлеры остаются на `settings.fields.controller`. API: `EVENTS.SETTINGS_VIEW.ARROW_LEFT`, `EVENTS.SETTINGS_VIEW.ARROW_RIGHT`.
21
+
5
22
  ## 0.2.56
6
23
 
7
24
  - `module.components` — `ModuleController` всегда подписывается на `EVENT_SHOW` / `EVENT_HIDE` с `CONST.COMPONENTS.LIFECYCLE_PRIORITY.SHOW.BEFORE` / `SHOW.AFTER` / `HIDE.BEFORE` / `HIDE.AFTER` и на `EVENTS.SETTINGS.CHANGED` (`state.isShow && updateViewFast()`). Потомки переопределяют методы вместо `this.on`. API: `ModuleController.onShowBefore`, `ModuleController.onShowAfter`, `ModuleController.onHideBefore`, `ModuleController.onHideAfter`, `ModuleController.onSettingChange`.
package/architecture.md CHANGED
@@ -137,6 +137,7 @@ flowchart TD
137
137
  MCB["@vnejs/module.controller.backgrounds"]
138
138
  MCBG["@vnejs/module.controller.bg"]
139
139
  MCAC["@vnejs/module.controller.accept"]
140
+ MCIN["@vnejs/module.controller.interact"]
140
141
  MCAV["@vnejs/module.controller.arrows.vertical"]
141
142
  MCAH["@vnejs/module.controller.arrows.horizontal"]
142
143
  MCAG["@vnejs/module.controller.arrows.grid"]
@@ -156,6 +157,7 @@ flowchart TD
156
157
  MC --> MCB
157
158
  MC --> MCBG
158
159
  MC --> MCAC
160
+ MC --> MCIN
159
161
  MC --> MCAV
160
162
  MC --> MCAH
161
163
  MC --> MCAG
@@ -181,6 +183,7 @@ flowchart TD
181
183
  | **`@vnejs/module.controller.backgrounds`** | Ротация списка фонов на `SHOW.AFTER` / таймеру / MEMORY.CLEARED; стоп на `HIDE.AFTER`; события и список задаёт плагин |
182
184
  | **`@vnejs/module.controller.bg`** | Статичный фон экрана: `SHOW.BEFORE` пишет `bgSrc` через `UPDATE_STATE`; `isShow` на `SHOW.MAIN` / `HIDE.MAIN`; опционально PRELOAD / start / STATE.CLEAR; MEMORY.CLEARED — preload и/или refresh при isShow |
183
185
  | **`@vnejs/module.controller.accept`** | ACCEPT / INTERACT → событие ACCEPT плагина; PUSH/POP controls на `SHOW.CONTROLS` / `HIDE.CONTROLS` |
186
+ | **`@vnejs/module.controller.interact`** | `BUTTONS.ANY` → `INTERACT.EMIT`; после показа `INTERACT.PUSH` (`onInteract`), перед скрытием `INTERACT.POP`; PUSH/POP controls на `SHOW.CONTROLS` / `HIDE.CONTROLS` |
184
187
  | **`@vnejs/module.controller.arrows.vertical`** | ARROW_UP / ARROW_BOTTOM по видимым пунктам; PUSH/POP controls на `SHOW.CONTROLS` / `HIDE.CONTROLS`; индекс через `UPDATE_STATE` |
185
188
  | **`@vnejs/module.controller.arrows.horizontal`** | ARROW_LEFT / ARROW_RIGHT по пунктам; PUSH/POP controls на `SHOW.CONTROLS` / `HIDE.CONTROLS`; индекс через `UPDATE_STATE` |
186
189
  | **`@vnejs/module.controller.arrows.grid`** | Четыре стрелки по сетке; `GRID_NEXT` / `GRID_PREV` на краю; PUSH/POP на `SHOW.CONTROLS` / `HIDE.CONTROLS`; `GRID_UPDATE_ITEMS` без payload, meta через `UPDATE_STATE` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/docs",
3
- "version": "0.2.56",
3
+ "version": "0.2.58",
4
4
  "description": "VNEJS documentation for engine consumers and coding agents",
5
5
  "files": [
6
6
  "*.md",
@@ -57,20 +57,28 @@ Payloads и результаты хендлеров типизированы ч
57
57
 
58
58
  Нет.
59
59
 
60
+ ## Стейт
61
+
62
+ `globalState.choose`: `options`, `args`, `isShow`, `id`.
63
+
64
+ `id` — экземпляр открытия. `crypto.randomUUID()` на `EMIT` (в том числе `$ choose repeat`), `""` после закрытия. В сейв и снапшот истории попадает вместе со стейтом. В сценарий не выводится.
65
+
66
+ `STATE.SET` не меняет стейт, если совпали `isShow` и `id`. Другой открытый выбор (`isShow: true`, другой `id`): запись среза, затем `HIDE` и `SHOW` с `{ isForce: true }`, чтобы view заново прочитал опции. Смена видимости — один `SHOW` или `HIDE` с `{ isForce: true }`. Пока выбор скрыт, другой срез только записывается в стейт.
67
+
60
68
  ## Модули
61
69
 
62
- | Модуль | Зона ответственности |
63
- | ------------------------ | --------------------------------------------------------------------------------------- |
64
- | `choose` | State: `STATE_UPDATE`, синхронизация с `STATE.SET` / `STATE.CLEAR` (→ `SHOW` / `HIDE`). |
65
- | `choose.emit` | Обрабатывает `EMIT` (→ `STATE_UPDATE` + `SHOW` или `SKIP`). |
66
- | `choose.option` | Обрабатывает `OPTION`. |
67
- | `choose.skip` | Обрабатывает `SKIP` через `getBlockSkipShift`. |
68
- | `choose.logs` | Логирование `EMIT` / `OPTION` / `SKIP` / `SHOW` / `HIDE`. |
69
- | `choose.replace` | Реестр обработчиков `OPTION_REPLACE_REG`; наследник `@vnejs/module.replace`. |
70
- | `choose.exec` | Реестр обработчиков EXEC_REG / EXEC_GET. |
71
- | `choose.scenario` | Регистрация `% choose`: сбор option-строк через `getBlockOptions`, emit `EMIT`. |
72
- | `choose.scenario.option` | Регистрация `% choose.option`: skip невыбранных веток. |
73
- | `choose.scenario.module` | Регистрация `$ choose`: action `repeat`. |
70
+ | Модуль | Зона ответственности |
71
+ | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
+ | `choose` | State (`id`, `options`, `args`, `isShow`): `STATE_UPDATE`, `STATE.SET` / `STATE.CLEAR` (→ `SHOW` / `HIDE`; смена открытого выбора — `HIDE`, затем `SHOW`). |
73
+ | `choose.emit` | Обрабатывает `EMIT` (→ `STATE_UPDATE` + `SHOW` или `SKIP`). |
74
+ | `choose.option` | Обрабатывает `OPTION`. |
75
+ | `choose.skip` | Обрабатывает `SKIP` через `getBlockSkipShift`. |
76
+ | `choose.logs` | Логирование `EMIT` / `OPTION` / `SKIP` / `SHOW` / `HIDE`. |
77
+ | `choose.replace` | Реестр обработчиков `OPTION_REPLACE_REG`; наследник `@vnejs/module.replace`. |
78
+ | `choose.exec` | Реестр обработчиков EXEC_REG / EXEC_GET. |
79
+ | `choose.scenario` | Регистрация `% choose`: сбор option-строк через `getBlockOptions`, emit `EMIT`. |
80
+ | `choose.scenario.option` | Регистрация `% choose.option`: skip невыбранных веток. |
81
+ | `choose.scenario.module` | Регистрация `$ choose`: action `repeat`. |
74
82
 
75
83
  ## Compatibility
76
84
 
@@ -8,25 +8,25 @@
8
8
 
9
9
  Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.text`.
10
10
 
11
- | Ключ | Строка | Смысл |
12
- | --------------------- | ------------------------------ | ------------------------------------------------------------------- |
13
- | `EMIT` | `vne:text:emit` | Начать вывод: подготовка токенов, обновление state, запуск process. |
14
- | `EMIT_END` | `vne:text:emit_end` | Завершить текущий шаг; при autonext перейти к следующему. |
15
- | `EMIT_NEXT` | `vne:text:emit_next` | Перейти к следующему шагу emit (подписки с `priority` на Observer). |
16
- | `EMIT_BEFORE` | `vne:text:emit_before` | Хук перед основным emit (подписки с `priority` на Observer). |
17
- | `EMIT_PROCESS` | `vne:text:emit_process` | Запустить пошаговый процесс вывода. |
18
- | `PREPARE_TOKENS` | `vne:text:prepare_tokens` | Подготовить токены или промежуточные данные. |
19
- | `PROCESS_CANCEL` | `vne:text:process_cancel` | Отменить текущий процесс. |
20
- | `PROCESS_STATE` | `vne:text:process_state` | Изменить состояние процесса. |
21
- | `CHANGED` | `vne:text:changed` | Зафиксировать изменение состояния. |
22
- | `SPEAKER_CHANGED` | `vne:text:speaker_changed` | Зафиксировать смену текущего спикера. |
23
- | `SPEAKER_INFO_UPDATE` | `vne:text:speaker_info_update` | Обновить метаданные спикера (цвет, имя, opacity). |
24
- | `STATE_UPDATE` | `vne:text:state_update` | Обновить накопленное состояние модуля. |
25
- | `STATE_CHANGED` | `vne:text:state_changed` | Сигнал об изменении накопленного состояния. |
26
- | `RECALC` | `vne:text:recalc` | Запросить данные у обработчиков и продолжить цепочку. |
27
- | `RECALC_DONE` | `vne:text:recalc_done` | Завершить операцию `RECALC`. |
28
- | `REPLACE` | `vne:text:replace` | Заменить текущее значение или контент. |
29
- | `REPLACE_REG` | `vne:text:replace_reg` | Зарегистрировать обработчик `REPLACE`. |
11
+ | Ключ | Строка | Смысл |
12
+ | --------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
13
+ | `EMIT` | `vne:text:emit` | Начать вывод: подготовка токенов, обновление state, запуск process. С `isKeepProcessState` после `STATE_CHANGED` сразу `EMIT_END`. |
14
+ | `EMIT_END` | `vne:text:emit_end` | Завершить текущий шаг; при autonext перейти к следующему. С `isKeepProcessState` не шлёт `PROCESS_STATE` и `EMIT_NEXT`. |
15
+ | `EMIT_NEXT` | `vne:text:emit_next` | Перейти к следующему шагу emit (подписки с `priority` на Observer). |
16
+ | `EMIT_BEFORE` | `vne:text:emit_before` | Хук перед основным emit (подписки с `priority` на Observer). |
17
+ | `EMIT_PROCESS` | `vne:text:emit_process` | Запустить пошаговый процесс вывода. |
18
+ | `PREPARE_TOKENS` | `vne:text:prepare_tokens` | Подготовить токены или промежуточные данные. |
19
+ | `PROCESS_CANCEL` | `vne:text:process_cancel` | Отменить текущий процесс. |
20
+ | `PROCESS_STATE` | `vne:text:process_state` | Изменить состояние процесса. |
21
+ | `CHANGED` | `vne:text:changed` | Зафиксировать изменение состояния. |
22
+ | `SPEAKER_CHANGED` | `vne:text:speaker_changed` | Зафиксировать смену текущего спикера. |
23
+ | `SPEAKER_INFO_UPDATE` | `vne:text:speaker_info_update` | Обновить метаданные спикера (цвет, имя, opacity). |
24
+ | `STATE_UPDATE` | `vne:text:state_update` | Обновить накопленное состояние модуля. |
25
+ | `STATE_CHANGED` | `vne:text:state_changed` | Сигнал об изменении накопленного состояния. |
26
+ | `RECALC` | `vne:text:recalc` | Запросить данные у обработчиков и продолжить цепочку. |
27
+ | `RECALC_DONE` | `vne:text:recalc_done` | Завершить операцию `RECALC`. |
28
+ | `REPLACE` | `vne:text:replace` | Заменить текущее значение или контент. |
29
+ | `REPLACE_REG` | `vne:text:replace_reg` | Зарегистрировать обработчик `REPLACE`. |
30
30
 
31
31
  ## Константы
32
32
 
@@ -48,19 +48,19 @@ Payloads и результаты хендлеров типизированы ч
48
48
 
49
49
  ## Модули
50
50
 
51
- | Модуль | Зона ответственности |
52
- | ---------------------- | -------------------------------------------------------------------------------------------------------- |
53
- | `text.emit.end` | Завершение emit и переход к next или финальному state. |
54
- | `text.emit.next` | На `EMIT_NEXT`: `PROCESS_STATE` NEXT, затем `onTextEmitNext` → `emit SCENARIO.NEXT` (`priority` 999999). |
55
- | `text.emit` | Точка входа emit: подготовка и запуск process. |
56
- | `text.exec` | Подмодуль `exec` плагина. |
57
- | `text.prepare.tokens` | Токенизация текста перед отображением. |
58
- | `text.process.state` | В `postinject` — `shared.textProcessSkipSources`; PROCESS_STATE, SET, CLEAR. |
59
- | `text.process.enabled` | Подмодуль `process.enabled` плагина. |
60
- | `text.recalc` | Пересчёт производного состояния текста. |
61
- | `text.replace` | Реестр обработчиков REPLACE_REG. |
62
- | `text.speaker` | SPEAKER_INFO_UPDATE, CLEAR, SET; на `EMIT_BEFORE` (`priority` 100) — speaker. |
63
- | `text` | Обрабатывает STATE_UPDATE, STATE_CHANGED, CLEAR, SET. |
51
+ | Модуль | Зона ответственности |
52
+ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |
53
+ | `text.emit.end` | Завершение emit и переход к next или финальному state. `isKeepProcessState` выходит без `PROCESS_STATE` и `EMIT_NEXT`. |
54
+ | `text.emit.next` | На `EMIT_NEXT`: `PROCESS_STATE` NEXT, затем `onTextEmitNext` → `emit SCENARIO.NEXT` (`priority` 999999). |
55
+ | `text.emit` | Точка входа emit: подготовка и запуск process. `isKeepProcessState` после `STATE_CHANGED` сразу `EMIT_END`. |
56
+ | `text.exec` | Подмодуль `exec` плагина. |
57
+ | `text.prepare.tokens` | Токенизация текста перед отображением. |
58
+ | `text.process.state` | В `postinject` — `shared.textProcessSkipSources`; PROCESS_STATE, SET, CLEAR. |
59
+ | `text.process.enabled` | Подмодуль `process.enabled` плагина. |
60
+ | `text.recalc` | Пересчёт производного состояния текста. |
61
+ | `text.replace` | Реестр обработчиков REPLACE_REG. |
62
+ | `text.speaker` | SPEAKER_INFO_UPDATE, CLEAR, SET; на `EMIT_BEFORE` (`priority` 100) — speaker. |
63
+ | `text` | Обрабатывает STATE_UPDATE, STATE_CHANGED, CLEAR, SET. `STATE.SET` и `STATE.CLEAR` передают `isKeepProcessState`. |
64
64
 
65
65
  ## Compatibility
66
66
 
@@ -17,6 +17,8 @@ Payloads и результаты хендлеров типизированы ч
17
17
  | `UPDATE_FAST` | `vne:settings_view:update_fast` | Быстрый UPDATE view без анимации (стрелки). |
18
18
  | `UPDATE_FORCE` | `vne:settings_view:update_force` | Перерисовать view с `isForce`, стейт не меняет. |
19
19
  | `UPDATE_STATE` | `vne:settings_view:update_state` | Слить `{ currentArrowVerticalItem }` в стейт controller; пересчитать `currentItemInner`. |
20
+ | `ARROW_LEFT` | `vne:settings_view:arrow_left` | Горизонтальная стрелка влево: сменить значение сфокусированного поля. |
21
+ | `ARROW_RIGHT` | `vne:settings_view:arrow_right` | Горизонтальная стрелка вправо: сменить значение сфокусированного поля. |
20
22
 
21
23
  ## Константы
22
24
 
@@ -44,9 +46,10 @@ Payloads и результаты хендлеров типизированы ч
44
46
 
45
47
  | Модуль | Зона ответственности |
46
48
  | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
47
- | `settings.fields.controller` | `SHOW`/`HIDE`/`TAB_SET`; зеркалит `UPDATE_STATE` (`currentArrowVerticalItem` + `currentItemInner`). На `selector_texts` / `actions` (`options`): `ARROW_LEFT`/`ARROW_RIGHT` циклят `currentItemInner` (modulo); у `selector_texts` сразу `SETTINGS.SET`. `INTERACT` — option value или named action (в т.ч. `actions` без `settingKey`). `ACCEPT` не обрабатывает — оставляют экраны. |
48
- | `settings.fields.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP`/`ARROW_BOTTOM` по полям; PUSH/POP на SHOW/HIDE; `TAB_SET` сбрасывает индекс; эмитит `UPDATE_STATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
49
- | `settings.fields.view` | Обёртка `<View {...propsView} />` (fade show/hide); внутри вкладки `<SettingsTabContent />` с `PositionBox opacity` для crossfade по `tabKey`. Подсветка полей по `currentArrowVerticalItem`. |
49
+ | `settings.fields.controller` | `SHOW`/`HIDE`/`TAB_SET`; зеркалит `UPDATE_STATE` (`currentArrowVerticalItem` + `currentItemInner`). На `ARROW_LEFT`/`ARROW_RIGHT`: у `selector_texts` / `actions` (`options`) циклят `currentItemInner` (modulo); у `selector_texts` сразу `SETTINGS.SET`. `INTERACT` — option value или named action (в т.ч. `actions` без `settingKey`). `ACCEPT` не обрабатывает — оставляют экраны. |
50
+ | `settings.fields.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP`/`ARROW_BOTTOM` по полям; PUSH/POP на SHOW/HIDE; `TAB_SET` сбрасывает индекс; эмитит `UPDATE_STATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
51
+ | `settings.fields.controller.arrows.horizontal` | Наследует `@vnejs/module.controller.arrows.horizontal`: `onArrowLeft` / `onArrowRight` → `ARROW_LEFT` / `ARROW_RIGHT`; PUSH/POP на SHOW/HIDE. |
52
+ | `settings.fields.view` | Обёртка `<View {...propsView} />` (fade show/hide); внутри вкладки `<SettingsTabContent />` с `PositionBox opacity` для crossfade по `tabKey`. Подсветка полей по `currentArrowVerticalItem`. |
50
53
 
51
54
  ## Близкие плагины
52
55
 
@@ -40,19 +40,20 @@ Payloads и результаты хендлеров типизированы ч
40
40
 
41
41
  ## Модули
42
42
 
43
- | Модуль | Зона ответственности |
44
- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
45
- | `video.controller` | SHOW/HIDE, `BUTTONS.ANY` → `INTERACT.EMIT`. |
46
- | `video.controller.src` | `SET_SRC` → `UPDATE_STATE` `{ src }` + `UPDATE_FAST`. |
47
- | `video.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: только `STATE.CLEAR` → `HIDE` с `{ isForce: true }` (`IS_STATE_SET_ENABLED = false`). |
48
- | `video` | Обрабатывает HIDE, PLAY, LOAD, GET, …. |
49
- | `video.view` | Подмодуль `view` плагина. |
43
+ | Модуль | Зона ответственности |
44
+ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
45
+ | `video.controller` | SHOW/HIDE; `SHOW.BEFORE` → `INTERFACE.TEXT_HIDE`; `HIDE.AFTER` → `SET_SRC` и `SCENARIO.NEXT`. |
46
+ | `video.controller.interact` | Наследует `@vnejs/module.controller.interact`: `BUTTONS.ANY` → `INTERACT.EMIT`; `onInteract` возвращает промис `VIDEO.HIDE`; `CONTROLS_CHECK_NEXT = false`. |
47
+ | `video.controller.src` | `SET_SRC` → `UPDATE_STATE` `{ src }` + `UPDATE_FAST`. |
48
+ | `video.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: только `STATE.CLEAR` → `HIDE` с `{ isForce: true }` (`IS_STATE_SET_ENABLED = false`). |
49
+ | `video` | Обрабатывает HIDE, PLAY, LOAD, GET, …. |
50
+ | `video.view` | Подмодуль `view` плагина. |
50
51
 
51
52
  ## Близкие плагины
52
53
 
53
54
  ### plugins/core/
54
55
 
55
- - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.EMIT, EVENTS.PUSH
56
+ - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.EMIT, EVENTS.PUSH, EVENTS.POP
56
57
  - [media.md](../core/media.md) — `MEDIA`: EVENTS.LOAD, EVENTS.GET, CONST.PRIORITIES.BACKGROUND, CONST.TYPES.VIDEO
57
58
  - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINE_LOAD_REG
58
59
  - [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR, EVENTS.SET
@@ -16,7 +16,6 @@ Payloads и результаты хендлеров типизированы ч
16
16
  | `UPDATE_FAST` | `vne:credits:update_fast` | Быстрое обновление отображения. |
17
17
  | `UPDATE_FORCE` | `vne:credits:update_force` | Перерисовать view с `isForce`, стейт не меняет. |
18
18
  | `UPDATE_STATE` | `vne:credits:update_state` | Слить partial в стейт контроллера. |
19
- | `ACCEPT` | `vne:credits:accept` | ACCEPT / INTERACT → затем `HIDE`. |
20
19
 
21
20
  ## Константы
22
21
 
@@ -34,22 +33,23 @@ Payloads и результаты хендлеров типизированы ч
34
33
 
35
34
  ## Модули
36
35
 
37
- | Модуль | Зона ответственности |
38
- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
39
- | `credits.controller` | SHOW/HIDE по фазам `CONST.COMPONENTS.LIFECYCLE_PRIORITY`; пустой `controls` на `ZINDEX`; на `HIDE.AFTER` — `SCENARIO.NEXT`. |
40
- | `credits.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `CREDITS.ACCEPT` → `HIDE`; PUSH/POP на SHOW/HIDE. |
41
- | `credits.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
42
- | `credits.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
43
- | `credits` | Модуль `credits`. |
44
- | `credits.view` | Подмодуль `view` плагина. |
36
+ | Модуль | Зона ответственности |
37
+ | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
38
+ | `credits.controller` | SHOW/HIDE по фазам `CONST.COMPONENTS.LIFECYCLE_PRIORITY`; пустой `controls` на `ZINDEX`; на `HIDE.AFTER` — `SCENARIO.NEXT`. |
39
+ | `credits.controller.interact` | Наследует `@vnejs/module.controller.interact`: `BUTTONS.ANY` → `INTERACT.EMIT`; `onInteract` → `CREDITS.HIDE`. |
40
+ | `credits.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
41
+ | `credits.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
42
+ | `credits` | Модуль `credits`. |
43
+ | `credits.view` | Подмодуль `view` плагина. |
45
44
 
46
45
  ## Близкие плагины
47
46
 
48
47
  ### plugins/core/
49
48
 
49
+ - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.EMIT, EVENTS.PUSH, EVENTS.POP
50
50
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
51
51
  - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
52
52
 
53
53
  ### Остальные
54
54
 
55
- - [controls.md](../controls/controls.md) — `CONTROLS`: CONST.BUTTONS.ACCEPT, CONST.BUTTONS.INTERACT, CONST.BUTTONS.BACK, CONST.BUTTONS.MENU, CONST.BUTTONS.GAMEMENU
55
+ - [controls.md](../controls/controls.md) — `CONTROLS`: CONST.BUTTONS.ANY, CONST.BUTTONS.BACK, CONST.BUTTONS.MENU, CONST.BUTTONS.GAMEMENU
@@ -19,7 +19,12 @@ Payloads и результаты хендлеров типизированы ч
19
19
  | `UPDATE` | `vne:gallery_full:update` | Обновить состояние или отображение. |
20
20
  | `UPDATE_FAST` | `vne:gallery_full:update_fast` | Быстрое обновление отображения. |
21
21
  | `UPDATE_FORCE` | `vne:gallery_full:update_force` | Перерисовать view с `isForce`, стейт не меняет. |
22
- | `UPDATE_STATE` | `vne:gallery_full:update_state` | Слить partial в стейт контроллера. |
22
+ | `UPDATE_STATE` | `vne:gallery_full:update_state` | Слить partial в стейт контроллера и модулей, подписанных на событие. |
23
+ | `LOAD` | `vne:gallery_full:load` | Загрузить вариацию. Payload `{ pageIndex }`. |
24
+ | `LOAD_SRC` | `vne:gallery_full:load_src` | Получить src вариации. Payload — вариант, результат — src. |
25
+ | `PREV` | `vne:gallery_full:prev` | Предыдущая вариация (`EVENT_PAGE_PREV`). |
26
+ | `NEXT` | `vne:gallery_full:next` | Следующая вариация (`EVENT_PAGE_NEXT`). |
27
+ | `PAGE_SET` | `vne:gallery_full:page_set` | Абсолютный прыжок вариации (`{ pageIndex }`). |
23
28
 
24
29
  ## Константы
25
30
 
@@ -39,9 +44,14 @@ Payloads и результаты хендлеров типизированы ч
39
44
 
40
45
  | Модуль | Зона ответственности |
41
46
  | ---------------------------- | -------------------------------------------------------------------------------------------------------------------- |
42
- | `gallery.full.controller` | Обрабатывает UPDATE, HIDE, SHOW, CHOOSE. `ARROW_LEFT` / `ARROW_RIGHT` → смена вариации. |
43
- | `gallery.full.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
44
- | `gallery.full.view` | Подмодуль `full.view` плагина. |
47
+ | `gallery.full.bridge` | `GALLERY.CHOOSE` с `isOpened: true` → `SHOW`. |
48
+ | `gallery.full.controller` | `onShowBefore` пишет `itemFullName` / `itemMediaType` / `itemLayerChildType` / `variants` в `UPDATE_STATE` и эмитит `LOAD` `{ pageIndex: 0 }`. `onHideAfter` сбрасывает этот контекст через `UPDATE_STATE`. |
49
+ | `gallery.full.load` | `LOAD` → `onLoad` по `state.variants`; для открытой вариации эмитит `LOAD_SRC`. `UPDATE_STATE` сливает partial в стейт модуля. |
50
+ | `gallery.full.load.src` | `LOAD_SRC` → `loadVariationSrc`: media по имени или `LAYER_BG.SRC_GET` для фона. |
51
+ | `gallery.full.variation` | Наследует `@vnejs/module.controller.pages`: `EVENT_PAGE_PREV`/`NEXT`/`SET` = `PREV`/`NEXT`/`PAGE_SET`; стейт `pageIndex` / `pagesCount`; `applyPage` → `LOAD` `{ pageIndex }`. |
52
+ | `gallery.full.controller.arrows` | `onArrowLeft` / `onArrowRight` → `PREV` / `NEXT`; PUSH/POP на SHOW/HIDE. |
53
+ | `gallery.full.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
54
+ | `gallery.full.view` | Подмодуль `full.view` плагина. |
45
55
 
46
56
  ## Близкие плагины
47
57
 
@@ -36,17 +36,19 @@ Payloads и результаты хендлеров типизированы ч
36
36
 
37
37
  ## Модули
38
38
 
39
- | Модуль | Зона ответственности |
40
- | --------------------- | -------------------------------------------------------------------------------------------------------------- |
41
- | `intro.controller` | SHOW/HIDE по фазам `CONST.COMPONENTS.LIFECYCLE_PRIORITY`; `UPDATE_STATE` / `UPDATE_FAST`; ANY → INTERACT. |
42
- | `intro.controller.bg` | Наследует `@vnejs/module.controller.bg`: `SHOW` + `LIFECYCLE_PRIORITY.SHOW.BEFORE` → `bgSrc`; `start` preload. |
43
- | `intro` | Связь со сценарием: шаг next после завершения действия. |
44
- | `intro.view` | Подмодуль `view` плагина. |
39
+ | Модуль | Зона ответственности |
40
+ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | `intro.controller` | SHOW/HIDE по фазам `CONST.COMPONENTS.LIFECYCLE_PRIORITY`; `UPDATE_STATE` / `UPDATE_FAST`. |
42
+ | `intro.controller.interact` | Наследует `@vnejs/module.controller.interact`: `BUTTONS.ANY` → `INTERACT.EMIT`; `onInteract` → `INTRO.INTERACT`; `CONTROLS_CHECK_NEXT = false`. |
43
+ | `intro.controller.bg` | Наследует `@vnejs/module.controller.bg`: `SHOW` + `LIFECYCLE_PRIORITY.SHOW.BEFORE` → `bgSrc`; `start` preload. |
44
+ | `intro` | Связь со сценарием: шаг next после завершения действия. |
45
+ | `intro.view` | Подмодуль `view` плагина. |
45
46
 
46
47
  ## Близкие плагины
47
48
 
48
49
  ### plugins/core/
49
50
 
51
+ - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.EMIT, EVENTS.PUSH, EVENTS.POP
50
52
  - [logs.md](../core/logs.md) — `LOGS`: `EVENTS.LOGS.EMIT` (`action`, …)
51
53
  - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
52
54
  - [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED