@endge/nova 0.13.5 → 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.
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 +88 -0
  98. package/dist/model/runtime/state/NovaStore.d.ts +27 -0
  99. package/dist/model/runtime/state/nova-store-decorators.d.ts +38 -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 +14489 -14069
  119. package/package.json +30 -24
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Описывает контракт NovaParsedColor.
3
+ */
4
+ export interface NovaParsedColor {
5
+ r: number;
6
+ g: number;
7
+ b: number;
8
+ a: number;
9
+ packed: number;
10
+ }
11
+ /**
12
+ * Парсит nova color.
13
+ */
14
+ export declare function parseNovaColor(input: string | undefined, fallback?: number): NovaParsedColor;
15
+ /**
16
+ * Парсит nova color packed.
17
+ */
18
+ export declare function parseNovaColorPacked(input: string | undefined, fallback?: number): number;
@@ -0,0 +1,88 @@
1
+ import { NovaArc, NovaBorder, NovaCircle, NovaLine, NovaPolygon, NovaRect, NovaStylePadding, NovaText } from '../../../domain/types/renderer.types';
2
+ import { NovaParsedColor } from './nova-color-parser';
3
+ /**
4
+ * Описывает контракт NovaCompiledBoxStyle.
5
+ */
6
+ export interface NovaCompiledBoxStyle {
7
+ fill: NovaParsedColor;
8
+ opacity: number;
9
+ borderColor: NovaParsedColor;
10
+ borderWidth: number;
11
+ borderRadius: number;
12
+ dashPattern?: Array<number>;
13
+ }
14
+ /**
15
+ * Описывает контракт NovaCompiledTextStyle.
16
+ */
17
+ export interface NovaCompiledTextStyle {
18
+ color: NovaParsedColor;
19
+ opacity: number;
20
+ font: string;
21
+ fontSize: number;
22
+ lineHeight: number;
23
+ padding: Required<NovaCompiledPadding>;
24
+ horizontalAlign: 'left' | 'center' | 'right';
25
+ verticalAlign: 'top' | 'middle' | 'bottom';
26
+ overflowAlign: 'start' | 'preserve';
27
+ ellipsis: boolean;
28
+ }
29
+ /**
30
+ * Описывает контракт NovaCompiledArcStyle.
31
+ */
32
+ export interface NovaCompiledArcStyle {
33
+ color: NovaParsedColor;
34
+ width: number;
35
+ opacity: number;
36
+ lineCap: 'butt' | 'round' | 'square';
37
+ }
38
+ /**
39
+ * Описывает контракт NovaCompiledPadding.
40
+ */
41
+ export interface NovaCompiledPadding {
42
+ left: number;
43
+ right: number;
44
+ top: number;
45
+ bottom: number;
46
+ }
47
+ /**
48
+ * Компилирует nova rect style.
49
+ */
50
+ export declare function compileNovaRectStyle(rect: NovaRect): NovaCompiledBoxStyle;
51
+ /**
52
+ * Компилирует nova border style.
53
+ */
54
+ export declare function compileNovaBorderStyle(border: NovaBorder): NovaCompiledBoxStyle;
55
+ /**
56
+ * Компилирует nova circle style.
57
+ */
58
+ export declare function compileNovaCircleStyle(circle: NovaCircle): NovaCompiledBoxStyle;
59
+ /**
60
+ * Компилирует nova arc style.
61
+ */
62
+ export declare function compileNovaArcStyle(arc: NovaArc): NovaCompiledArcStyle;
63
+ /**
64
+ * Компилирует nova line style.
65
+ */
66
+ export declare function compileNovaLineStyle(line: NovaLine): {
67
+ color: NovaParsedColor;
68
+ width: number;
69
+ opacity: number;
70
+ dashPattern?: Array<number>;
71
+ };
72
+ /**
73
+ * Компилирует nova polygon style.
74
+ */
75
+ export declare function compileNovaPolygonStyle(polygon: NovaPolygon): {
76
+ fill: NovaParsedColor;
77
+ stroke: NovaParsedColor;
78
+ lineWidth: number;
79
+ opacity: number;
80
+ };
81
+ /**
82
+ * Компилирует nova text style.
83
+ */
84
+ export declare function compileNovaTextStyle(text: NovaText): NovaCompiledTextStyle;
85
+ /**
86
+ * Компилирует nova padding.
87
+ */
88
+ export declare function compileNovaPadding(padding?: NovaStylePadding): Required<NovaCompiledPadding>;
@@ -0,0 +1,51 @@
1
+ import { NovaRenderTarget, NovaRenderTargetKind } from '../../../domain/types/rendering/index';
2
+ /**
3
+ * Описывает контракт CreateNovaRenderTargetOptions.
4
+ */
5
+ export interface CreateNovaRenderTargetOptions {
6
+ id: string;
7
+ kind: NovaRenderTargetKind;
8
+ width: number;
9
+ height: number;
10
+ dpr: number;
11
+ ownerGroupId?: string;
12
+ }
13
+ /**
14
+ * Управляет allocation и lifecycle render targets.
15
+ */
16
+ export declare class NovaRenderTargetManager {
17
+ private readonly _targets;
18
+ private _memoryBytes;
19
+ /**
20
+ * Возвращает targets.
21
+ */
22
+ get targets(): Array<NovaRenderTarget>;
23
+ /**
24
+ * Возвращает memory bytes.
25
+ */
26
+ get memoryBytes(): number;
27
+ /**
28
+ * Возвращает memory mb.
29
+ */
30
+ get memoryMB(): number;
31
+ /**
32
+ * Выполняет внутреннюю операцию get.
33
+ */
34
+ get(id: string): NovaRenderTarget | undefined;
35
+ /**
36
+ * Выполняет внутреннюю операцию ensure.
37
+ */
38
+ ensure(options: CreateNovaRenderTargetOptions): NovaRenderTarget;
39
+ /**
40
+ * Выполняет внутреннюю операцию delete.
41
+ */
42
+ delete(id: string): boolean;
43
+ /**
44
+ * Очищает внутреннее состояние.
45
+ */
46
+ clear(): void;
47
+ /**
48
+ * Выполняет внутреннюю операцию estimate target bytes.
49
+ */
50
+ protected estimateTargetBytes(target: NovaRenderTarget): number;
51
+ }
@@ -0,0 +1,14 @@
1
+ import { NovaRenderTarget } from '../../../domain/types/rendering/index';
2
+ /**
3
+ * Физический ресурс backend за логическим render target.
4
+ */
5
+ export interface NovaRenderTargetResource<TTexture = unknown, TFramebuffer = unknown> {
6
+ readonly target: NovaRenderTarget;
7
+ readonly texture?: TTexture;
8
+ readonly framebuffer?: TFramebuffer;
9
+ readonly canvas?: HTMLCanvasElement | OffscreenCanvas;
10
+ readonly context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null;
11
+ resize: (width: number, height: number, dpr: number) => void;
12
+ clear: () => void;
13
+ destroy: () => void;
14
+ }
@@ -0,0 +1,9 @@
1
+ import { NovaIcon } from '../../../domain/types/renderer.types';
2
+ export interface NovaResolvedIconRenderRect {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ export declare function resolveNovaIconRenderRect(icon: NovaIcon, dpr: number): NovaResolvedIconRenderRect;
9
+ export declare function resolveNovaIconRenderOpacity(icon: NovaIcon, dpr: number): number;
@@ -0,0 +1,167 @@
1
+ import { EventList, OneOrMany } from '@endge/utils';
2
+ import { NovaAppCreateOptions } from '../../../domain/types/base.types';
3
+ import { NovaElementConstructor } from '../../../domain/types/component.types';
4
+ import { NovaContextToken } from '../../../domain/types/context.types';
5
+ import { NovaThemeId, NovaThemeTokens } from '../../../domain/types/theme.types';
6
+ import { NovaDefinedComponentInput, NovaDefinedComponentOptions } from '../components/nova-defined-component';
7
+ import { NovaSchemaRegistry } from '../components/NovaSchemaRegistry';
8
+ import { NovaComputed, NovaSignal, NovaTrackNodeOptions } from '../reactivity/nova-reactivity';
9
+ import { NovaRef, NovaRefMap, NovaScope } from '../refs/nova-ref';
10
+ import { NovaCreateStoreOptions } from '../state/nova-store-runtime';
11
+ import { NovaCompiledNodeConstructor } from '../template/NovaTemplateRuntime';
12
+ import { NovaNode } from '../tree/NovaNode';
13
+ import { NovaSurface } from '../tree/NovaSurface';
14
+ import { NovaGlobalThemeAsset, NovaThemeSelectorTarget } from '../../theme/NovaGlobalThemeRegistry';
15
+ import { NovaApp } from './NovaApp';
16
+ export type NovaSchemaPlugin = (registry: NovaSchemaRegistry) => void;
17
+ export interface NovaMountOptions<E extends EventList = Record<string, any>> {
18
+ app: NovaApp<E>;
19
+ surface: NovaSurface<E>;
20
+ scope?: NovaScope;
21
+ props?: Record<string, unknown>;
22
+ listeners?: Record<string, (...args: Array<any>) => void>;
23
+ slots?: Record<string, (...args: Array<any>) => Array<any>>;
24
+ }
25
+ export interface NovaMountHandle {
26
+ node: {
27
+ setProps?: (patch: Record<string, unknown>) => unknown;
28
+ setListeners?: (listeners: Record<string, (...args: Array<any>) => void>) => unknown;
29
+ remove: () => void;
30
+ };
31
+ updateProps: (patch: Record<string, unknown>) => void;
32
+ updateListeners: (listeners: Record<string, (...args: Array<any>) => void>) => void;
33
+ destroy: () => void;
34
+ }
35
+ /**
36
+ * Предоставляет статические фабрики для создания Nova runtime и связанных объектов.
37
+ */
38
+ export declare class Nova {
39
+ /**
40
+ * Глобальный facade для typed assets.
41
+ */
42
+ static readonly assets: Readonly<{
43
+ global: import('../assets/NovaAssetRegistry').NovaAssetRegistry;
44
+ define: typeof import('../assets/NovaAssetRegistry').defineNovaAssets;
45
+ svg: typeof import('../assets/NovaAssetRegistry').createNovaSvgAsset;
46
+ image: typeof import('../assets/NovaAssetRegistry').createNovaImageAsset;
47
+ canvas: typeof import('../assets/NovaAssetRegistry').createNovaCanvasAsset;
48
+ pattern: typeof import('../assets/NovaAssetRegistry').createNovaPatternAsset;
49
+ stripe: typeof import('../assets/NovaAssetRegistry').createNovaStripeAsset;
50
+ linearGradient: typeof import('../assets/NovaAssetRegistry').createNovaLinearGradientAsset;
51
+ radialGradient: typeof import('../assets/NovaAssetRegistry').createNovaRadialGradientAsset;
52
+ conicGradient: typeof import('../assets/NovaAssetRegistry').createNovaConicGradientAsset;
53
+ noise: typeof import('../assets/NovaAssetRegistry').createNovaNoiseAsset;
54
+ meshGradient: typeof import('../assets/NovaAssetRegistry').createNovaMeshGradientAsset;
55
+ nineSliceImage: typeof import('../assets/NovaAssetRegistry').createNovaNineSliceImageAsset;
56
+ font: typeof import('../assets/NovaAssetRegistry').createNovaFontAsset;
57
+ ref<K extends import('../assets/NovaAssetRegistry').NovaAssetKind>(namespace: string, kind: K, name: string): import('../assets/NovaAssetRegistry').NovaAssetRef<K>;
58
+ }>;
59
+ /**
60
+ * Глобальный facade для prop descriptors в Nova DSL.
61
+ */
62
+ static readonly Prop: {
63
+ model: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
64
+ object: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
65
+ options: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
66
+ array: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
67
+ string: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
68
+ number: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
69
+ boolean: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
70
+ function: <T = unknown>(options?: import('../components/nova-component-metadata').NovaPropDecoratorOptions<T>) => (target: object, propertyKey: string | symbol, _descriptor?: PropertyDescriptor) => void;
71
+ };
72
+ private static readonly _schemaPlugins;
73
+ private static _uiKitPlugin;
74
+ /**
75
+ * Создает app.
76
+ */
77
+ static createApp<E extends EventList = Record<string, any>>(options: NovaAppCreateOptions<E>): NovaApp<E>;
78
+ /**
79
+ * Регистрирует NovaCSS asset глобально для новых и уже созданных NovaApp.
80
+ */
81
+ static import(asset: NovaGlobalThemeAsset): void;
82
+ /**
83
+ * Возвращает или меняет активную глобальную тему Nova.
84
+ */
85
+ static theme(): NovaThemeId | null;
86
+ static theme(id: NovaThemeId): NovaThemeId;
87
+ /**
88
+ * Подписывается на глобальные изменения импортированных themes.
89
+ */
90
+ static onThemeChange(listener: () => void): () => void;
91
+ /**
92
+ * Резолвит глобальные theme tokens для selector target.
93
+ */
94
+ static resolveThemeTokens(target: NovaThemeSelectorTarget): NovaThemeTokens;
95
+ /**
96
+ * Сбрасывает global theme registry в unit-тестах.
97
+ */
98
+ static __resetGlobalThemesForTests(): void;
99
+ /**
100
+ * Подключает schema-плагин ко всем новым NovaApp.
101
+ */
102
+ static use(plugin: NovaSchemaPlugin): void;
103
+ /**
104
+ * Подключает Nova UI Kit ко всем новым NovaApp.
105
+ */
106
+ static useUIKit(plugin?: NovaSchemaPlugin): void;
107
+ /**
108
+ * Привязывает component metadata к class-конструктору без глобальной регистрации.
109
+ */
110
+ static defineComponent<E extends EventList = Record<string, any>, T extends NovaElementConstructor<E> = NovaElementConstructor<E>>(component: T, options?: NovaDefinedComponentOptions<E>): T;
111
+ /**
112
+ * Регистрирует один или несколько class-компонентов в конкретном schema registry.
113
+ */
114
+ static registerComponents<E extends EventList = Record<string, any>>(registry: NovaSchemaRegistry, definitions: OneOrMany<NovaElementConstructor<E> | NovaDefinedComponentInput<E>>): void;
115
+ /**
116
+ * Создает proxy-ref на публичный API Nova component.
117
+ */
118
+ static ref<T extends object>(name?: string): NovaRef<T>;
119
+ /**
120
+ * Создает коллекцию refs для keyed template nodes.
121
+ */
122
+ static refMap<T extends object>(): NovaRefMap<T>;
123
+ /**
124
+ * Создает типизированный token для scoped dependency в Nova tree.
125
+ */
126
+ static createContextToken<T>(name: string): NovaContextToken<T>;
127
+ /**
128
+ * DSL intrinsic для inject. В class-компонентах используйте this.inject(token).
129
+ */
130
+ static inject<T>(_token: NovaContextToken<T>): T;
131
+ /**
132
+ * DSL intrinsic для optional inject. В class-компонентах используйте this.injectOptional(token).
133
+ */
134
+ static injectOptional<T>(_token: NovaContextToken<T>, _fallback?: T): T | undefined;
135
+ /**
136
+ * Создает reactive business store поверх Raph data graph.
137
+ */
138
+ static createStore<T extends object>(instance: T, options?: NovaCreateStoreOptions): T;
139
+ /**
140
+ * Выполняет несколько store mutations в одной Raph transaction.
141
+ */
142
+ static batchStore<T>(store: object, callback: () => T): T;
143
+ /**
144
+ * Создает mutable reactive value для Nova DSL.
145
+ */
146
+ static signal<T>(initialValue: T): NovaSignal<T>;
147
+ /**
148
+ * Создает lazy computed reactive value для Nova DSL.
149
+ */
150
+ static computed<T>(compute: () => T): NovaComputed<T>;
151
+ /**
152
+ * Выполняет callback с привязкой signal reads к NovaNode.
153
+ */
154
+ static trackNode<T>(node: NovaNode<any>, callback: () => T, options?: NovaTrackNodeOptions): T;
155
+ /**
156
+ * Создает scope refs для template runtime.
157
+ */
158
+ static createScope(input?: Partial<NovaScope>): NovaScope;
159
+ /**
160
+ * Монтирует compiled Nova template в существующий app/surface.
161
+ */
162
+ static mount<E extends EventList = Record<string, any>>(component: NovaCompiledNodeConstructor<E>, options: NovaMountOptions<E>): NovaMountHandle;
163
+ /**
164
+ * Применяет глобальные schema-плагины к registry конкретного app.
165
+ */
166
+ private static applySchemaPlugins;
167
+ }
@@ -0,0 +1,305 @@
1
+ import { RaphApp, RaphLocalPhaseContext } from '@endge/raph';
2
+ import { EventList, EventBus } from '@endge/utils';
3
+ import { NovaAppCreateOptions, NovaAppOptions, NovaNodeProperties, NovaSizeOptions, ResolvedNovaInputOptions } from '../../../domain/types/base.types';
4
+ import { NovaNodeEventHandlers } from '../../../domain/types/events.types';
5
+ import { NovaExportImageOptions, NovaExportImageResult } from '../../../domain/types/export.types';
6
+ import { NovaHitTestMode, RendererType } from '../../../domain/types/renderer.types';
7
+ import { NovaRendererConfig, NovaRendererConfigInput } from '../../../domain/types/rendering/index';
8
+ import { NovaScene } from '../scene/NovaScene';
9
+ import { NovaMotionEngine } from '../../motion/NovaMotionEngine';
10
+ import { NovaCanvas } from '../../platform/NovaCanvas';
11
+ import { NovaAssetRegistry } from '../assets/NovaAssetRegistry';
12
+ import { NovaCommandBus } from '../commands/NovaCommandBus';
13
+ import { NovaComponentRegistry } from '../components/NovaComponentRegistry';
14
+ import { NovaSchemaRegistry } from '../components/NovaSchemaRegistry';
15
+ import { NovaCursorManager } from '../cursor/NovaCursorManager';
16
+ import { NovaDebug } from '../debug/NovaDebug';
17
+ import { NovaMetrics } from '../debug/NovaMetrics';
18
+ import { NovaDiagnostics_Module } from '../diagnostics/NovaDiagnostics_Module';
19
+ import { NovaEvents } from '../interaction/NovaEvents';
20
+ import { NovaStore } from '../state/NovaStore';
21
+ import { NovaSyncScope } from '../sync/NovaSyncScope';
22
+ import { NovaNode } from '../tree/NovaNode';
23
+ import { NovaSurface } from '../tree/NovaSurface';
24
+ import { NovaSemanticService } from '../../semantic/NovaSemanticService';
25
+ import { NovaSoundEngine } from '../../sound/NovaSoundEngine';
26
+ import { NovaThemeService } from '../../theme/NovaThemeService';
27
+ /**
28
+ * Управляет жизненным циклом Nova runtime, canvas, input, surfaces и фазами Raph.
29
+ */
30
+ export declare class NovaApp<E extends EventList = Record<string, any>> {
31
+ private readonly _raph;
32
+ private readonly _ownsRaphKernel;
33
+ private readonly _canvas;
34
+ private readonly _backend;
35
+ private readonly _orchestrator;
36
+ private readonly _mainRendererType;
37
+ private readonly _events;
38
+ private readonly _inputOptions;
39
+ private readonly _webglAttributes?;
40
+ private _rendererConfig;
41
+ private readonly _surfaceOrder;
42
+ private readonly _orderedSurfaces;
43
+ private readonly _dirtySurfaces;
44
+ private _surfaceOrderCounter;
45
+ private _textRasterContinuationPending;
46
+ readonly store: NovaStore;
47
+ readonly schema: NovaSchemaRegistry;
48
+ readonly components: NovaComponentRegistry;
49
+ readonly motion: NovaMotionEngine;
50
+ readonly sound: NovaSoundEngine;
51
+ readonly theme: NovaThemeService<E>;
52
+ readonly cursors: NovaCursorManager<E>;
53
+ readonly bus: EventBus<E>;
54
+ readonly commands: NovaCommandBus;
55
+ readonly metrics: NovaMetrics;
56
+ readonly assets: NovaAssetRegistry;
57
+ readonly sync: NovaSyncScope;
58
+ readonly semantics: NovaSemanticService;
59
+ private _debugOptions;
60
+ private readonly _debugger;
61
+ private readonly _diagnostics;
62
+ private _keyboardActive;
63
+ private _keyboardHovered;
64
+ private _contextVersion;
65
+ private readonly _ownsSyncScope;
66
+ private _globalThemeDispose;
67
+ /**
68
+ * Создает приложение, подключает canvas, input, renderer и Raph-loop.
69
+ */
70
+ constructor(options: NovaAppCreateOptions<E>);
71
+ /**
72
+ * Запускает начало кадра, motion engine и frame-level diagnostics.
73
+ */
74
+ before(p: RaphLocalPhaseContext<NovaNodeProperties>): void;
75
+ /**
76
+ * Выполняет preupdate-фазу для dirty nodes.
77
+ */
78
+ preupdate(p: RaphLocalPhaseContext<NovaNodeProperties>): void;
79
+ /**
80
+ * Выполняет update-фазу для dirty nodes.
81
+ */
82
+ update(p: RaphLocalPhaseContext<NovaNodeProperties>): void;
83
+ /**
84
+ * Выполняет matrix-фазу и обновляет transform state dirty nodes.
85
+ */
86
+ matrix(p: RaphLocalPhaseContext<NovaNodeProperties>): void;
87
+ /**
88
+ * Собирает dirty surfaces и запускает render от корня каждого surface.
89
+ */
90
+ render(p: RaphLocalPhaseContext<NovaNodeProperties>): void;
91
+ /**
92
+ * Компилирует dirty surfaces и replay-ит все retained frames в основной canvas.
93
+ */
94
+ flush(): void;
95
+ /**
96
+ * Проверяет, нужно ли дорендерить deferred text atlas без пользовательского input.
97
+ */
98
+ private shouldContinueTextRaster;
99
+ /**
100
+ * Планирует continuation repaint вне текущего flush stack.
101
+ */
102
+ private scheduleTextRasterContinuation;
103
+ /**
104
+ * Завершает кадр и обновляет frame-level metrics.
105
+ */
106
+ after(): void;
107
+ /**
108
+ * Планирует выполнение Raph-фаз при наличии dirty nodes.
109
+ */
110
+ invalidate(): void;
111
+ /**
112
+ * Помечает render surfaces dirty после async asset updates.
113
+ */
114
+ private invalidateAssets;
115
+ /**
116
+ * Увеличивает версию scoped context для lazy invalidation inject-cache.
117
+ */
118
+ bumpContextVersion(): number;
119
+ /**
120
+ * Запускает постоянный scheduler loop.
121
+ */
122
+ startLoop(): void;
123
+ /**
124
+ * Останавливает постоянный scheduler loop.
125
+ */
126
+ stopLoop(): void;
127
+ /**
128
+ * Применяет runtime-настройки приложения без пересоздания NovaApp.
129
+ */
130
+ options(opts: Partial<NovaAppOptions>): void;
131
+ /**
132
+ * Передает DOM-событие в Nova event system.
133
+ */
134
+ handleEvent(type: keyof NovaNodeEventHandlers, event: Event): boolean;
135
+ /**
136
+ * Переключает стратегию hit-test для интерактивных nodes.
137
+ */
138
+ setHitTestMode(mode: NovaHitTestMode): void;
139
+ /**
140
+ * Обновляет глобальный renderer config с учетом текущих defaults.
141
+ */
142
+ configureRenderer(config: NovaRendererConfigInput): NovaRendererConfig;
143
+ /**
144
+ * Экспортирует текущий canvas frame и опционально добавляет semantic snapshot.
145
+ */
146
+ exportImage(options?: NovaExportImageOptions): Promise<NovaExportImageResult>;
147
+ /**
148
+ * Создает, монтирует и возвращает сцену, привязанную к этому приложению.
149
+ */
150
+ createScene<T extends NovaScene<E>>(SceneClass: new (app: NovaApp<E>, ...args: Array<any>) => T, ...args: Array<any>): T;
151
+ /**
152
+ * Возвращает Raph runtime приложения.
153
+ */
154
+ get raph(): RaphApp<NovaNodeProperties>;
155
+ /**
156
+ * Возвращает версию scoped context приложения.
157
+ */
158
+ get contextVersion(): number;
159
+ /**
160
+ * Возвращает canvas wrapper приложения.
161
+ */
162
+ get canvas(): NovaCanvas;
163
+ /**
164
+ * Обновляет CSS cursor основного canvas независимо от active renderer backend.
165
+ */
166
+ cursor(value: string): void;
167
+ /**
168
+ * Возвращает Nova event system.
169
+ */
170
+ get events(): NovaEvents<E>;
171
+ /**
172
+ * Возвращает surfaces, подключенные к root Raph graph.
173
+ */
174
+ get surfaces(): Array<NovaSurface<E>>;
175
+ /**
176
+ * Возвращает количество dirty surfaces текущего frame.
177
+ */
178
+ get dirtySurfaceCount(): number;
179
+ /**
180
+ * Возвращает runtime debugger приложения.
181
+ */
182
+ get debugger(): NovaDebug;
183
+ /**
184
+ * Возвращает runtime diagnostics приложения.
185
+ */
186
+ get diagnostics(): NovaDiagnostics_Module<E>;
187
+ /**
188
+ * Возвращает текущую ширину root canvas в logical pixels.
189
+ */
190
+ get width(): number;
191
+ /**
192
+ * Возвращает текущую высоту root canvas в logical pixels.
193
+ */
194
+ get height(): number;
195
+ /**
196
+ * Возвращает фактический device pixel ratio canvas.
197
+ */
198
+ get dpr(): number;
199
+ /**
200
+ * Возвращает верхнее ограничение device pixel ratio.
201
+ */
202
+ get maxDpr(): number;
203
+ /**
204
+ * Возвращает WebGL context attributes, переданные при создании приложения.
205
+ */
206
+ get webglAttributes(): WebGLContextAttributes | undefined;
207
+ /**
208
+ * Возвращает основной renderer type приложения.
209
+ */
210
+ get mainRendererType(): RendererType;
211
+ /**
212
+ * Возвращает актуальный глобальный renderer config.
213
+ */
214
+ get rendererConfig(): NovaRendererConfig;
215
+ /**
216
+ * Возвращает resolved input options.
217
+ */
218
+ get inputOptions(): ResolvedNovaInputOptions;
219
+ /**
220
+ * Создает logical surface для app-level backend.
221
+ */
222
+ createSurface<T extends NovaSurface<E>>(name: string, SurfaceClass?: new (...args: Array<any>) => T, ...args: Array<any>): T;
223
+ /**
224
+ * Добавляет surface в Raph graph, монтирует subtree и обновляет порядок слоев.
225
+ */
226
+ addSurface<T extends NovaSurface<E>>(surface: T): T;
227
+ /**
228
+ * Удаляет logical surface из app-level render graph и retained frame cache.
229
+ */
230
+ removeSurface(surface: NovaSurface<E>): void;
231
+ /**
232
+ * Возвращает surfaces в порядке compositing.
233
+ */
234
+ private getOrderedSurfaces;
235
+ /**
236
+ * Фиксирует стабильный порядок добавления surface, если он еще не был сохранен.
237
+ */
238
+ private ensureSurfaceOrder;
239
+ /**
240
+ * Возвращает стабильный индекс добавления surface.
241
+ */
242
+ private surfaceOrderOf;
243
+ /**
244
+ * Регистрирует node в интерактивном индексе событий.
245
+ */
246
+ registerInteractiveNode(node: NovaNode<E>): void;
247
+ /**
248
+ * Удаляет node из всех event indexes и active references.
249
+ */
250
+ unregisterInteractiveNode(node: NovaNode<E>): void;
251
+ /**
252
+ * Сравнивает две nodes по итоговому visual order с учетом surface и hierarchy.
253
+ */
254
+ compareRenderOrder(a: NovaNode<E>, b: NovaNode<E>): number;
255
+ /**
256
+ * Строит числовой stamp, который описывает положение node в render order.
257
+ */
258
+ getRenderOrderStamp(node: NovaNode<E>): Array<number>;
259
+ /**
260
+ * Возвращает путь от surface root до указанной node.
261
+ */
262
+ private getRenderPath;
263
+ /**
264
+ * Меняет размеры root canvas и синхронизирует dimensions всех surfaces.
265
+ */
266
+ resize(size?: Partial<NovaSizeOptions>): void;
267
+ /**
268
+ * Освобождает runtime, события, metrics, surfaces и canvas.
269
+ */
270
+ destroy(): void;
271
+ /**
272
+ * Подключает cleanup для глобального theme registry.
273
+ */
274
+ setGlobalThemeDispose(dispose: (() => void) | null): void;
275
+ /**
276
+ * Включает или выключает backend-level retained diagnostics.
277
+ */
278
+ private setRendererDiagnosticsEnabled;
279
+ private _boundWindowEvents;
280
+ private _boundCanvasEvents;
281
+ /**
282
+ * Подключает pointer и keyboard listeners согласно input options.
283
+ */
284
+ private setupEventListeners;
285
+ /**
286
+ * Переводит DOM focus на canvas для focused keyboard scope.
287
+ */
288
+ private focusCanvasKeyboardTarget;
289
+ /**
290
+ * Нормализует пользовательские input options в полный resolved config.
291
+ */
292
+ private resolveInputOptions;
293
+ /**
294
+ * Проверяет, должен ли NovaApp обрабатывать конкретное keyboard event.
295
+ */
296
+ private shouldHandleKeyboardEvent;
297
+ /**
298
+ * Применяет preventDefault для keyboard event согласно настройкам input.
299
+ */
300
+ private applyKeyboardPreventDefault;
301
+ /**
302
+ * Проверяет, является ли target редактируемым DOM-элементом.
303
+ */
304
+ private isEditableTarget;
305
+ }
@@ -0,0 +1,17 @@
1
+ import { RaphKernel, RaphSchedulerType, RaphApp } from '@endge/raph';
2
+ import { EventList } from '@endge/utils';
3
+ import { NovaNodeProperties } from '../../../domain/types/base.types';
4
+ import { NovaApp } from './NovaApp';
5
+ /**
6
+ * Описывает параметры создания Raph runtime для Nova.
7
+ */
8
+ interface CreateNovaRaphRuntimeOptions {
9
+ kernel?: RaphKernel;
10
+ runtimeId?: string;
11
+ scheduler: RaphSchedulerType;
12
+ }
13
+ /**
14
+ * Создает Raph runtime lane с зарегистрированными Nova local phases и properties.
15
+ */
16
+ export declare function createNovaRaphRuntime<E extends EventList>(appInstance: NovaApp<E>, options: CreateNovaRaphRuntimeOptions): RaphApp<NovaNodeProperties>;
17
+ export {};