@endge/nova 0.13.6 → 0.13.11
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/dist/domain/constants/nova-phase.d.ts +16 -0
- package/dist/domain/types/base.types.d.ts +177 -0
- package/dist/domain/types/component.types.d.ts +156 -0
- package/dist/domain/types/context.types.d.ts +31 -0
- package/dist/domain/types/cursor.types.d.ts +89 -0
- package/dist/domain/types/diagnostics.types.d.ts +148 -0
- package/dist/domain/types/events.types.d.ts +85 -0
- package/dist/domain/types/export.types.d.ts +27 -0
- package/dist/domain/types/hit-test.types.d.ts +16 -0
- package/dist/domain/types/motion.types.d.ts +118 -0
- package/dist/domain/types/renderer.types.d.ts +607 -0
- package/dist/domain/types/rendering/index.d.ts +559 -0
- package/dist/domain/types/semantic.types.d.ts +69 -0
- package/dist/domain/types/sound.types.d.ts +84 -0
- package/dist/domain/types/theme.types.d.ts +53 -0
- package/dist/domain/utils/bounds.d.ts +34 -0
- package/dist/domain/utils/schemaBounds.d.ts +10 -0
- package/dist/index.d.ts +82 -8919
- package/dist/model/input/NovaCaretBlinkController.d.ts +35 -0
- package/dist/model/input/NovaClipboardService.d.ts +18 -0
- package/dist/model/input/NovaInputProxy_Adapter.d.ts +61 -0
- package/dist/model/input/NovaInputValidationController.d.ts +46 -0
- package/dist/model/input/NovaTextInputController.d.ts +126 -0
- package/dist/model/input/NovaTextLayoutEngine.d.ts +31 -0
- package/dist/model/input/index.d.ts +7 -0
- package/dist/model/input/nova-input.types.d.ts +137 -0
- package/dist/model/motion/NovaMotionEngine.d.ts +152 -0
- package/dist/model/motion/nova-motion-easing.d.ts +13 -0
- package/dist/model/motion/nova-motion-interpolation.d.ts +19 -0
- package/dist/model/motion/nova-motion-presets.d.ts +288 -0
- package/dist/model/motion/nova-motion-timeline.d.ts +5 -0
- package/dist/model/platform/NovaCanvas.d.ts +112 -0
- package/dist/model/platform/NovaGraphics.d.ts +32 -0
- package/dist/model/render/backends/canvas2d/NovaCanvas2DTargetManager.d.ts +29 -0
- package/dist/model/render/backends/canvas2d/NovaRenderer2D.d.ts +238 -0
- package/dist/model/render/backends/nova-render-backend-factory.d.ts +10 -0
- package/dist/model/render/backends/nova-render-backend.d.ts +16 -0
- package/dist/model/render/backends/webgl/NovaGpuBufferArena.d.ts +76 -0
- package/dist/model/render/backends/webgl/NovaRendererWebGL.d.ts +154 -0
- package/dist/model/render/backends/webgl/NovaWebGLBatcher.d.ts +17 -0
- package/dist/model/render/backends/webgl/NovaWebGLBuffer.d.ts +19 -0
- package/dist/model/render/backends/webgl/NovaWebGLDevice.d.ts +24 -0
- package/dist/model/render/backends/webgl/NovaWebGLDiagnostics.d.ts +29 -0
- package/dist/model/render/backends/webgl/NovaWebGLFrameRenderer.d.ts +1013 -0
- package/dist/model/render/backends/webgl/NovaWebGLProgram.d.ts +33 -0
- package/dist/model/render/backends/webgl/NovaWebGLTargetManager.d.ts +11 -0
- package/dist/model/render/backends/webgl/NovaWebGLTextRenderer.d.ts +17 -0
- package/dist/model/render/backends/webgl/NovaWebGLTextureManager.d.ts +16 -0
- package/dist/model/render/compiler/NovaRenderBuilder.d.ts +176 -0
- package/dist/model/render/compiler/NovaRenderCommandWriter.d.ts +166 -0
- package/dist/model/render/compiler/NovaRenderCompiler.d.ts +48 -0
- package/dist/model/render/compiler/NovaRenderFrameBuilder.d.ts +59 -0
- package/dist/model/render/graph/NovaRenderGraph.d.ts +96 -0
- package/dist/model/render/graph/NovaRenderHitIndex.d.ts +54 -0
- package/dist/model/render/graph/nova-render-culling.d.ts +26 -0
- package/dist/model/render/graph/nova-render-group.d.ts +18 -0
- package/dist/model/render/graph/nova-render-item.d.ts +35 -0
- package/dist/model/render/graph/nova-render-layer.d.ts +5 -0
- package/dist/model/render/graph/nova-render-stream.d.ts +117 -0
- package/dist/model/render/orchestration/NovaRenderOrchestrator.d.ts +73 -0
- package/dist/model/render/policy/nova-render-policy.d.ts +45 -0
- package/dist/model/render/resources/NovaGlyphAtlasManager.d.ts +45 -0
- package/dist/model/render/resources/NovaRenderResourceCache.d.ts +30 -0
- package/dist/model/render/resources/NovaRenderScheduler.d.ts +33 -0
- package/dist/model/render/resources/NovaTextAtlasManager.d.ts +44 -0
- package/dist/model/render/resources/NovaTextLayoutEngine.d.ts +23 -0
- package/dist/model/render/resources/NovaTextureAtlasManager.d.ts +95 -0
- package/dist/model/render/schema/NovaRenderContext.d.ts +74 -0
- package/dist/model/render/schema/nova-color-parser.d.ts +18 -0
- package/dist/model/render/schema/nova-style-compiler.d.ts +88 -0
- package/dist/model/render/targets/NovaRenderTargetManager.d.ts +51 -0
- package/dist/model/render/targets/nova-render-target-resource.d.ts +14 -0
- package/dist/model/render/utils/nova-icon-rendering.d.ts +9 -0
- package/dist/model/runtime/app/Nova.d.ts +167 -0
- package/dist/model/runtime/app/NovaApp.d.ts +305 -0
- package/dist/model/runtime/app/createNovaRaphRuntime.d.ts +17 -0
- package/dist/model/runtime/assets/NovaAssetRegistry.d.ts +511 -0
- package/dist/model/runtime/commands/NovaCommandBus.d.ts +48 -0
- package/dist/model/runtime/components/NovaComponentNode.d.ts +109 -0
- package/dist/model/runtime/components/NovaComponentRegistry.d.ts +35 -0
- package/dist/model/runtime/components/NovaSchemaRegistry.d.ts +71 -0
- package/dist/model/runtime/components/nova-component-metadata.d.ts +90 -0
- package/dist/model/runtime/components/nova-component.decorator.d.ts +38 -0
- package/dist/model/runtime/components/nova-defined-component.d.ts +58 -0
- package/dist/model/runtime/context/nova-context.d.ts +5 -0
- package/dist/model/runtime/cursor/NovaCursorManager.d.ts +148 -0
- package/dist/model/runtime/debug/NovaDebug.d.ts +105 -0
- package/dist/model/runtime/debug/NovaMetrics.d.ts +55 -0
- package/dist/model/runtime/diagnostics/NovaDiagnostics_Module.d.ts +143 -0
- package/dist/model/runtime/diagnostics/adapters/NovaDiagnosticsBrowser_Adapter.d.ts +32 -0
- package/dist/model/runtime/interaction/NovaEvents.d.ts +229 -0
- package/dist/model/runtime/interaction/NovaHitIndex.d.ts +57 -0
- package/dist/model/runtime/interaction/NovaSpatialIndex.d.ts +49 -0
- package/dist/model/runtime/reactivity/nova-reactivity.d.ts +24 -0
- package/dist/model/runtime/refs/nova-ref.d.ts +61 -0
- package/dist/model/runtime/scene/NovaScene.d.ts +80 -0
- package/dist/model/runtime/scene/nova-scene-components.d.ts +88 -0
- package/dist/model/runtime/state/NovaStore.d.ts +27 -0
- package/dist/model/runtime/state/nova-store-decorators.d.ts +38 -0
- package/dist/model/runtime/state/nova-store-runtime.d.ts +23 -0
- package/dist/model/runtime/state/nova-store-tracking.d.ts +17 -0
- package/dist/model/runtime/sync/NovaSyncScope.d.ts +93 -0
- package/dist/model/runtime/sync/nova-sync-context.d.ts +2 -0
- package/dist/model/runtime/sync/nova-sync-ports.d.ts +5 -0
- package/dist/model/runtime/sync/nova-sync.types.d.ts +48 -0
- package/dist/model/runtime/template/NovaTemplateRuntime.d.ts +79 -0
- package/dist/model/runtime/tree/NovaContainer.d.ts +78 -0
- package/dist/model/runtime/tree/NovaNode.d.ts +626 -0
- package/dist/model/runtime/tree/NovaSurface.d.ts +95 -0
- package/dist/model/semantic/NovaSemanticService.d.ts +30 -0
- package/dist/model/sound/NovaSoundEngine.d.ts +134 -0
- package/dist/model/telemetry.d.ts +108 -0
- package/dist/model/text-selection/NovaTextSelectionService.d.ts +85 -0
- package/dist/model/text-selection/index.d.ts +2 -0
- package/dist/model/text-selection/nova-text-selection.types.d.ts +54 -0
- package/dist/model/theme/NovaGlobalThemeRegistry.d.ts +57 -0
- package/dist/model/theme/NovaThemeService.d.ts +83 -0
- package/dist/nova.js +14489 -14069
- package/package.json +29 -23
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
import { mat3 } from 'gl-matrix';
|
|
2
|
+
import { NovaBounds, NovaIconBatch, NovaParticleBatch, NovaRectBatch, NovaSchemaItem, NovaSemanticScopeKind, NovaStripeRectBatch, NovaTextBatch, NovaTextRenderMode, NovaTimeRangeSegmentBatch, RendererType } from '../renderer.types';
|
|
3
|
+
/**
|
|
4
|
+
* Описывает тип NovaRenderLayerId.
|
|
5
|
+
*/
|
|
6
|
+
export type NovaRenderLayerId = 'main' | 'overlay' | 'selection' | 'drag-preview' | 'debug' | string;
|
|
7
|
+
/**
|
|
8
|
+
* Описывает тип NovaRenderTargetId.
|
|
9
|
+
*/
|
|
10
|
+
export type NovaRenderTargetId = string;
|
|
11
|
+
/**
|
|
12
|
+
* Описывает тип NovaRenderGroupId.
|
|
13
|
+
*/
|
|
14
|
+
export type NovaRenderGroupId = string;
|
|
15
|
+
/**
|
|
16
|
+
* Описывает тип NovaRenderItemId.
|
|
17
|
+
*/
|
|
18
|
+
export type NovaRenderItemId = string;
|
|
19
|
+
/**
|
|
20
|
+
* Описывает тип NovaRenderHandleId.
|
|
21
|
+
*/
|
|
22
|
+
export type NovaRenderHandleId = string;
|
|
23
|
+
/**
|
|
24
|
+
* Описывает тип NovaRenderStreamId.
|
|
25
|
+
*/
|
|
26
|
+
export type NovaRenderStreamId = string;
|
|
27
|
+
/**
|
|
28
|
+
* Описывает тип NovaRenderPolicyGroup.
|
|
29
|
+
*/
|
|
30
|
+
export type NovaRenderPolicyGroup = 'auto' | 'always' | 'never';
|
|
31
|
+
/**
|
|
32
|
+
* Описывает тип NovaRenderPolicyCache.
|
|
33
|
+
*/
|
|
34
|
+
export type NovaRenderPolicyCache = 'auto' | 'texture' | 'none';
|
|
35
|
+
/**
|
|
36
|
+
* Описывает тип NovaRenderPolicyTextQuality.
|
|
37
|
+
*/
|
|
38
|
+
export type NovaRenderPolicyTextQuality = 'auto' | 'crisp' | 'performance';
|
|
39
|
+
/**
|
|
40
|
+
* Описывает тип NovaRenderPolicyUpdateMode.
|
|
41
|
+
*/
|
|
42
|
+
export type NovaRenderPolicyUpdateMode = 'static' | 'dynamic' | 'stream';
|
|
43
|
+
/**
|
|
44
|
+
* Описывает тип NovaRenderPolicyLayer.
|
|
45
|
+
*/
|
|
46
|
+
export type NovaRenderPolicyLayer = 'auto' | 'main' | 'overlay' | 'debug' | NovaRenderLayerId;
|
|
47
|
+
/**
|
|
48
|
+
* Описывает контракт NovaRenderPolicy.
|
|
49
|
+
*/
|
|
50
|
+
export interface NovaRenderPolicy {
|
|
51
|
+
group: NovaRenderPolicyGroup;
|
|
52
|
+
cache: NovaRenderPolicyCache;
|
|
53
|
+
textQuality: NovaRenderPolicyTextQuality;
|
|
54
|
+
updateMode: NovaRenderPolicyUpdateMode;
|
|
55
|
+
layer: NovaRenderPolicyLayer;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Описывает тип NovaRenderPolicyInput.
|
|
59
|
+
*/
|
|
60
|
+
export type NovaRenderPolicyInput = Partial<NovaRenderPolicy>;
|
|
61
|
+
/**
|
|
62
|
+
* Описывает контракт NovaRendererBatchingConfig.
|
|
63
|
+
*/
|
|
64
|
+
export interface NovaRendererBatchingConfig {
|
|
65
|
+
maxBatchSize: number;
|
|
66
|
+
semanticScopes: 'off' | 'safe' | 'manual';
|
|
67
|
+
maxDrawCallsWarning: number;
|
|
68
|
+
plainRectStream: boolean;
|
|
69
|
+
roundedRectStream: boolean;
|
|
70
|
+
fullUploadDirtyRatio: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Описывает контракт NovaRendererTextConfig.
|
|
74
|
+
*/
|
|
75
|
+
export interface NovaRendererTextConfig {
|
|
76
|
+
quality: 'performance' | 'balanced' | 'quality';
|
|
77
|
+
mode: NovaTextRenderMode;
|
|
78
|
+
modes: NovaRendererTextZoneModes;
|
|
79
|
+
interaction: NovaRendererTextInteractionConfig;
|
|
80
|
+
lod: NovaRendererTextLodConfig;
|
|
81
|
+
glyphs: NovaRendererTextGlyphConfig;
|
|
82
|
+
sdf: NovaRendererTextSdfConfig;
|
|
83
|
+
maxAtlasMemoryMB: number;
|
|
84
|
+
maxGlyphAtlasMemoryMB: number;
|
|
85
|
+
zoomBuckets: Array<number>;
|
|
86
|
+
dynamicBuckets: boolean;
|
|
87
|
+
prewarmAdjacentBuckets: boolean;
|
|
88
|
+
rasterBudgetMs: number;
|
|
89
|
+
bucketThrottleMs: number;
|
|
90
|
+
visibleOnlyRaster: boolean;
|
|
91
|
+
fallbackPreviousScale: boolean;
|
|
92
|
+
tightRunAtlas: boolean;
|
|
93
|
+
minRasterScale: number;
|
|
94
|
+
maxRasterScale: number;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Описывает режимы качества текста во время пользовательского interaction.
|
|
98
|
+
*/
|
|
99
|
+
export interface NovaRendererTextInteractionConfig {
|
|
100
|
+
mode: 'stable-quality' | 'balanced' | 'performance';
|
|
101
|
+
idleMs: number;
|
|
102
|
+
rasterBudgetMs: number;
|
|
103
|
+
maxRasterScale: number;
|
|
104
|
+
freezeBuckets: boolean;
|
|
105
|
+
prewarm: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Описывает screen-space LOD для массового текста.
|
|
109
|
+
*/
|
|
110
|
+
export interface NovaRendererTextLodConfig {
|
|
111
|
+
enabled: boolean;
|
|
112
|
+
minScreenWidthPx: number;
|
|
113
|
+
minScreenHeightPx: number;
|
|
114
|
+
maxVisibleRuns: number;
|
|
115
|
+
hysteresisPx: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Описывает кэши retained glyph pipeline.
|
|
119
|
+
*/
|
|
120
|
+
export interface NovaRendererTextGlyphConfig {
|
|
121
|
+
retainedBatches: boolean;
|
|
122
|
+
shapeCacheEntries: number;
|
|
123
|
+
runCacheEntries: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Описывает SDF/MSDF-путь для zoom-stable текста.
|
|
127
|
+
*/
|
|
128
|
+
export interface NovaRendererTextSdfConfig {
|
|
129
|
+
enabled: boolean;
|
|
130
|
+
pxRange: number;
|
|
131
|
+
source: 'runtime-sdf' | 'prebuilt-msdf';
|
|
132
|
+
minPaddingPx: number;
|
|
133
|
+
edgeSoftness: number;
|
|
134
|
+
prebuiltAtlas?: NovaMsdfFontAtlasConfig;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Описывает glyph metrics внутри prebuilt MSDF atlas.
|
|
138
|
+
*/
|
|
139
|
+
export interface NovaMsdfGlyphMetrics {
|
|
140
|
+
x: number;
|
|
141
|
+
y: number;
|
|
142
|
+
width: number;
|
|
143
|
+
height: number;
|
|
144
|
+
advance: number;
|
|
145
|
+
bearingX?: number;
|
|
146
|
+
bearingY?: number;
|
|
147
|
+
drawWidth?: number;
|
|
148
|
+
drawHeight?: number;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Описывает внешний MSDF font atlas.
|
|
152
|
+
*/
|
|
153
|
+
export interface NovaMsdfFontAtlasConfig {
|
|
154
|
+
texture?: unknown;
|
|
155
|
+
glyphs: Record<string, NovaMsdfGlyphMetrics>;
|
|
156
|
+
pxRange?: number;
|
|
157
|
+
fontKey?: string;
|
|
158
|
+
scale?: number;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Описывает зональные режимы текста для продуктовых canvas.
|
|
162
|
+
*/
|
|
163
|
+
export interface NovaRendererTextZoneModes {
|
|
164
|
+
timeScale: NovaTextRenderMode;
|
|
165
|
+
taskLabels: NovaTextRenderMode;
|
|
166
|
+
uiLabels: NovaTextRenderMode;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Описывает контракт NovaRendererCacheConfig.
|
|
170
|
+
*/
|
|
171
|
+
export interface NovaRendererCacheConfig {
|
|
172
|
+
maxTextureMemoryMB: number;
|
|
173
|
+
maxTextAtlasMemoryMB: number;
|
|
174
|
+
maxGlyphAtlasMemoryMB: number;
|
|
175
|
+
groupCache: 'auto' | 'off' | 'aggressive';
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Описывает контракт NovaRendererDiagnosticsConfig.
|
|
179
|
+
*/
|
|
180
|
+
export interface NovaRendererDiagnosticsConfig {
|
|
181
|
+
showBatches: boolean;
|
|
182
|
+
showDirtyRegions: boolean;
|
|
183
|
+
showAtlas: boolean;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Описывает контракт NovaRendererConfig.
|
|
187
|
+
*/
|
|
188
|
+
export interface NovaRendererConfig {
|
|
189
|
+
batching: NovaRendererBatchingConfig;
|
|
190
|
+
text: NovaRendererTextConfig;
|
|
191
|
+
cache: NovaRendererCacheConfig;
|
|
192
|
+
diagnostics: NovaRendererDiagnosticsConfig;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Описывает тип NovaRendererConfigInput.
|
|
196
|
+
*/
|
|
197
|
+
export interface NovaRendererConfigInput {
|
|
198
|
+
batching?: Partial<NovaRendererBatchingConfig>;
|
|
199
|
+
text?: Partial<Omit<NovaRendererTextConfig, 'modes' | 'interaction' | 'lod' | 'glyphs' | 'sdf'>> & {
|
|
200
|
+
modes?: Partial<NovaRendererTextZoneModes>;
|
|
201
|
+
interaction?: Partial<NovaRendererTextInteractionConfig>;
|
|
202
|
+
lod?: Partial<NovaRendererTextLodConfig>;
|
|
203
|
+
glyphs?: Partial<NovaRendererTextGlyphConfig>;
|
|
204
|
+
sdf?: Partial<NovaRendererTextSdfConfig>;
|
|
205
|
+
};
|
|
206
|
+
cache?: Partial<NovaRendererCacheConfig>;
|
|
207
|
+
diagnostics?: Partial<NovaRendererDiagnosticsConfig>;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Описывает контракт NovaRenderDirtyFlags.
|
|
211
|
+
*/
|
|
212
|
+
export interface NovaRenderDirtyFlags {
|
|
213
|
+
transform: boolean;
|
|
214
|
+
layout: boolean;
|
|
215
|
+
paint: boolean;
|
|
216
|
+
children: boolean;
|
|
217
|
+
resource: boolean;
|
|
218
|
+
cache: boolean;
|
|
219
|
+
visibility: boolean;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Описывает контракт NovaRenderVersions.
|
|
223
|
+
*/
|
|
224
|
+
export interface NovaRenderVersions {
|
|
225
|
+
transform: number;
|
|
226
|
+
layout: number;
|
|
227
|
+
paint: number;
|
|
228
|
+
children: number;
|
|
229
|
+
resource: number;
|
|
230
|
+
cache: number;
|
|
231
|
+
visibility: number;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Описывает контракт NovaRenderViewport.
|
|
235
|
+
*/
|
|
236
|
+
export interface NovaRenderViewport {
|
|
237
|
+
x: number;
|
|
238
|
+
y: number;
|
|
239
|
+
width: number;
|
|
240
|
+
height: number;
|
|
241
|
+
dpr: number;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Описывает контракт NovaRenderClip.
|
|
245
|
+
*/
|
|
246
|
+
export interface NovaRenderClip {
|
|
247
|
+
x: number;
|
|
248
|
+
y: number;
|
|
249
|
+
width: number;
|
|
250
|
+
height: number;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Описывает контракт NovaRenderCachePolicy.
|
|
254
|
+
*/
|
|
255
|
+
export interface NovaRenderCachePolicy {
|
|
256
|
+
enabled: boolean;
|
|
257
|
+
mode: 'auto' | 'texture';
|
|
258
|
+
reason?: string;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Описывает тип NovaRenderTargetKind.
|
|
262
|
+
*/
|
|
263
|
+
export type NovaRenderTargetKind = 'screen' | 'texture' | 'cache' | 'effect' | 'picking' | 'debug';
|
|
264
|
+
/**
|
|
265
|
+
* Описывает контракт NovaRenderTarget.
|
|
266
|
+
*/
|
|
267
|
+
export interface NovaRenderTarget {
|
|
268
|
+
id: NovaRenderTargetId;
|
|
269
|
+
kind: NovaRenderTargetKind;
|
|
270
|
+
width: number;
|
|
271
|
+
height: number;
|
|
272
|
+
dpr: number;
|
|
273
|
+
ownerGroupId?: NovaRenderGroupId;
|
|
274
|
+
textureId?: string;
|
|
275
|
+
framebufferId?: string;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Описывает тип NovaRenderItemKind.
|
|
279
|
+
*/
|
|
280
|
+
export type NovaRenderItemKind = 'rect' | 'border' | 'line' | 'circle' | 'arc' | 'polygon' | 'text' | 'icon' | 'image' | 'nine-slice-image' | 'pattern-rect' | 'texture' | 'cached-group' | 'particle-circle' | 'particle-sprite' | 'rect-batch' | 'time-range-segment-batch' | 'stripe-batch' | 'icon-batch' | 'text-batch' | 'custom';
|
|
281
|
+
/**
|
|
282
|
+
* Описывает контракт NovaRenderItem.
|
|
283
|
+
*/
|
|
284
|
+
export interface NovaRenderItem {
|
|
285
|
+
id: NovaRenderItemId;
|
|
286
|
+
nodeId?: string;
|
|
287
|
+
groupId: NovaRenderGroupId;
|
|
288
|
+
layerId: NovaRenderLayerId;
|
|
289
|
+
kind: NovaRenderItemKind;
|
|
290
|
+
order: number;
|
|
291
|
+
batchKey: string;
|
|
292
|
+
schemaItem?: NovaSchemaItem<any>;
|
|
293
|
+
transform?: mat3;
|
|
294
|
+
clip?: NovaRenderClip | null;
|
|
295
|
+
bounds?: NovaBounds;
|
|
296
|
+
dirtyFlags?: Partial<NovaRenderDirtyFlags>;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Описывает тип NovaRenderStreamKind.
|
|
300
|
+
*/
|
|
301
|
+
export type NovaRenderStreamKind = 'plain-rect' | 'rounded-rect' | 'motion-rect' | 'border' | 'line' | 'circle' | 'arc' | 'polygon' | 'texture-quad' | 'text-run' | 'icon' | 'nine-slice-image' | 'pattern-rect' | 'cached-group' | 'particle-circle' | 'particle-sprite' | 'rect-batch' | 'time-range-segment-batch' | 'stripe-batch' | 'icon-batch' | 'text-batch';
|
|
302
|
+
/**
|
|
303
|
+
* Описывает тип NovaRenderSemanticLayer.
|
|
304
|
+
*/
|
|
305
|
+
export type NovaRenderSemanticLayer = 'background' | 'border' | 'texture' | 'text' | 'selection' | 'overlay' | 'strict';
|
|
306
|
+
/**
|
|
307
|
+
* Описывает контракт NovaRenderStreamSlot.
|
|
308
|
+
*/
|
|
309
|
+
export interface NovaRenderStreamSlot {
|
|
310
|
+
itemId: NovaRenderItemId;
|
|
311
|
+
offset: number;
|
|
312
|
+
count: number;
|
|
313
|
+
order: number;
|
|
314
|
+
batchKey: string;
|
|
315
|
+
bounds?: NovaBounds;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Описывает контракт NovaRenderStream.
|
|
319
|
+
*/
|
|
320
|
+
export interface NovaRenderStream {
|
|
321
|
+
id: NovaRenderStreamId;
|
|
322
|
+
groupId: NovaRenderGroupId;
|
|
323
|
+
kind: NovaRenderStreamKind;
|
|
324
|
+
strideFloats: number;
|
|
325
|
+
slotCapacity: number;
|
|
326
|
+
slotCount: number;
|
|
327
|
+
version: number;
|
|
328
|
+
slots: Array<NovaRenderStreamSlot>;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Описывает контракт NovaRenderBatch.
|
|
332
|
+
*/
|
|
333
|
+
export interface NovaRenderBatch {
|
|
334
|
+
id: string;
|
|
335
|
+
groupId: NovaRenderGroupId;
|
|
336
|
+
streamId: NovaRenderStreamId;
|
|
337
|
+
streamKind: NovaRenderStreamKind;
|
|
338
|
+
semanticLayer: NovaRenderSemanticLayer;
|
|
339
|
+
batchKey: string;
|
|
340
|
+
startSlot: number;
|
|
341
|
+
slotCount: number;
|
|
342
|
+
orderStart: number;
|
|
343
|
+
orderEnd: number;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Описывает контракт NovaBatchPlan.
|
|
347
|
+
*/
|
|
348
|
+
export interface NovaBatchPlan {
|
|
349
|
+
id: string;
|
|
350
|
+
groupId: NovaRenderGroupId;
|
|
351
|
+
semanticScope?: NovaSemanticScopeKind;
|
|
352
|
+
version: number;
|
|
353
|
+
batches: Array<NovaRenderBatch>;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Описывает контракт NovaRenderHandle.
|
|
357
|
+
*/
|
|
358
|
+
export interface NovaRenderHandle {
|
|
359
|
+
id: NovaRenderHandleId;
|
|
360
|
+
nodeId: string;
|
|
361
|
+
itemId: NovaRenderItemId;
|
|
362
|
+
groupId: NovaRenderGroupId;
|
|
363
|
+
layerId: NovaRenderLayerId;
|
|
364
|
+
streamId: NovaRenderStreamId;
|
|
365
|
+
streamKind: NovaRenderStreamKind;
|
|
366
|
+
offset: number;
|
|
367
|
+
count: number;
|
|
368
|
+
slotOffset?: number;
|
|
369
|
+
slotCount?: number;
|
|
370
|
+
batchKey: string;
|
|
371
|
+
versions: NovaRenderVersions;
|
|
372
|
+
resourceKey?: string;
|
|
373
|
+
localBounds?: NovaBounds;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Описывает тип NovaRenderCommandType.
|
|
377
|
+
*/
|
|
378
|
+
export type NovaRenderCommandType = 'clear' | 'save' | 'restore' | 'setTransform' | 'clip' | 'clearClip' | 'beginRenderTarget' | 'endRenderTarget' | 'drawRenderTarget' | 'drawItem' | 'drawSchemaBatch' | 'drawParticles' | 'drawRectBatch' | 'drawTimeRangeSegmentBatch' | 'drawStripeBatch' | 'drawIconBatch' | 'drawTextBatch' | 'cursor' | 'beginGroup' | 'endGroup';
|
|
379
|
+
/**
|
|
380
|
+
* Описывает контракт NovaRenderCommand.
|
|
381
|
+
*/
|
|
382
|
+
export interface NovaRenderCommand {
|
|
383
|
+
id: string;
|
|
384
|
+
type: NovaRenderCommandType;
|
|
385
|
+
order: number;
|
|
386
|
+
nodeId?: string;
|
|
387
|
+
groupId?: NovaRenderGroupId;
|
|
388
|
+
layerId?: NovaRenderLayerId;
|
|
389
|
+
itemId?: NovaRenderItemId;
|
|
390
|
+
schemaItems?: Array<NovaSchemaItem<any>>;
|
|
391
|
+
schemaMode?: 'batched' | 'ordered';
|
|
392
|
+
schemaSemanticScope?: NovaSemanticScopeKind;
|
|
393
|
+
schemaContentVersion?: number;
|
|
394
|
+
particleBatch?: NovaParticleBatch;
|
|
395
|
+
rectBatch?: NovaRectBatch;
|
|
396
|
+
timeRangeSegmentBatch?: NovaTimeRangeSegmentBatch;
|
|
397
|
+
stripeBatch?: NovaStripeRectBatch;
|
|
398
|
+
iconBatch?: NovaIconBatch;
|
|
399
|
+
textBatch?: NovaTextBatch;
|
|
400
|
+
transform?: mat3;
|
|
401
|
+
clip?: NovaRenderClip;
|
|
402
|
+
target?: NovaRenderTarget;
|
|
403
|
+
targetId?: NovaRenderTargetId;
|
|
404
|
+
x?: number;
|
|
405
|
+
y?: number;
|
|
406
|
+
width?: number;
|
|
407
|
+
height?: number;
|
|
408
|
+
cursor?: string;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Описывает контракт NovaInstructionBuffer.
|
|
412
|
+
*/
|
|
413
|
+
export interface NovaInstructionBuffer {
|
|
414
|
+
id: string;
|
|
415
|
+
version: number;
|
|
416
|
+
commands: Array<NovaRenderCommand>;
|
|
417
|
+
items: Array<NovaRenderItem>;
|
|
418
|
+
reused: boolean;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Описывает контракт NovaRenderGroup.
|
|
422
|
+
*/
|
|
423
|
+
export interface NovaRenderGroup {
|
|
424
|
+
id: NovaRenderGroupId;
|
|
425
|
+
ownerNodeId?: string;
|
|
426
|
+
parentGroupId?: NovaRenderGroupId;
|
|
427
|
+
layerId: NovaRenderLayerId;
|
|
428
|
+
transform?: mat3;
|
|
429
|
+
opacity: number;
|
|
430
|
+
clip?: NovaRenderClip;
|
|
431
|
+
cachePolicy?: NovaRenderCachePolicy;
|
|
432
|
+
dirtyFlags: NovaRenderDirtyFlags;
|
|
433
|
+
versions: NovaRenderVersions;
|
|
434
|
+
instructionBuffer: NovaInstructionBuffer;
|
|
435
|
+
renderHandlesByNodeId?: Map<string, Array<NovaRenderHandle>>;
|
|
436
|
+
streams?: Map<NovaRenderStreamId, NovaRenderStream>;
|
|
437
|
+
batchPlan?: NovaBatchPlan;
|
|
438
|
+
chunkBounds?: NovaBounds;
|
|
439
|
+
semanticScope?: NovaSemanticScopeKind;
|
|
440
|
+
cacheTargetId?: NovaRenderTargetId;
|
|
441
|
+
visible?: boolean;
|
|
442
|
+
childGroupIds: Array<NovaRenderGroupId>;
|
|
443
|
+
bounds?: NovaBounds;
|
|
444
|
+
lastCompiledVersion: number;
|
|
445
|
+
lastRenderedVersion: number;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Описывает контракт NovaRenderLayer.
|
|
449
|
+
*/
|
|
450
|
+
export interface NovaRenderLayer {
|
|
451
|
+
id: NovaRenderLayerId;
|
|
452
|
+
zIndex: number;
|
|
453
|
+
rootGroup: NovaRenderGroup;
|
|
454
|
+
targetId?: NovaRenderTargetId;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Описывает контракт NovaRenderResourceDelta.
|
|
458
|
+
*/
|
|
459
|
+
export interface NovaRenderResourceDelta {
|
|
460
|
+
texturesCreated: number;
|
|
461
|
+
texturesUpdated: number;
|
|
462
|
+
texturesEvicted: number;
|
|
463
|
+
textRunsRasterized: number;
|
|
464
|
+
bytesUploaded: number;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Описывает контракт NovaRenderMetrics.
|
|
468
|
+
*/
|
|
469
|
+
export interface NovaRenderMetrics {
|
|
470
|
+
compilerMs: number;
|
|
471
|
+
backendMs: number;
|
|
472
|
+
uploadMs: number;
|
|
473
|
+
drawMs: number;
|
|
474
|
+
drawCalls: number;
|
|
475
|
+
batches: number;
|
|
476
|
+
instances?: number;
|
|
477
|
+
uploadBytes?: number;
|
|
478
|
+
bufferDataCalls?: number;
|
|
479
|
+
bufferSubDataCalls?: number;
|
|
480
|
+
schemaResidentBatchHits?: number;
|
|
481
|
+
schemaResidentBatchMisses?: number;
|
|
482
|
+
schemaResidentBatchUploads?: number;
|
|
483
|
+
fullUploads?: number;
|
|
484
|
+
dirtyRangeCount?: number;
|
|
485
|
+
gpuBufferCapacityBytes?: number;
|
|
486
|
+
nodeRenderCalls?: number;
|
|
487
|
+
compiledGroups?: number;
|
|
488
|
+
reusedGroups?: number;
|
|
489
|
+
updatedHandles?: number;
|
|
490
|
+
dirtyStreamRanges?: number;
|
|
491
|
+
textRasterCount?: number;
|
|
492
|
+
textRasterPixels?: number;
|
|
493
|
+
textRasterBytes?: number;
|
|
494
|
+
textRasterBoxPixels?: number;
|
|
495
|
+
textRasterSavedPixels?: number;
|
|
496
|
+
textCacheHits?: number;
|
|
497
|
+
textCacheMisses?: number;
|
|
498
|
+
textRasterDeferred?: number;
|
|
499
|
+
textAtlasPages?: number;
|
|
500
|
+
effectiveTextRasterScale?: number;
|
|
501
|
+
visibleTextRuns?: number;
|
|
502
|
+
culledTextRuns?: number;
|
|
503
|
+
glyphCacheHits?: number;
|
|
504
|
+
glyphCacheMisses?: number;
|
|
505
|
+
glyphRasterCount?: number;
|
|
506
|
+
glyphAtlasPages?: number;
|
|
507
|
+
glyphQuads?: number;
|
|
508
|
+
msdfGlyphCount?: number;
|
|
509
|
+
sdfGlyphCount?: number;
|
|
510
|
+
distanceFieldGlyphQuads?: number;
|
|
511
|
+
distanceFieldDrawCalls?: number;
|
|
512
|
+
runtimeSdfGlyphCount?: number;
|
|
513
|
+
prebuiltMsdfGlyphCount?: number;
|
|
514
|
+
textRunCacheHits?: number;
|
|
515
|
+
textRunCacheMisses?: number;
|
|
516
|
+
textShapeMs?: number;
|
|
517
|
+
glyphGeometryUploads?: number;
|
|
518
|
+
textAtlasEvictions?: number;
|
|
519
|
+
glyphAtlasEvictions?: number;
|
|
520
|
+
pinnedAtlasPages?: number;
|
|
521
|
+
interactionTextMode?: 'stable-quality' | 'balanced' | 'performance';
|
|
522
|
+
lodDroppedTextRuns?: number;
|
|
523
|
+
textModeFallbacks?: number;
|
|
524
|
+
textureBatchFallbacks?: number;
|
|
525
|
+
textBucketChanges?: number;
|
|
526
|
+
textBudgetExhausted?: number;
|
|
527
|
+
visibleRectItems?: number;
|
|
528
|
+
culledRectItems?: number;
|
|
529
|
+
atlasUploads?: number;
|
|
530
|
+
renderTargetRepaints?: number;
|
|
531
|
+
renderTargetDraws?: number;
|
|
532
|
+
renderTargetAllocations?: number;
|
|
533
|
+
renderTargetBytes?: number;
|
|
534
|
+
renderTargetUploadMs?: number;
|
|
535
|
+
renderTargetTextureCount?: number;
|
|
536
|
+
uniformOnlyFrames?: number;
|
|
537
|
+
commands: number;
|
|
538
|
+
items: number;
|
|
539
|
+
groups: number;
|
|
540
|
+
textRasterMs: number;
|
|
541
|
+
atlasMemoryMB: number;
|
|
542
|
+
cachedTextureMemoryMB: number;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Описывает контракт NovaRenderFrame.
|
|
546
|
+
*/
|
|
547
|
+
export interface NovaRenderFrame {
|
|
548
|
+
id: number;
|
|
549
|
+
surfaceId: string;
|
|
550
|
+
rendererType: RendererType;
|
|
551
|
+
viewport: NovaRenderViewport;
|
|
552
|
+
layers: Array<NovaRenderLayer>;
|
|
553
|
+
targets: Array<NovaRenderTarget>;
|
|
554
|
+
groups: Array<NovaRenderGroup>;
|
|
555
|
+
items: Array<NovaRenderItem>;
|
|
556
|
+
commands: Array<NovaRenderCommand>;
|
|
557
|
+
resourceDelta: NovaRenderResourceDelta;
|
|
558
|
+
metrics: NovaRenderMetrics;
|
|
559
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { DataRect } from '@endge/utils';
|
|
2
|
+
export type NovaSemanticRole = 'application' | 'region' | 'group' | 'button' | 'chart' | 'axis' | 'grid' | 'series' | 'mark' | 'legend' | 'tooltip' | 'viewport' | 'custom';
|
|
3
|
+
export interface NovaSemanticState {
|
|
4
|
+
hovered?: boolean;
|
|
5
|
+
selected?: boolean;
|
|
6
|
+
focused?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
hidden?: boolean;
|
|
9
|
+
expanded?: boolean;
|
|
10
|
+
checked?: boolean;
|
|
11
|
+
muted?: boolean;
|
|
12
|
+
current?: boolean;
|
|
13
|
+
valueText?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface NovaSemanticSource {
|
|
16
|
+
type?: 'node' | 'schema' | 'synthetic' | 'plugin' | 'custom';
|
|
17
|
+
nodeId?: string;
|
|
18
|
+
componentId?: string;
|
|
19
|
+
part?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface NovaSemanticRegion {
|
|
22
|
+
id: string;
|
|
23
|
+
role: NovaSemanticRole;
|
|
24
|
+
label?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
scope?: string;
|
|
27
|
+
bounds?: DataRect;
|
|
28
|
+
focusable?: boolean;
|
|
29
|
+
order: number;
|
|
30
|
+
state?: NovaSemanticState;
|
|
31
|
+
source?: NovaSemanticSource;
|
|
32
|
+
data?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
export interface NovaSemanticRegisterOptions {
|
|
35
|
+
id?: string;
|
|
36
|
+
role: NovaSemanticRole;
|
|
37
|
+
label?: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
scope?: string;
|
|
40
|
+
bounds?: DataRect;
|
|
41
|
+
focusable?: boolean;
|
|
42
|
+
order?: number;
|
|
43
|
+
state?: NovaSemanticState;
|
|
44
|
+
source?: NovaSemanticSource;
|
|
45
|
+
data?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
export interface NovaSemanticQueryOptions {
|
|
48
|
+
id?: string;
|
|
49
|
+
scope?: string;
|
|
50
|
+
role?: NovaSemanticRole;
|
|
51
|
+
roles?: Array<NovaSemanticRole>;
|
|
52
|
+
focusable?: boolean;
|
|
53
|
+
includeHidden?: boolean;
|
|
54
|
+
includeDisabled?: boolean;
|
|
55
|
+
maxRegions?: number;
|
|
56
|
+
}
|
|
57
|
+
export interface NovaSemanticSnapshotOptions extends NovaSemanticQueryOptions {
|
|
58
|
+
includeData?: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface NovaSemanticSnapshot {
|
|
61
|
+
generatedAt: number;
|
|
62
|
+
regionCount: number;
|
|
63
|
+
focusedId?: string;
|
|
64
|
+
scope?: string;
|
|
65
|
+
regions: Array<NovaSemanticRegion>;
|
|
66
|
+
}
|
|
67
|
+
export interface NovaSemanticSchemaItem extends Omit<NovaSemanticRegisterOptions, 'bounds'> {
|
|
68
|
+
bounds?: DataRect;
|
|
69
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { NovaNodeEventHandlers } from './events.types';
|
|
2
|
+
/**
|
|
3
|
+
* Описывает режим unlock для браузерного audio context.
|
|
4
|
+
*/
|
|
5
|
+
export type NovaSoundUnlockMode = 'first-input' | 'manual' | 'immediate';
|
|
6
|
+
/**
|
|
7
|
+
* Описывает состояние одного sound handle.
|
|
8
|
+
*/
|
|
9
|
+
export type NovaSoundHandleState = 'idle' | 'playing' | 'stopped' | 'ended';
|
|
10
|
+
/**
|
|
11
|
+
* Описывает настройки Nova Sound Engine.
|
|
12
|
+
*/
|
|
13
|
+
export interface NovaSoundOptions {
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
muted?: boolean;
|
|
16
|
+
volume?: number;
|
|
17
|
+
maxVoices?: number;
|
|
18
|
+
unlock?: NovaSoundUnlockMode;
|
|
19
|
+
formats?: Array<string>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Описывает загружаемый sound asset.
|
|
23
|
+
*/
|
|
24
|
+
export interface NovaSoundDescriptor {
|
|
25
|
+
id: string;
|
|
26
|
+
src: string | Array<string>;
|
|
27
|
+
category?: string;
|
|
28
|
+
volume?: number;
|
|
29
|
+
loop?: boolean;
|
|
30
|
+
preload?: boolean;
|
|
31
|
+
cooldownMs?: number;
|
|
32
|
+
maxInstances?: number;
|
|
33
|
+
priority?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Описывает runtime-настройки одного playback.
|
|
37
|
+
*/
|
|
38
|
+
export interface NovaSoundPlayOptions {
|
|
39
|
+
volume?: number;
|
|
40
|
+
rate?: number;
|
|
41
|
+
pan?: number;
|
|
42
|
+
loop?: boolean;
|
|
43
|
+
dedupeKey?: string;
|
|
44
|
+
cooldownMs?: number;
|
|
45
|
+
category?: string;
|
|
46
|
+
priority?: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Описывает play/stop handle конкретного воспроизведения.
|
|
50
|
+
*/
|
|
51
|
+
export interface NovaSoundHandle {
|
|
52
|
+
readonly id: string;
|
|
53
|
+
readonly state: NovaSoundHandleState;
|
|
54
|
+
readonly ended: Promise<void>;
|
|
55
|
+
stop: () => void;
|
|
56
|
+
fadeTo: (volume: number, durationMs?: number) => void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Описывает sound cue для привязки к событиям node или UI Kit.
|
|
60
|
+
*/
|
|
61
|
+
export interface NovaSoundCueOptions extends NovaSoundPlayOptions {
|
|
62
|
+
id: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Описывает входной формат sound cue.
|
|
66
|
+
*/
|
|
67
|
+
export type NovaSoundCueInput = string | NovaSoundCueOptions;
|
|
68
|
+
/**
|
|
69
|
+
* Описывает карту событий node к sound cue.
|
|
70
|
+
*/
|
|
71
|
+
export type NovaNodeSoundMap = Partial<Record<keyof NovaNodeEventHandlers, NovaSoundCueInput>>;
|
|
72
|
+
/**
|
|
73
|
+
* Описывает статистику Sound Engine.
|
|
74
|
+
*/
|
|
75
|
+
export interface NovaSoundStats {
|
|
76
|
+
loaded: number;
|
|
77
|
+
active: number;
|
|
78
|
+
played: number;
|
|
79
|
+
skipped: number;
|
|
80
|
+
decoded: number;
|
|
81
|
+
unlocked: boolean;
|
|
82
|
+
muted: boolean;
|
|
83
|
+
volume: number;
|
|
84
|
+
}
|