@endge/nova 0.13.6 → 0.13.14

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.
Files changed (119) hide show
  1. package/dist/domain/constants/nova-phase.d.ts +16 -0
  2. package/dist/domain/types/base.types.d.ts +177 -0
  3. package/dist/domain/types/component.types.d.ts +156 -0
  4. package/dist/domain/types/context.types.d.ts +31 -0
  5. package/dist/domain/types/cursor.types.d.ts +89 -0
  6. package/dist/domain/types/diagnostics.types.d.ts +148 -0
  7. package/dist/domain/types/events.types.d.ts +85 -0
  8. package/dist/domain/types/export.types.d.ts +27 -0
  9. package/dist/domain/types/hit-test.types.d.ts +16 -0
  10. package/dist/domain/types/motion.types.d.ts +118 -0
  11. package/dist/domain/types/renderer.types.d.ts +607 -0
  12. package/dist/domain/types/rendering/index.d.ts +559 -0
  13. package/dist/domain/types/semantic.types.d.ts +69 -0
  14. package/dist/domain/types/sound.types.d.ts +84 -0
  15. package/dist/domain/types/theme.types.d.ts +53 -0
  16. package/dist/domain/utils/bounds.d.ts +34 -0
  17. package/dist/domain/utils/schemaBounds.d.ts +10 -0
  18. package/dist/index.d.ts +82 -8919
  19. package/dist/model/input/NovaCaretBlinkController.d.ts +35 -0
  20. package/dist/model/input/NovaClipboardService.d.ts +18 -0
  21. package/dist/model/input/NovaInputProxy_Adapter.d.ts +61 -0
  22. package/dist/model/input/NovaInputValidationController.d.ts +46 -0
  23. package/dist/model/input/NovaTextInputController.d.ts +126 -0
  24. package/dist/model/input/NovaTextLayoutEngine.d.ts +31 -0
  25. package/dist/model/input/index.d.ts +7 -0
  26. package/dist/model/input/nova-input.types.d.ts +137 -0
  27. package/dist/model/motion/NovaMotionEngine.d.ts +152 -0
  28. package/dist/model/motion/nova-motion-easing.d.ts +13 -0
  29. package/dist/model/motion/nova-motion-interpolation.d.ts +19 -0
  30. package/dist/model/motion/nova-motion-presets.d.ts +288 -0
  31. package/dist/model/motion/nova-motion-timeline.d.ts +5 -0
  32. package/dist/model/platform/NovaCanvas.d.ts +112 -0
  33. package/dist/model/platform/NovaGraphics.d.ts +32 -0
  34. package/dist/model/render/backends/canvas2d/NovaCanvas2DTargetManager.d.ts +29 -0
  35. package/dist/model/render/backends/canvas2d/NovaRenderer2D.d.ts +238 -0
  36. package/dist/model/render/backends/nova-render-backend-factory.d.ts +10 -0
  37. package/dist/model/render/backends/nova-render-backend.d.ts +16 -0
  38. package/dist/model/render/backends/webgl/NovaGpuBufferArena.d.ts +76 -0
  39. package/dist/model/render/backends/webgl/NovaRendererWebGL.d.ts +154 -0
  40. package/dist/model/render/backends/webgl/NovaWebGLBatcher.d.ts +17 -0
  41. package/dist/model/render/backends/webgl/NovaWebGLBuffer.d.ts +19 -0
  42. package/dist/model/render/backends/webgl/NovaWebGLDevice.d.ts +24 -0
  43. package/dist/model/render/backends/webgl/NovaWebGLDiagnostics.d.ts +29 -0
  44. package/dist/model/render/backends/webgl/NovaWebGLFrameRenderer.d.ts +1013 -0
  45. package/dist/model/render/backends/webgl/NovaWebGLProgram.d.ts +33 -0
  46. package/dist/model/render/backends/webgl/NovaWebGLTargetManager.d.ts +11 -0
  47. package/dist/model/render/backends/webgl/NovaWebGLTextRenderer.d.ts +17 -0
  48. package/dist/model/render/backends/webgl/NovaWebGLTextureManager.d.ts +16 -0
  49. package/dist/model/render/compiler/NovaRenderBuilder.d.ts +176 -0
  50. package/dist/model/render/compiler/NovaRenderCommandWriter.d.ts +166 -0
  51. package/dist/model/render/compiler/NovaRenderCompiler.d.ts +48 -0
  52. package/dist/model/render/compiler/NovaRenderFrameBuilder.d.ts +59 -0
  53. package/dist/model/render/graph/NovaRenderGraph.d.ts +96 -0
  54. package/dist/model/render/graph/NovaRenderHitIndex.d.ts +54 -0
  55. package/dist/model/render/graph/nova-render-culling.d.ts +26 -0
  56. package/dist/model/render/graph/nova-render-group.d.ts +18 -0
  57. package/dist/model/render/graph/nova-render-item.d.ts +35 -0
  58. package/dist/model/render/graph/nova-render-layer.d.ts +5 -0
  59. package/dist/model/render/graph/nova-render-stream.d.ts +117 -0
  60. package/dist/model/render/orchestration/NovaRenderOrchestrator.d.ts +73 -0
  61. package/dist/model/render/policy/nova-render-policy.d.ts +45 -0
  62. package/dist/model/render/resources/NovaGlyphAtlasManager.d.ts +45 -0
  63. package/dist/model/render/resources/NovaRenderResourceCache.d.ts +30 -0
  64. package/dist/model/render/resources/NovaRenderScheduler.d.ts +33 -0
  65. package/dist/model/render/resources/NovaTextAtlasManager.d.ts +44 -0
  66. package/dist/model/render/resources/NovaTextLayoutEngine.d.ts +23 -0
  67. package/dist/model/render/resources/NovaTextureAtlasManager.d.ts +95 -0
  68. package/dist/model/render/schema/NovaRenderContext.d.ts +74 -0
  69. package/dist/model/render/schema/nova-color-parser.d.ts +18 -0
  70. package/dist/model/render/schema/nova-style-compiler.d.ts +88 -0
  71. package/dist/model/render/targets/NovaRenderTargetManager.d.ts +51 -0
  72. package/dist/model/render/targets/nova-render-target-resource.d.ts +14 -0
  73. package/dist/model/render/utils/nova-icon-rendering.d.ts +9 -0
  74. package/dist/model/runtime/app/Nova.d.ts +167 -0
  75. package/dist/model/runtime/app/NovaApp.d.ts +305 -0
  76. package/dist/model/runtime/app/createNovaRaphRuntime.d.ts +17 -0
  77. package/dist/model/runtime/assets/NovaAssetRegistry.d.ts +511 -0
  78. package/dist/model/runtime/commands/NovaCommandBus.d.ts +48 -0
  79. package/dist/model/runtime/components/NovaComponentNode.d.ts +109 -0
  80. package/dist/model/runtime/components/NovaComponentRegistry.d.ts +35 -0
  81. package/dist/model/runtime/components/NovaSchemaRegistry.d.ts +71 -0
  82. package/dist/model/runtime/components/nova-component-metadata.d.ts +90 -0
  83. package/dist/model/runtime/components/nova-component.decorator.d.ts +38 -0
  84. package/dist/model/runtime/components/nova-defined-component.d.ts +58 -0
  85. package/dist/model/runtime/context/nova-context.d.ts +5 -0
  86. package/dist/model/runtime/cursor/NovaCursorManager.d.ts +148 -0
  87. package/dist/model/runtime/debug/NovaDebug.d.ts +105 -0
  88. package/dist/model/runtime/debug/NovaMetrics.d.ts +55 -0
  89. package/dist/model/runtime/diagnostics/NovaDiagnostics_Module.d.ts +143 -0
  90. package/dist/model/runtime/diagnostics/adapters/NovaDiagnosticsBrowser_Adapter.d.ts +32 -0
  91. package/dist/model/runtime/interaction/NovaEvents.d.ts +229 -0
  92. package/dist/model/runtime/interaction/NovaHitIndex.d.ts +57 -0
  93. package/dist/model/runtime/interaction/NovaSpatialIndex.d.ts +49 -0
  94. package/dist/model/runtime/reactivity/nova-reactivity.d.ts +24 -0
  95. package/dist/model/runtime/refs/nova-ref.d.ts +61 -0
  96. package/dist/model/runtime/scene/NovaScene.d.ts +80 -0
  97. package/dist/model/runtime/scene/nova-scene-components.d.ts +87 -0
  98. package/dist/model/runtime/state/NovaStore.d.ts +27 -0
  99. package/dist/model/runtime/state/nova-store-decorators.d.ts +40 -0
  100. package/dist/model/runtime/state/nova-store-runtime.d.ts +23 -0
  101. package/dist/model/runtime/state/nova-store-tracking.d.ts +17 -0
  102. package/dist/model/runtime/sync/NovaSyncScope.d.ts +93 -0
  103. package/dist/model/runtime/sync/nova-sync-context.d.ts +2 -0
  104. package/dist/model/runtime/sync/nova-sync-ports.d.ts +5 -0
  105. package/dist/model/runtime/sync/nova-sync.types.d.ts +48 -0
  106. package/dist/model/runtime/template/NovaTemplateRuntime.d.ts +79 -0
  107. package/dist/model/runtime/tree/NovaContainer.d.ts +78 -0
  108. package/dist/model/runtime/tree/NovaNode.d.ts +626 -0
  109. package/dist/model/runtime/tree/NovaSurface.d.ts +95 -0
  110. package/dist/model/semantic/NovaSemanticService.d.ts +30 -0
  111. package/dist/model/sound/NovaSoundEngine.d.ts +134 -0
  112. package/dist/model/telemetry.d.ts +108 -0
  113. package/dist/model/text-selection/NovaTextSelectionService.d.ts +85 -0
  114. package/dist/model/text-selection/index.d.ts +2 -0
  115. package/dist/model/text-selection/nova-text-selection.types.d.ts +54 -0
  116. package/dist/model/theme/NovaGlobalThemeRegistry.d.ts +57 -0
  117. package/dist/model/theme/NovaThemeService.d.ts +83 -0
  118. package/dist/nova.js +14616 -14189
  119. package/package.json +29 -23
@@ -0,0 +1,143 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaDiagnosticsCategory, NovaDiagnosticsOptions, NovaDiagnosticsSnapshot } from '../../../domain/types/diagnostics.types';
3
+ import { NovaApp } from '../app/NovaApp';
4
+ import { NovaDiagnosticsBrowser_Adapter } from './adapters/NovaDiagnosticsBrowser_Adapter';
5
+ /**
6
+ * Описывает callbacks, которыми diagnostics управляет внешними runtime-сервисами.
7
+ */
8
+ export interface NovaDiagnosticsRuntimeHooks {
9
+ setRendererDiagnosticsEnabled: (enabled: boolean) => void;
10
+ }
11
+ /**
12
+ * Собирает diagnostics NovaApp только при включенном runtime-флаге.
13
+ */
14
+ export declare class NovaDiagnostics_Module<E extends EventList = EventList> {
15
+ private readonly _app;
16
+ private readonly _hooks;
17
+ private readonly _browserAdapter;
18
+ private _options;
19
+ private readonly _categories;
20
+ private _frameIndex;
21
+ private _frameStartedAt;
22
+ private _phaseStartedAt;
23
+ private _phaseName;
24
+ private _dirtyNodes;
25
+ private _dirtyRenderNodes;
26
+ private _lastFrame;
27
+ private _browser;
28
+ private _history;
29
+ private _browserTimerId;
30
+ private _longTaskObserver;
31
+ private _longTasks;
32
+ private _longTaskMs;
33
+ private _samplingBrowser;
34
+ private readonly _phaseDurations;
35
+ /**
36
+ * Создает diagnostics module для конкретного NovaApp.
37
+ */
38
+ constructor(_app: NovaApp<E>, _hooks: NovaDiagnosticsRuntimeHooks, _browserAdapter?: NovaDiagnosticsBrowser_Adapter);
39
+ /**
40
+ * Возвращает активность diagnostics.
41
+ */
42
+ get enabled(): boolean;
43
+ /**
44
+ * Возвращает текущие настройки diagnostics.
45
+ */
46
+ get options(): Required<NovaDiagnosticsOptions>;
47
+ /**
48
+ * Возвращает накопленную history последних snapshots.
49
+ */
50
+ get history(): Array<NovaDiagnosticsSnapshot>;
51
+ /**
52
+ * Применяет новые настройки diagnostics.
53
+ */
54
+ configure(options: NovaDiagnosticsOptions | undefined): void;
55
+ /**
56
+ * Проверяет активность категории.
57
+ */
58
+ hasCategory(category: NovaDiagnosticsCategory): boolean;
59
+ /**
60
+ * Помечает начало frame diagnostics.
61
+ */
62
+ frameStart(now?: number): void;
63
+ /**
64
+ * Помечает конец frame diagnostics и сохраняет snapshot.
65
+ */
66
+ frameEnd(now?: number): void;
67
+ /**
68
+ * Помечает начало runtime phase.
69
+ */
70
+ phaseStart(name: string, now?: number): void;
71
+ /**
72
+ * Помечает конец runtime phase.
73
+ */
74
+ phaseEnd(now?: number): void;
75
+ /**
76
+ * Сохраняет размер dirty workload для текущей Raph phase.
77
+ */
78
+ recordDirtyNodes(count: number): void;
79
+ /**
80
+ * Сохраняет размер render dirty workload для текущего frame.
81
+ */
82
+ recordDirtyRenderNodes(count: number): void;
83
+ /**
84
+ * Возвращает текущий diagnostics snapshot.
85
+ */
86
+ snapshot(now?: number): NovaDiagnosticsSnapshot;
87
+ /**
88
+ * Освобождает diagnostics timers и observers.
89
+ */
90
+ destroy(): void;
91
+ /**
92
+ * Запускает runtime collectors.
93
+ */
94
+ private _startCollectors;
95
+ /**
96
+ * Останавливает runtime collectors.
97
+ */
98
+ private _stopCollectors;
99
+ /**
100
+ * Перезапускает browser collectors после изменения настроек.
101
+ */
102
+ private _restartBrowserCollectors;
103
+ /**
104
+ * Останавливает browser collectors.
105
+ */
106
+ private _stopBrowserCollectors;
107
+ /**
108
+ * Сбрасывает mutable state, который не должен жить при выключенной диагностике.
109
+ */
110
+ private _resetRuntimeState;
111
+ /**
112
+ * Читает browser-level метрики, если runtime API доступны.
113
+ */
114
+ private _sampleBrowser;
115
+ /**
116
+ * Запускает observer long task API, если браузер его поддерживает.
117
+ */
118
+ private _startLongTaskObserver;
119
+ /**
120
+ * Собирает runtime snapshot.
121
+ */
122
+ private _collectRuntime;
123
+ /**
124
+ * Собирает render snapshot по последним surface metrics.
125
+ */
126
+ private _collectRender;
127
+ /**
128
+ * Собирает resource snapshot по расчетным ресурсам Nova.
129
+ */
130
+ private _collectResources;
131
+ /**
132
+ * Собирает input snapshot.
133
+ */
134
+ private _collectInput;
135
+ /**
136
+ * Возвращает карту доступности diagnostics данных.
137
+ */
138
+ private _collectAvailability;
139
+ /**
140
+ * Нормализует options diagnostics.
141
+ */
142
+ private _resolveOptions;
143
+ }
@@ -0,0 +1,32 @@
1
+ /** Описывает browser memory API Chromium. */
2
+ export interface BrowserPerformanceMemory {
3
+ usedJSHeapSize: number;
4
+ totalJSHeapSize?: number;
5
+ jsHeapSizeLimit?: number;
6
+ }
7
+ /** Описывает расширенный Performance API для browser diagnostics. */
8
+ export interface DiagnosticsPerformance extends Performance {
9
+ memory?: BrowserPerformanceMemory;
10
+ measureUserAgentSpecificMemory?: () => Promise<{
11
+ bytes: number;
12
+ }>;
13
+ }
14
+ /** Изолирует browser observability APIs Nova diagnostics. */
15
+ export declare class NovaDiagnosticsBrowser_Adapter {
16
+ /** Возвращает monotonic browser timestamp с безопасным fallback. */
17
+ now(): number;
18
+ /** Возвращает доступный Performance API. */
19
+ performance(): DiagnosticsPerformance | undefined;
20
+ /** Снимает DOM snapshot без передачи Document в модуль. */
21
+ sampleDom(): {
22
+ domNodes: number;
23
+ documents: number;
24
+ frames: number;
25
+ } | null;
26
+ /** Подключает long-task observer, если platform API доступен. */
27
+ observeLongTasks(onEntry: (duration: number) => void): PerformanceObserver | null;
28
+ /** Показывает доступность DOM observability. */
29
+ hasDom(): boolean;
30
+ /** Показывает доступность long-task observability. */
31
+ hasLongTaskObserver(): boolean;
32
+ }
@@ -0,0 +1,229 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaNodeEventHandlers } from '../../../domain/types/events.types';
3
+ import { NovaHitTestMode } from '../../../domain/types/renderer.types';
4
+ import { NovaApp } from '../app/NovaApp';
5
+ import { NovaNode } from '../tree/NovaNode';
6
+ /**
7
+ * Управляет DOM-событиями, hit-test и маршрутизацией событий к Nova nodes.
8
+ */
9
+ export declare class NovaEvents<E extends EventList> {
10
+ readonly app: NovaApp<E>;
11
+ interactiveNodes: Set<NovaNode<E>>;
12
+ canvasLifecycleNodes: Set<NovaNode<E>>;
13
+ hoveredNodes: Set<NovaNode<E>>;
14
+ draggedNodes: Set<NovaNode<E>>;
15
+ selectedNodes: Set<NovaNode<E>>;
16
+ focusedNode: NovaNode<E> | null;
17
+ pointerCaptureNode: NovaNode<E> | null;
18
+ readonly selectedNodesByScope: Map<string, Set<NovaNode<E>>>;
19
+ readonly focusedNodesByScope: Map<string, NovaNode<E> | null>;
20
+ hitTestMode: NovaHitTestMode;
21
+ lastHitTestCandidates: number;
22
+ lastHitTestMode: NovaHitTestMode;
23
+ isDragging: boolean;
24
+ isDraggingEmitted: boolean;
25
+ lastClickTime: number;
26
+ clickTimeout: number | null;
27
+ startMouseX: number;
28
+ startMouseY: number;
29
+ lastMouseX: number;
30
+ lastMouseY: number;
31
+ mouseX: number;
32
+ mouseY: number;
33
+ clickTimeoutMs: number;
34
+ private _mouseMoveQueued;
35
+ private _lastMouseMoveEvent;
36
+ private readonly _spatialIndex;
37
+ private readonly _spatialDirtyNodes;
38
+ private readonly _pointerCaptureNodes;
39
+ private readonly _pointerStates;
40
+ private _spatialFullDirty;
41
+ private _activePointerId;
42
+ /**
43
+ * Создает instance и подготавливает внутреннее состояние.
44
+ */
45
+ constructor(app: NovaApp<E>);
46
+ /**
47
+ * Сбрасывает внутреннее состояние к начальному виду.
48
+ */
49
+ reset(): void;
50
+ /**
51
+ * Помечает spatial dirty.
52
+ */
53
+ markSpatialDirty(node?: NovaNode<E>, includeChildren?: boolean): void;
54
+ /**
55
+ * Удаляет node references.
56
+ */
57
+ removeNodeReferences(node: NovaNode<E>): void;
58
+ /**
59
+ * Регистрирует interactive node и синхронизирует производные event indexes.
60
+ */
61
+ registerInteractiveNode(node: NovaNode<E>): void;
62
+ /**
63
+ * Возвращает фактическую policy spatial hit-test индекса.
64
+ */
65
+ get hitTestIndexPolicy(): 'rbush';
66
+ /**
67
+ * Возвращает количество node в spatial hit-test индексе.
68
+ */
69
+ get hitTestIndexedNodeCount(): number;
70
+ /**
71
+ * Выполняет внутреннюю операцию handle.
72
+ */
73
+ handle(type: keyof NovaNodeEventHandlers, event: Event): boolean;
74
+ /**
75
+ * Возвращает canvas mouse position.
76
+ */
77
+ getCanvasMousePosition(event: MouseEvent): {
78
+ x: number;
79
+ y: number;
80
+ };
81
+ /**
82
+ * Выполняет внутреннюю операцию hit test.
83
+ */
84
+ hitTest(x: number, y: number): NovaNode<E> | null;
85
+ /**
86
+ * Обновляет pointer capture.
87
+ */
88
+ setPointerCapture(node: NovaNode<E>, event?: MouseEvent): void;
89
+ /**
90
+ * Выполняет внутреннюю операцию release pointer capture.
91
+ */
92
+ releasePointerCapture(node?: NovaNode<E>, event?: MouseEvent): void;
93
+ /**
94
+ * Проверяет наличие pointer capture.
95
+ */
96
+ hasPointerCapture(node: NovaNode<E>, event?: MouseEvent): boolean;
97
+ /**
98
+ * Выполняет внутреннюю операцию focus.
99
+ */
100
+ focus(node: NovaNode<E> | null, event?: Event, scope?: string): void;
101
+ /**
102
+ * Выполняет внутреннюю операцию blur.
103
+ */
104
+ blur(node?: NovaNode<E>, event?: Event, scope?: string): void;
105
+ /**
106
+ * Проверяет focused.
107
+ */
108
+ isFocused(node: NovaNode<E>, scope?: string): boolean;
109
+ /**
110
+ * Выполняет внутреннюю операцию select.
111
+ */
112
+ select(node: NovaNode<E>, options?: {
113
+ append?: boolean;
114
+ toggle?: boolean;
115
+ scope?: string;
116
+ }, event?: Event): void;
117
+ /**
118
+ * Выполняет внутреннюю операцию deselect.
119
+ */
120
+ deselect(node: NovaNode<E>, event?: Event, scope?: string): void;
121
+ /**
122
+ * Очищает selection.
123
+ */
124
+ clearSelection(event?: Event, scope?: string): void;
125
+ /**
126
+ * Проверяет selected.
127
+ */
128
+ isSelected(node: NovaNode<E>, scope?: string): boolean;
129
+ /**
130
+ * Возвращает selection scope.
131
+ */
132
+ private _getSelectionScope;
133
+ /**
134
+ * Возвращает focused scope.
135
+ */
136
+ private _getFocusedScope;
137
+ /**
138
+ * Возвращает hit candidates.
139
+ */
140
+ private _getHitCandidates;
141
+ /**
142
+ * Синхронизирует dirty nodes с spatial hit-test индексом.
143
+ */
144
+ private _syncSpatialIndex;
145
+ /**
146
+ * Возвращает pointer id.
147
+ */
148
+ private _getPointerId;
149
+ /**
150
+ * Возвращает pointer state.
151
+ */
152
+ private _getPointerState;
153
+ /**
154
+ * Выполняет внутреннюю операцию sync pointer state.
155
+ */
156
+ private _syncPointerState;
157
+ /**
158
+ * Возвращает captured node.
159
+ */
160
+ private _getCapturedNode;
161
+ /**
162
+ * Выполняет внутреннюю операцию first captured node.
163
+ */
164
+ private _firstCapturedNode;
165
+ /**
166
+ * Выполняет внутреннюю операцию dispatch pointer.
167
+ */
168
+ private _dispatchPointer;
169
+ /**
170
+ * Выполняет внутреннюю операцию build event path.
171
+ */
172
+ private _buildEventPath;
173
+ /**
174
+ * Выполняет внутреннюю операцию call handler.
175
+ */
176
+ private _callHandler;
177
+ /**
178
+ * Выполняет внутреннюю операцию call drag handler.
179
+ */
180
+ private _callDragHandler;
181
+ /**
182
+ * Создает drag meta.
183
+ */
184
+ private _createDragMeta;
185
+ /**
186
+ * Обрабатывает событие mouse down.
187
+ */
188
+ private _onMouseDown;
189
+ /**
190
+ * Обрабатывает событие mouse move.
191
+ */
192
+ private _onMouseMove;
193
+ /**
194
+ * Выполняет внутреннюю операцию handle mouse move.
195
+ */
196
+ private _handleMouseMove;
197
+ /**
198
+ * Обрабатывает событие mouse up.
199
+ */
200
+ private _onMouseUp;
201
+ /**
202
+ * Обрабатывает событие wheel.
203
+ */
204
+ private _onWheel;
205
+ /**
206
+ * Обрабатывает событие context menu.
207
+ */
208
+ private _onContextMenu;
209
+ /**
210
+ * Обрабатывает событие key down.
211
+ */
212
+ private _onKeyDown;
213
+ /**
214
+ * Обрабатывает событие key up.
215
+ */
216
+ private _onKeyUp;
217
+ /**
218
+ * Обрабатывает событие canvas enter.
219
+ */
220
+ private _onCanvasEnter;
221
+ /**
222
+ * Обрабатывает событие canvas leave.
223
+ */
224
+ private _onCanvasLeave;
225
+ /**
226
+ * Выполняет внутреннюю операцию dispatch keyboard.
227
+ */
228
+ private _dispatchKeyboard;
229
+ }
@@ -0,0 +1,57 @@
1
+ import { NovaBounds } from '../../../domain/types/renderer.types';
2
+ /**
3
+ * Описывает options общего hit-test индекса.
4
+ */
5
+ export interface NovaHitIndexOptions<T> {
6
+ getBounds: (item: T) => NovaBounds;
7
+ isIndexable?: (item: T) => boolean;
8
+ }
9
+ /**
10
+ * Хранит RBush-backed индекс для point и bounds queries.
11
+ */
12
+ export declare class NovaHitIndex<T extends object> {
13
+ private readonly _options;
14
+ private readonly _tree;
15
+ private readonly _records;
16
+ private _lastQueryCandidateCount;
17
+ /**
18
+ * Создает instance и подготавливает внутреннее состояние.
19
+ */
20
+ constructor(_options: NovaHitIndexOptions<T>);
21
+ /**
22
+ * Полностью пересобирает индекс.
23
+ */
24
+ rebuild(items: Iterable<T>): void;
25
+ /**
26
+ * Выполняет point query.
27
+ */
28
+ queryPoint(x: number, y: number): Array<T>;
29
+ /**
30
+ * Выполняет bounds query.
31
+ */
32
+ queryBounds(bounds: NovaBounds): Array<T>;
33
+ /**
34
+ * Обновляет один item в индексе.
35
+ */
36
+ update(item: T): void;
37
+ /**
38
+ * Удаляет item из индекса.
39
+ */
40
+ remove(item: T): void;
41
+ /**
42
+ * Очищает индекс.
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Возвращает количество проиндексированных items.
47
+ */
48
+ get indexedNodeCount(): number;
49
+ /**
50
+ * Возвращает количество RBush candidates в последнем query.
51
+ */
52
+ get lastQueryCandidateCount(): number;
53
+ /**
54
+ * Создает RBush record для item.
55
+ */
56
+ private _createRecord;
57
+ }
@@ -0,0 +1,49 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaBounds } from '../../../domain/types/renderer.types';
3
+ import { NovaNode } from '../tree/NovaNode';
4
+ /**
5
+ * Совместимый facade над RBush-backed hit-test индексом.
6
+ */
7
+ export declare class NovaSpatialIndex<E extends EventList> {
8
+ private readonly _index;
9
+ /**
10
+ * Создает instance. cellSize сохранен только для обратной совместимости.
11
+ */
12
+ constructor(_cellSize?: number);
13
+ /**
14
+ * Выполняет внутреннюю операцию rebuild.
15
+ */
16
+ rebuild(nodes: Iterable<NovaNode<E>>): void;
17
+ /**
18
+ * Выполняет query point.
19
+ */
20
+ queryPoint(x: number, y: number): Array<NovaNode<E>>;
21
+ /**
22
+ * Выполняет query bounds.
23
+ */
24
+ queryBounds(bounds: NovaBounds): Array<NovaNode<E>>;
25
+ /**
26
+ * Очищает внутреннее состояние.
27
+ */
28
+ clear(): void;
29
+ /**
30
+ * Выполняет внутреннюю операцию update.
31
+ */
32
+ update(node: NovaNode<E>): void;
33
+ /**
34
+ * Выполняет внутреннюю операцию remove.
35
+ */
36
+ remove(node: NovaNode<E>): void;
37
+ /**
38
+ * Возвращает условный cell count для старого diagnostics API.
39
+ */
40
+ get cellCount(): number;
41
+ /**
42
+ * Возвращает indexed node count.
43
+ */
44
+ get indexedNodeCount(): number;
45
+ /**
46
+ * Возвращает количество candidates в последнем query.
47
+ */
48
+ get lastQueryCandidateCount(): number;
49
+ }
@@ -0,0 +1,24 @@
1
+ import { NovaNode } from '../tree/NovaNode';
2
+ export interface NovaTrackNodeOptions {
3
+ mode?: 'replace' | 'append';
4
+ }
5
+ export interface NovaReadableSignal<T> {
6
+ readonly value: T;
7
+ }
8
+ export interface NovaSignal<T> extends NovaReadableSignal<T> {
9
+ value: T;
10
+ }
11
+ export interface NovaComputed<T> extends NovaReadableSignal<T> {
12
+ }
13
+ /**
14
+ * Creates a mutable Nova signal.
15
+ */
16
+ export declare function createNovaSignal<T>(initialValue: T): NovaSignal<T>;
17
+ /**
18
+ * Creates a lazy Nova computed signal.
19
+ */
20
+ export declare function createNovaComputed<T>(compute: () => T): NovaComputed<T>;
21
+ /**
22
+ * Tracks signal reads performed by a NovaNode update/template pass.
23
+ */
24
+ export declare function trackNovaNode<T>(node: NovaNode<any>, callback: () => T, options?: NovaTrackNodeOptions): T;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Proxy-ref на публичный API Nova component без `.current`.
3
+ */
4
+ export type NovaRef<T extends object> = T & {
5
+ readonly $mounted: boolean;
6
+ $ready: () => Promise<T>;
7
+ };
8
+ /**
9
+ * Коллекция refs для компонентов, созданных внутри repeat/list.
10
+ */
11
+ export interface NovaRefMap<T extends object> {
12
+ get: (key: string | number) => NovaRef<T>;
13
+ has: (key: string | number) => boolean;
14
+ delete: (key: string | number) => boolean;
15
+ keys: () => IterableIterator<string>;
16
+ values: () => IterableIterator<NovaRef<T>>;
17
+ entries: () => IterableIterator<[string, NovaRef<T>]>;
18
+ readonly size: number;
19
+ }
20
+ /**
21
+ * Scope refs, который передается template runtime.
22
+ */
23
+ export interface NovaScope {
24
+ refs: Record<string, NovaRef<any> | NovaRefMap<any>>;
25
+ }
26
+ /**
27
+ * Создает пустой scope refs.
28
+ */
29
+ export declare function createNovaScope(input?: Partial<NovaScope>): NovaScope;
30
+ /**
31
+ * Создает proxy-ref для component API.
32
+ */
33
+ export declare function createNovaRef<T extends object>(name?: string): NovaRef<T>;
34
+ /**
35
+ * Создает map refs для keyed template nodes.
36
+ */
37
+ export declare function createNovaRefMap<T extends object>(): NovaRefMap<T>;
38
+ /**
39
+ * Проверяет, является ли value обычным NovaRef.
40
+ */
41
+ export declare function isNovaRef(value: unknown): value is NovaRef<any>;
42
+ /**
43
+ * Проверяет, является ли value NovaRefMap.
44
+ */
45
+ export declare function isNovaRefMap(value: unknown): value is NovaRefMap<any>;
46
+ /**
47
+ * Привязывает API к ref.
48
+ */
49
+ export declare function bindNovaRef<T extends object>(ref: NovaRef<T>, api: T): void;
50
+ /**
51
+ * Отвязывает API от ref.
52
+ */
53
+ export declare function unbindNovaRef<T extends object>(ref: NovaRef<T>, api?: T): void;
54
+ /**
55
+ * Привязывает API к ref map entry.
56
+ */
57
+ export declare function bindNovaRefMap<T extends object>(refMap: NovaRefMap<T>, key: string | number, api: T): void;
58
+ /**
59
+ * Отвязывает API от ref map entry.
60
+ */
61
+ export declare function unbindNovaRefMap<T extends object>(refMap: NovaRefMap<T>, key: string | number, api?: T): void;
@@ -0,0 +1,80 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaLifecycleState } from '../../../domain/types/renderer.types';
3
+ import { NovaApp } from '../app/NovaApp';
4
+ import { NovaNode } from '../tree/NovaNode';
5
+ /**
6
+ * Описывает монтируемую сцену Nova и управляет ее жизненным циклом.
7
+ */
8
+ export declare class NovaScene<E extends EventList> {
9
+ protected readonly app: NovaApp<E>;
10
+ private readonly _roots;
11
+ private _state;
12
+ /**
13
+ * Создает instance и подготавливает внутреннее состояние.
14
+ */
15
+ constructor(app: NovaApp<E>);
16
+ /**
17
+ * Выполняет внутреннюю операцию mount.
18
+ */
19
+ mount(): void;
20
+ /**
21
+ * Выполняет внутреннюю операцию pause.
22
+ */
23
+ pause(): void;
24
+ /**
25
+ * Выполняет внутреннюю операцию resume.
26
+ */
27
+ resume(): void;
28
+ /**
29
+ * Выполняет внутреннюю операцию unmount.
30
+ */
31
+ unmount(): void;
32
+ /**
33
+ * Освобождает runtime resources и снимает связанные ссылки.
34
+ */
35
+ destroy(): void;
36
+ /**
37
+ * Добавляет root.
38
+ */
39
+ protected addRoot<T extends NovaNode<E>>(root: T): T;
40
+ /**
41
+ * Удаляет root.
42
+ */
43
+ protected removeRoot(root: NovaNode<E>): void;
44
+ /**
45
+ * Синхронизирует tracked roots после внешнего reconcile-прохода.
46
+ */
47
+ protected setRoots(roots: ReadonlyArray<NovaNode<E>>): void;
48
+ /**
49
+ * Возвращает текущие tracked roots для scene-specific lifecycle hooks.
50
+ */
51
+ protected get roots(): ReadonlyArray<NovaNode<E>>;
52
+ /**
53
+ * Обрабатывает событие mount.
54
+ */
55
+ protected onMount(): void;
56
+ /**
57
+ * Обрабатывает событие pause.
58
+ */
59
+ protected onPause(): void;
60
+ /**
61
+ * Обрабатывает событие resume.
62
+ */
63
+ protected onResume(): void;
64
+ /**
65
+ * Обрабатывает событие unmount.
66
+ */
67
+ protected onUnmount(): void;
68
+ /**
69
+ * Обрабатывает событие destroy.
70
+ */
71
+ protected onDestroy(): void;
72
+ /**
73
+ * Возвращает state.
74
+ */
75
+ get state(): NovaLifecycleState;
76
+ /**
77
+ * Возвращает root count.
78
+ */
79
+ get rootCount(): number;
80
+ }