@vnejs/docs 0.2.52 → 0.2.53
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 +10 -0
- package/architecture.md +1 -1
- package/package.json +1 -1
- package/plugins/canvas/bg.md +0 -1
- package/plugins/canvas/bg.speak.md +1 -1
- package/plugins/canvas/sprite.md +0 -1
- package/plugins/canvas/sprite.speak.md +1 -1
- package/plugins/canvas/text.md +0 -1
- package/plugins/canvas/video.md +0 -1
- package/plugins/controls/cursor.md +2 -3
- package/plugins/core/logs.md +6 -7
- package/plugins/core/stack.md +11 -12
- package/plugins/core/state.md +0 -1
- package/plugins/core/vendors.md +1 -3
- package/plugins/scenario/choose.md +12 -13
- package/plugins/scenario/point_and_click.md +9 -10
- package/plugins/text/text.md +13 -14
- package/plugins/text/wall.md +0 -1
- package/plugins/views/cursor.md +1 -1
- package/plugins/views.scenario/choose.md +0 -1
- package/plugins/views.scenario/point_and_click.md +0 -1
- package/plugins/views.scenario/qte.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
|
|
4
4
|
|
|
5
|
+
## 0.2.53
|
|
6
|
+
|
|
7
|
+
- `controls/cursor` — DOM-клик с тача эмитит `CURSOR.HIDE` (сам клик с `pointerType === "touch"`, клик после `pointerdown` с тача, либо `sourceCapabilities.firesTouchEvents`).
|
|
8
|
+
- `uis.react` — `vne-cursor-target` ставится только на узлы с `vne-cursor-target-possible` (тот же момент, что непустой `vne-cursor-type`). API: `vne-cursor-target-possible`.
|
|
9
|
+
- `views.screens/checkers`, `views.scenario/qte` — клетки доски и dial QTE помечаются `vne-cursor-target-possible`.
|
|
10
|
+
- `module` — `setStateFromGlobalState` → `setClonedState`: `setState(structuredClone(getStateSlice(payload)))`. `getStateSlice`: нет слайса в payload → `getDefaultState()` (пустые модули вырезаются из сейва). API: `setClonedState`, `getStateSlice`.
|
|
11
|
+
- `module.core` — снят `onSetStateClone`; вместо него `setClonedState`. Снят `emitClone`; вместо него `structuredClone`. Снят `emitInteractPushPop`; вместо него `emit(EVENTS.INTERACT.PUSH_POP, …)`. API: снято `ModuleCore.onSetStateClone`, `ModuleCore.emitClone`, `ModuleCore.emitInteractPushPop`.
|
|
12
|
+
- `core/logs` — доп. поля `LogsValue` — `LogsCloneable` (строки, числа, boolean, bigint, null, массивы, plain-object), не `unknown`. API: `LogsCloneable`, `LogsValue`.
|
|
13
|
+
- `core/vendors` — снято событие `CLONE` и модуль `vendors` (lodash `cloneDeep`). API: снято `EVENTS.VENDORS.CLONE`.
|
|
14
|
+
|
|
5
15
|
## 0.2.52
|
|
6
16
|
|
|
7
17
|
- `core/logs` — `LogsEmitPayload` = `LogsValue` + опциональный `level` (без обёртки `value`); `module` в payload нет (имя эмиттера из `EmitParams`). API: `LogsValue`, `LogsEmitPayload`, `LogsPushPayload.log`.
|
package/architecture.md
CHANGED
|
@@ -169,7 +169,7 @@ flowchart TD
|
|
|
169
169
|
| Пакет | Назначение |
|
|
170
170
|
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
171
171
|
| **`@vnejs/module`** | **`Module`**: `VNE`, `on`/`emit`, `inject`, state, shared, media, lifecycle |
|
|
172
|
-
| **`@vnejs/module.core`** | **`ModuleCore`** — типизированный доступ к **core
|
|
172
|
+
| **`@vnejs/module.core`** | **`ModuleCore`** — типизированный доступ к **core-контрактам** |
|
|
173
173
|
| **`@vnejs/module.replace`** | **`ModuleReplace`** — последовательная подмена значения поля payload через `REPLACE_KEY` и цепочку handlers |
|
|
174
174
|
| **`@vnejs/module.replace.exec`** | **`ModuleReplaceExec`** — реестр exec-handlers по имени модуля (`EXEC_REG` / `EXEC_GET`) |
|
|
175
175
|
| **`@vnejs/module.components`** | **`ModuleView`**, **`ModuleController`** — React-view, zustand, media, controls |
|
package/package.json
CHANGED
package/plugins/canvas/bg.md
CHANGED
|
@@ -77,7 +77,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
77
77
|
- [media.md](../core/media.md) — `MEDIA`: EVENTS.LOAD, CONST.PRIORITIES.BACKGROUND, CONST.TYPES.IMAGE, EVENTS.GET
|
|
78
78
|
- [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED
|
|
79
79
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR, EVENTS.PRELOAD
|
|
80
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone, EVENTS.UID
|
|
81
80
|
|
|
82
81
|
### Остальные
|
|
83
82
|
|
package/plugins/canvas/sprite.md
CHANGED
|
@@ -80,7 +80,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
80
80
|
- [media.md](../core/media.md) — `MEDIA`: EVENTS.LOAD, CONST.TYPES.IMAGE, EVENTS.GET
|
|
81
81
|
- [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED
|
|
82
82
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR, EVENTS.PRELOAD
|
|
83
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
|
|
84
83
|
|
|
85
84
|
### Остальные
|
|
86
85
|
|
package/plugins/canvas/text.md
CHANGED
|
@@ -56,7 +56,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
56
56
|
- [interact.md](../core/interact.md) — `INTERACT`: EVENTS.PUSH_POP
|
|
57
57
|
- [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED
|
|
58
58
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR, EVENTS.PRELOAD
|
|
59
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
|
|
60
59
|
|
|
61
60
|
### Остальные
|
|
62
61
|
|
package/plugins/canvas/video.md
CHANGED
|
@@ -65,7 +65,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
65
65
|
- [media.md](../core/media.md) — `MEDIA`: EVENTS.LOAD, CONST.PRIORITIES.BACKGROUND, CONST.TYPES.VIDEO, EVENTS.GET
|
|
66
66
|
- [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED
|
|
67
67
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR, EVENTS.PRELOAD
|
|
68
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: EVENTS.UID, emitClone
|
|
69
68
|
|
|
70
69
|
### Остальные
|
|
71
70
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Пакет: `@vnejs/plugins.controls.cursor` · namespace: `CURSOR`
|
|
4
4
|
|
|
5
|
-
Кастомный курсор: позиция, сдвиг, скролл под курсором, view и программный клик.
|
|
5
|
+
Кастомный курсор: позиция, сдвиг, скролл под курсором, view и программный клик. DOM-клик с тача эмитит `HIDE`: у события `pointerType === "touch"`, перед кликом был `pointerdown` с тача, либо у клика `sourceCapabilities.firesTouchEvents`.
|
|
6
6
|
|
|
7
7
|
## События
|
|
8
8
|
|
|
@@ -54,7 +54,7 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
54
54
|
| `cursor.view.set` (`CursorViewSet`) | VIEW_SET + STATE/STARTED для проставления `view`. Имя `view.set`, чтобы не пересечься с `plugins/views/cursor` (`cursor.view`). |
|
|
55
55
|
| `cursor.move` (`CursorMove`) | MOVE (мышь) → `CONTROLS.DEVICE_SET` (keyboard) + SHOW + SET_X_Y; скрывает системный курсор. |
|
|
56
56
|
| `cursor.shift` (`CursorShift`) | SHIFT + INIT `SHIFT_SPEED` / `SHIFT_REVERSE_*`. |
|
|
57
|
-
| `cursor.click` (`CursorClick`) | CLICK по координатам курсора.
|
|
57
|
+
| `cursor.click` (`CursorClick`) | CLICK по координатам курсора. DOM-клик с тача эмитит `HIDE`. |
|
|
58
58
|
| `cursor.scroll` (`CursorScroll`) | SCROLL + INIT `SCROLL_SPEED`. |
|
|
59
59
|
|
|
60
60
|
## Близкие плагины
|
|
@@ -64,7 +64,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
64
64
|
- [settings.md](../core/settings.md) — `SETTINGS`: EVENTS.INIT
|
|
65
65
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
|
|
66
66
|
- [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED, EVENTS.RESIZE
|
|
67
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
|
|
68
67
|
|
|
69
68
|
### Остальные
|
|
70
69
|
|
package/plugins/core/logs.md
CHANGED
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.core.logs`.
|
|
10
10
|
|
|
11
|
-
| Ключ | Строка | Смысл
|
|
12
|
-
| ------- | ---------------- |
|
|
11
|
+
| Ключ | Строка | Смысл |
|
|
12
|
+
| ------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
13
13
|
| `EMIT` | `vne:logs:emit` | Поставить запись в очередь логов (если логирование включено); затем сформировать `PUSH` с uid и timestamp. Имя модуля-источника — из `EmitParams.module`, не из payload. |
|
|
14
|
-
| `PUSH` | `vne:logs:push` | Записать строку в `window.VneLogs` и при необходимости вывести в консоль.
|
|
15
|
-
| `LOAD` | `vne:logs:load` | Скачать накопленные логи как JSON-файл через `SYSTEM.FILE_LOAD`.
|
|
16
|
-
| `CLEAR` | `vne:logs:clear` | Очистить `window.VneLogs`.
|
|
14
|
+
| `PUSH` | `vne:logs:push` | Записать строку в `window.VneLogs` и при необходимости вывести в консоль. |
|
|
15
|
+
| `LOAD` | `vne:logs:load` | Скачать накопленные логи как JSON-файл через `SYSTEM.FILE_LOAD`. |
|
|
16
|
+
| `CLEAR` | `vne:logs:clear` | Очистить `window.VneLogs`. |
|
|
17
17
|
|
|
18
|
-
Payload `EMIT` (`LogsEmitPayload`): поля `LogsValue` (`action: string` и прочие) плюс опционально `level`. `module` в payload нет: `Module.emit(this.EVENTS.LOGS.EMIT, { action, … })` передаёт имя модуля через `EmitParams`.
|
|
18
|
+
Payload `EMIT` (`LogsEmitPayload`): поля `LogsValue` (`action: string` и прочие `LogsCloneable`: строки, числа, boolean, bigint, null, массивы и plain-object) плюс опционально `level`. `module` в payload нет: `Module.emit(this.EVENTS.LOGS.EMIT, { action, … })` передаёт имя модуля через `EmitParams`.
|
|
19
19
|
|
|
20
20
|
В модулях на базе `ModuleCore`: `this.emit(this.EVENTS.LOGS.EMIT, { action: …, … })`.
|
|
21
21
|
|
|
@@ -45,7 +45,6 @@ Payload `EMIT` (`LogsEmitPayload`): поля `LogsValue` (`action: string` и п
|
|
|
45
45
|
|
|
46
46
|
- [settings.md](./settings.md) — `SETTINGS`: `INIT`; `SETTINGS.LOGS.ENABLED`
|
|
47
47
|
- [system.md](./system.md) — `SYSTEM`: `FILE_LOAD` (скачивание логов)
|
|
48
|
-
- [vendors.md](./vendors.md) — `VENDORS`: `UID`, `CLONE` (`emitClone` для записи лога)
|
|
49
48
|
|
|
50
49
|
### Остальные
|
|
51
50
|
|
package/plugins/core/stack.md
CHANGED
|
@@ -18,7 +18,7 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
18
18
|
| `EXEC_ARG` | `vne:stack:exec_arg` | По токену строки вернуть значение аргумента из верхнего frame. Payload: `{ line? }`. |
|
|
19
19
|
| `PROHIBIT_REPLACE` | `vne:stack:prohibit_replace` | Цепочка `ModuleReplace`: можно ли идти на `label`. Payload: `{ label?, isProhibited? }`. Старт `isProhibited: false`. Возврат — итоговое `isProhibited`. |
|
|
20
20
|
| `PROHIBIT_REPLACE_REG` | `vne:stack:prohibit_replace_reg` | Зарегистрировать обработчик `PROHIBIT_REPLACE`. `{ handler, priority? }`. Не блокирующий хендлер: `return isProhibited`; запрет: `return isProhibited \|\| ownCheck`. |
|
|
21
|
-
| `PROHIBITED` | `vne:stack:prohibited` | Переход запрещён. Payload: `{ label?, args?, event? }` — `event` это `JUMP` / `CALL` / `EMIT`, чтобы повторить переход. `$ stack jump/call` при запрете не делает `emit SCENARIO.NEXT`.
|
|
21
|
+
| `PROHIBITED` | `vne:stack:prohibited` | Переход запрещён. Payload: `{ label?, args?, event? }` — `event` это `JUMP` / `CALL` / `EMIT`, чтобы повторить переход. `$ stack jump/call` при запрете не делает `emit SCENARIO.NEXT`. |
|
|
22
22
|
|
|
23
23
|
## Константы
|
|
24
24
|
|
|
@@ -35,17 +35,17 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
35
35
|
|
|
36
36
|
## Модули
|
|
37
37
|
|
|
38
|
-
| Модуль | Зона ответственности
|
|
39
|
-
| --------------- |
|
|
40
|
-
| `stack` | State стека; обработка `EMIT` (`PROHIBIT_REPLACE` → переход или `PROHIBITED`); sync на `STATE.SET` / `CLEAR`.
|
|
41
|
-
| `stack.call` | `PROHIBIT_REPLACE`, затем push frame + `EMIT`.
|
|
42
|
-
| `stack.jump` | Jump без сохранения.
|
|
43
|
-
| `stack.pop` | Pop frame.
|
|
44
|
-
| `stack.clear` | Clear state + next.
|
|
45
|
-
| `stack.args` | Резолв аргументов из строки сценария.
|
|
38
|
+
| Модуль | Зона ответственности |
|
|
39
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| `stack` | State стека; обработка `EMIT` (`PROHIBIT_REPLACE` → переход или `PROHIBITED`); sync на `STATE.SET` / `CLEAR`. |
|
|
41
|
+
| `stack.call` | `PROHIBIT_REPLACE`, затем push frame + `EMIT`. |
|
|
42
|
+
| `stack.jump` | Jump без сохранения. |
|
|
43
|
+
| `stack.pop` | Pop frame. |
|
|
44
|
+
| `stack.clear` | Clear state + next. |
|
|
45
|
+
| `stack.args` | Резолв аргументов из строки сценария. |
|
|
46
46
|
| `stack.exec` | Регистрация `$stack` handlers в scenario (jump/call/pop + preload). На `LINE_LOAD` jump/call — `PROHIBIT_REPLACE` до `LABEL_GET`. `onLineExec`: `emit SCENARIO.NEXT` только если jump/call не вернули `false` (запрет); `pop` — как раньше. |
|
|
47
|
-
| `stack.replace` | Реестр обработчиков `PROHIBIT_REPLACE_REG`; наследник `@vnejs/module.replace`; `REPLACE_KEY` — `isProhibited`.
|
|
48
|
-
| `stack.logs` | Логирование операций стека, в т.ч. `PROHIBITED`; в `init` регистрирует хендлер `PROHIBIT_REPLACE` (пропускает флаг).
|
|
47
|
+
| `stack.replace` | Реестр обработчиков `PROHIBIT_REPLACE_REG`; наследник `@vnejs/module.replace`; `REPLACE_KEY` — `isProhibited`. |
|
|
48
|
+
| `stack.logs` | Логирование операций стека, в т.ч. `PROHIBITED`; в `init` регистрирует хендлер `PROHIBIT_REPLACE` (пропускает флаг). |
|
|
49
49
|
|
|
50
50
|
## Близкие плагины
|
|
51
51
|
|
|
@@ -56,7 +56,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
56
56
|
- [memory.md](./memory.md) — `MEMORY`: `CLEAR` (при `EMIT`)
|
|
57
57
|
- [scenario.md](./scenario.md) — `SCENARIO`: `LABEL_GET`, `LINE_EXEC_REG`, `LINE_LOAD_REG`; `emit SCENARIO.NEXT`
|
|
58
58
|
- [state.md](./state.md) — `STATE`: `SET`, `CLEAR` (sync стека; `CLEAR` из `stack.clear`)
|
|
59
|
-
- [vendors.md](./vendors.md) — `VENDORS`: `CLONE` (`emitClone` для args)
|
|
60
59
|
|
|
61
60
|
### Остальные
|
|
62
61
|
|
package/plugins/core/state.md
CHANGED
|
@@ -46,7 +46,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
46
46
|
- [logs.md](./logs.md) — `LOGS`: `EVENTS.LOGS.EMIT` (`action`, …), `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
|
|
47
47
|
- [scenario.md](./scenario.md) — `SCENARIO`: `LINES_GET`, `LABEL_GET` (миграция по hash строки)
|
|
48
48
|
- [system.md](./system.md) — `SYSTEM`: `CONST.SYSTEM.VERSION_MAJOR` / `VERSION_MINOR` (проверка версии save)
|
|
49
|
-
- [vendors.md](./vendors.md) — `VENDORS`: `HASH`, `CLONE` (`emitClone` state)
|
|
50
49
|
|
|
51
50
|
### Остальные
|
|
52
51
|
|
package/plugins/core/vendors.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Пакет: `@vnejs/plugins.core.vendors` · namespace: `VENDORS`
|
|
4
4
|
|
|
5
|
-
Обёртки над сторонними утилитами:
|
|
5
|
+
Обёртки над сторонними утилитами: скриншот.
|
|
6
6
|
|
|
7
7
|
## События
|
|
8
8
|
|
|
@@ -10,7 +10,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
10
10
|
|
|
11
11
|
| Ключ | Строка | Смысл |
|
|
12
12
|
| -------- | -------------------- | ---------------------------------------------------------------------------------------------- |
|
|
13
|
-
| `CLONE` | `vne:vendors:clone` | Deep clone через lodash (state, stack, args). |
|
|
14
13
|
| `SCREEN` | `vne:vendors:screen` | Скриншот DOM через html2canvas → webp data URL. Payload: `{ width?, height?, quality?, id? }`. |
|
|
15
14
|
|
|
16
15
|
## Константы
|
|
@@ -29,7 +28,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
29
28
|
|
|
30
29
|
| Модуль | Зона ответственности |
|
|
31
30
|
| ---------------- | --------------------------------------------------------------- |
|
|
32
|
-
| `vendors` | clone. |
|
|
33
31
|
| `vendors.screen` | html2canvas screenshot; на init помечает media-элементы ignore. |
|
|
34
32
|
|
|
35
33
|
## Близкие плагины
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| --------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
11
11
|
| `% choose` | Открыть выбор: собрать `% choose.option`, emit `EMIT`. Если все опции `hided` (или список пуст) — `SKIP` и переход за блок. |
|
|
12
12
|
| `% choose.option "…"` | Ветка опции; при проходе мимо невыбранной — skip тела по indent. |
|
|
13
|
-
| `$ choose repeat` | Вернуться к ближайшему `% choose` **выше** текущей строки в том же label и `emit SCENARIO.NEXT`.
|
|
13
|
+
| `$ choose repeat` | Вернуться к ближайшему `% choose` **выше** текущей строки в том же label и `emit SCENARIO.NEXT`. |
|
|
14
14
|
|
|
15
15
|
Пример цикла «осмотреть → вернуться в меню»:
|
|
16
16
|
|
|
@@ -28,19 +28,19 @@
|
|
|
28
28
|
|
|
29
29
|
Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.scenario.choose`.
|
|
30
30
|
|
|
31
|
-
| Ключ | Строка | Смысл
|
|
32
|
-
| -------------------- | ------------------------------- |
|
|
33
|
-
| `EMIT` | `vne:choose:emit` | Принять опции и args; если есть видимые — `STATE_UPDATE` и `SHOW`; иначе `SKIP`.
|
|
31
|
+
| Ключ | Строка | Смысл |
|
|
32
|
+
| -------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
33
|
+
| `EMIT` | `vne:choose:emit` | Принять опции и args; если есть видимые — `STATE_UPDATE` и `SHOW`; иначе `SKIP`. |
|
|
34
34
|
| `OPTION` | `vne:choose:option` | Принять выбор по UI-индексу: прогнать `OPTION_BEFORE`, затем `HIDE`, `OPTION_REPLACE`, установить `curLine`, сброс state, `emit SCENARIO.NEXT`. |
|
|
35
|
-
| `OPTION_BEFORE` | `vne:choose:option_before` | Side effects до применения выбора (подписки с `priority` на Observer).
|
|
36
|
-
| `OPTION_REPLACE` | `vne:choose:option_replace` | Подменить UI-индекс принятой опции (цепочка handlers перед переходом по ветке).
|
|
37
|
-
| `OPTION_REPLACE_REG` | `vne:choose:option_replace_reg` | Зарегистрировать обработчик `OPTION_REPLACE`.
|
|
35
|
+
| `OPTION_BEFORE` | `vne:choose:option_before` | Side effects до применения выбора (подписки с `priority` на Observer). |
|
|
36
|
+
| `OPTION_REPLACE` | `vne:choose:option_replace` | Подменить UI-индекс принятой опции (цепочка handlers перед переходом по ветке). |
|
|
37
|
+
| `OPTION_REPLACE_REG` | `vne:choose:option_replace_reg` | Зарегистрировать обработчик `OPTION_REPLACE`. |
|
|
38
38
|
| `SKIP` | `vne:choose:skip` | Пропустить блок: `curLine` на первую строку после indent-дерева `% choose`, `emit SCENARIO.NEXT`. |
|
|
39
|
-
| `SHOW` | `vne:choose:show` | Выбор активен (state готов). Слушает view-плагин.
|
|
40
|
-
| `HIDE` | `vne:choose:hide` | Выбор закрыт. Слушает view-плагин.
|
|
41
|
-
| `EXEC_REG` | `vne:choose:exec_reg` | Зарегистрировать exec-обработчик для подстановки в опции.
|
|
42
|
-
| `EXEC_GET` | `vne:choose:exec_get` | Получить значение через зарегистрированный exec-обработчик.
|
|
43
|
-
| `STATE_UPDATE` | `vne:choose:state_update` | Обновить накопленное состояние модуля `choose`.
|
|
39
|
+
| `SHOW` | `vne:choose:show` | Выбор активен (state готов). Слушает view-плагин. |
|
|
40
|
+
| `HIDE` | `vne:choose:hide` | Выбор закрыт. Слушает view-плагин. |
|
|
41
|
+
| `EXEC_REG` | `vne:choose:exec_reg` | Зарегистрировать exec-обработчик для подстановки в опции. |
|
|
42
|
+
| `EXEC_GET` | `vne:choose:exec_get` | Получить значение через зарегистрированный exec-обработчик. |
|
|
43
|
+
| `STATE_UPDATE` | `vne:choose:state_update` | Обновить накопленное состояние модуля `choose`. |
|
|
44
44
|
|
|
45
45
|
## Константы
|
|
46
46
|
|
|
@@ -99,7 +99,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
99
99
|
- [logs.md](../core/logs.md) — `LOGS`: `EVENTS.LOGS.EMIT` (`action`, …), `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
|
|
100
100
|
- [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
|
|
101
101
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
|
|
102
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
|
|
103
102
|
|
|
104
103
|
### Остальные
|
|
105
104
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
11
|
| `% point-and-click` | Открыть point-and-click: собрать `% point-and-click.option`, emit `EMIT`. Если все опции `hided` (или список пуст) — `SKIP` и переход за блок. |
|
|
12
12
|
| `% point-and-click.option {icon} {iconHover} x y` | Hotspot; при проходе мимо невыбранного — skip тела по indent. Опционально args `imgWidth` / `imgHeight` (px canvas). |
|
|
13
|
-
| `$ point-and-click repeat` | Вернуться к ближайшему `% point-and-click` **выше** текущей строки в том же label и `emit SCENARIO.NEXT`.
|
|
13
|
+
| `$ point-and-click repeat` | Вернуться к ближайшему `% point-and-click` **выше** текущей строки в том же label и `emit SCENARIO.NEXT`. |
|
|
14
14
|
|
|
15
15
|
Пример цикла осмотра:
|
|
16
16
|
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
|
|
31
31
|
Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.scenario.point_and_click`.
|
|
32
32
|
|
|
33
|
-
| Ключ | Строка | Смысл
|
|
34
|
-
| -------------- | ---------------------------------- |
|
|
35
|
-
| `EMIT` | `vne:point_and_click:emit` | Принять опции и args; если есть видимые — `STATE_UPDATE` и `SHOW`; иначе `SKIP`.
|
|
33
|
+
| Ключ | Строка | Смысл |
|
|
34
|
+
| -------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
35
|
+
| `EMIT` | `vne:point_and_click:emit` | Принять опции и args; если есть видимые — `STATE_UPDATE` и `SHOW`; иначе `SKIP`. |
|
|
36
36
|
| `OPTION` | `vne:point_and_click:option` | Выбор hotspot: `HIDE`, `curLine` внутрь опции, сброс state через `STATE_UPDATE`, `emit SCENARIO.NEXT`. |
|
|
37
37
|
| `SKIP` | `vne:point_and_click:skip` | Пропустить блок: `curLine` на первую строку после indent-дерева `% point-and-click`, `emit SCENARIO.NEXT`. |
|
|
38
|
-
| `SHOW` | `vne:point_and_click:show` | Выбор активен (state готов). Слушает view-плагин.
|
|
39
|
-
| `HIDE` | `vne:point_and_click:hide` | Выбор закрыт. Слушает view-плагин.
|
|
40
|
-
| `EXEC_REG` | `vne:point_and_click:exec_reg` | Зарегистрировать exec-обработчик для подстановки в опции.
|
|
41
|
-
| `EXEC_GET` | `vne:point_and_click:exec_get` | Получить значение через зарегистрированный exec-обработчик (например `hided:` / `disabled:`).
|
|
42
|
-
| `STATE_UPDATE` | `vne:point_and_click:state_update` | Обновить накопленное состояние модуля `point_and_click`.
|
|
38
|
+
| `SHOW` | `vne:point_and_click:show` | Выбор активен (state готов). Слушает view-плагин. |
|
|
39
|
+
| `HIDE` | `vne:point_and_click:hide` | Выбор закрыт. Слушает view-плагин. |
|
|
40
|
+
| `EXEC_REG` | `vne:point_and_click:exec_reg` | Зарегистрировать exec-обработчик для подстановки в опции. |
|
|
41
|
+
| `EXEC_GET` | `vne:point_and_click:exec_get` | Получить значение через зарегистрированный exec-обработчик (например `hided:` / `disabled:`). |
|
|
42
|
+
| `STATE_UPDATE` | `vne:point_and_click:state_update` | Обновить накопленное состояние модуля `point_and_click`. |
|
|
43
43
|
|
|
44
44
|
## Константы
|
|
45
45
|
|
|
@@ -91,7 +91,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
91
91
|
- [logs.md](../core/logs.md) — `LOGS`: `EVENTS.LOGS.EMIT` (`action`, …), `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
|
|
92
92
|
- [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
|
|
93
93
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
|
|
94
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
|
|
95
94
|
|
|
96
95
|
### Остальные
|
|
97
96
|
|
package/plugins/text/text.md
CHANGED
|
@@ -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. |
|
|
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. |
|
|
64
64
|
|
|
65
65
|
## Compatibility
|
|
66
66
|
|
|
@@ -84,7 +84,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
84
84
|
- [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, CONST.OTHER_MODULE, CONST.LINE_KEYWORDS.AUTONEXT
|
|
85
85
|
- [settings.md](../core/settings.md) — `SETTINGS`: EVENTS.CHANGED, EVENTS.INIT
|
|
86
86
|
- [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
|
|
87
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: EVENTS.UID, emitClone
|
|
88
87
|
|
|
89
88
|
### Остальные
|
|
90
89
|
|
package/plugins/text/wall.md
CHANGED
|
@@ -37,7 +37,6 @@ Payloads и результаты хендлеров типизированы ч
|
|
|
37
37
|
|
|
38
38
|
- [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
|
|
39
39
|
- [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR, EVENTS.SET
|
|
40
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
|
|
41
40
|
|
|
42
41
|
### Остальные
|
|
43
42
|
|
package/plugins/views/cursor.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Отображает кастомный курсор с загрузкой иконок default/pointer.
|
|
6
6
|
|
|
7
|
-
Интерактивные элементы игрового UI задают тип курсора атрибутом `vne-cursor-type` на DOM-узле (`"pointer"` или пусто), а не через CSS `cursor`. Компонент курсора читает стек через `elementsFromPoint`,
|
|
7
|
+
Интерактивные элементы игрового UI задают тип курсора атрибутом `vne-cursor-type` на DOM-узле (`"pointer"` или пусто), а не через CSS `cursor`. Вместе с непустым типом на том же узле стоит `vne-cursor-target-possible`. Компонент курсора читает стек через `elementsFromPoint`, ставит `vne-cursor-target` только на узлы с `vne-cursor-target-possible` (и только если набор таких узлов изменился) и переключает иконку default/pointer по непустому `vne-cursor-type` во всём стеке. Исключение: у Range input остаётся `cursor: inherit`, чтобы браузерный курсор `<input type="range">` уходил в `none`.
|
|
8
8
|
|
|
9
9
|
## События
|
|
10
10
|
|