@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,87 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaComponentDescriptor } from '../../../domain/types/component.types';
3
+ import { NovaApp } from '../app/NovaApp';
4
+ import { NovaSchemaRegistry } from '../components/NovaSchemaRegistry';
5
+ import { NovaTemplateChildSchema } from '../template/NovaTemplateRuntime';
6
+ import { NovaSurface } from '../tree/NovaSurface';
7
+ import { NovaComponentNode } from '../components/NovaComponentNode';
8
+ export declare const NOVA_SCENES_SCHEMA_TYPE = "nova.scenes";
9
+ export declare const NOVA_SCENE_SCHEMA_TYPE = "nova.scene";
10
+ export type NovaScenesStrategy = 'keep-alive';
11
+ export interface NovaScenesProps {
12
+ active?: string | number | null;
13
+ strategy?: NovaScenesStrategy;
14
+ }
15
+ export interface NovaScenesResolvedProps {
16
+ active: string | number | null;
17
+ strategy: NovaScenesStrategy;
18
+ }
19
+ export interface NovaSceneDefinitionProps {
20
+ id?: string | number;
21
+ }
22
+ export interface NovaScenesApi {
23
+ setChildren: (children: Array<NovaTemplateChildSchema>) => void;
24
+ getActiveSceneId: () => string | null;
25
+ getCachedSceneIds: () => Array<string>;
26
+ }
27
+ type NovaScenesDescriptor = NovaComponentDescriptor<NovaScenesResolvedProps, NovaScenesApi, Record<string, never>, NovaScenesProps>;
28
+ type NovaSceneDefinitionDescriptor = NovaComponentDescriptor<NovaSceneDefinitionProps, unknown, Record<string, never>, NovaSceneDefinitionProps>;
29
+ /** Runtime-компонент, который управляет cached NovaScene из DSL-разметки. */
30
+ export declare class NovaScenesNode<E extends EventList = Record<string, any>> extends NovaComponentNode<NovaScenesResolvedProps, NovaScenesApi, Record<string, never>, NovaScenesProps, E> {
31
+ private readonly _api;
32
+ private readonly _definitions;
33
+ private readonly _scenes;
34
+ private _activeSceneId;
35
+ private _ready;
36
+ /**
37
+ * Создает manager независимых NovaScene внутри текущего template subtree.
38
+ */
39
+ constructor(app: NovaApp<E>, surface: NovaSurface<E>, props?: NovaScenesProps, options?: {
40
+ componentId?: string;
41
+ children?: Array<NovaTemplateChildSchema>;
42
+ }, descriptor?: NovaScenesDescriptor);
43
+ /** Возвращает public API компонента. */
44
+ getApi(): NovaScenesApi;
45
+ /** Обновляет props и синхронизирует активную сцену. */
46
+ setProps(patch: NovaScenesProps): this;
47
+ /** Принимает декларации Scene и обновляет cached runtime-сцены. */
48
+ setChildren(children: Array<NovaTemplateChildSchema>): void;
49
+ /** Синхронизирует active Scene после mount самой manager-ноды. */
50
+ protected onMount(): void;
51
+ /** Освобождает cached scenes вместе с manager node. */
52
+ dispose(): void;
53
+ /**
54
+ * Синхронизирует состояние между слоями NovaScenesNode.
55
+ */
56
+ private _syncActiveSceneIfReady;
57
+ /**
58
+ * Синхронизирует состояние между слоями NovaScenesNode.
59
+ */
60
+ private _syncActiveScene;
61
+ /**
62
+ * Выполняет внутренний шаг ensureActiveSceneMounted для NovaScenesNode.
63
+ */
64
+ private _ensureActiveSceneMounted;
65
+ /**
66
+ * Нормализует и возвращает итоговое значение NovaScenesNode.
67
+ */
68
+ private _resolveScene;
69
+ }
70
+ export declare const NOVA_SCENES_DESCRIPTOR: NovaScenesDescriptor;
71
+ export declare class NovaSceneDefinitionNode<E extends EventList = Record<string, any>> extends NovaComponentNode<NovaSceneDefinitionProps, unknown, Record<string, never>, NovaSceneDefinitionProps, E> {
72
+ /**
73
+ * Создает declaration node без render-поведения.
74
+ */
75
+ constructor(app: NovaApp<E>, surface: NovaSurface<E>, props?: NovaSceneDefinitionProps, options?: {
76
+ componentId?: string;
77
+ }, descriptor?: NovaSceneDefinitionDescriptor);
78
+ }
79
+ export declare const NOVA_SCENE_DESCRIPTOR: NovaSceneDefinitionDescriptor;
80
+ /** Группировка core DSL schema types для compiler output и публичных интеграций. */
81
+ export declare const NovaCoreDSL: {
82
+ readonly Scenes: "nova.scenes";
83
+ readonly Scene: "nova.scene";
84
+ };
85
+ /** Регистрирует core DSL-компоненты сцен. */
86
+ export declare function registerNovaSceneComponents(registry: NovaSchemaRegistry): void;
87
+ export {};
@@ -0,0 +1,27 @@
1
+ import { ClassConstructor } from 'class-transformer';
2
+ /**
3
+ * Хранит shared runtime-state, который используется сценами и surfaces.
4
+ */
5
+ export declare class NovaStore {
6
+ private _dataMap;
7
+ /**
8
+ * Выполняет внутреннюю операцию set.
9
+ */
10
+ set<T>(key: string, data: T): void;
11
+ /**
12
+ * Выполняет внутреннюю операцию get.
13
+ */
14
+ get<T>(key: string): T | undefined;
15
+ /**
16
+ * Возвращает by type.
17
+ */
18
+ getByType<T>(type: ClassConstructor<T>): Array<T>;
19
+ /**
20
+ * Выполняет внутреннюю операцию remove.
21
+ */
22
+ remove(key: string): void;
23
+ /**
24
+ * Выполняет внутреннюю операцию update.
25
+ */
26
+ update<T>(key: string, newData: T): void;
27
+ }
@@ -0,0 +1,40 @@
1
+ import { NovaPhaseName } from '../../../domain/constants/nova-phase';
2
+ export type NovaStorePhase = 'update' | 'matrix' | 'render';
3
+ export type NovaStorePhaseInput = NovaStorePhase | Array<NovaStorePhase>;
4
+ export interface NovaReactiveOptions<TStore extends object = object> {
5
+ path?: string | ((store: TStore) => string);
6
+ phase?: NovaStorePhaseInput;
7
+ }
8
+ export interface NovaStoreOptions {
9
+ scope?: string;
10
+ }
11
+ export interface NovaReactiveFieldMetadata {
12
+ key: string | symbol;
13
+ options: NovaReactiveOptions;
14
+ }
15
+ export interface NovaStoreMetadata {
16
+ reactiveFields: Array<NovaReactiveFieldMetadata>;
17
+ }
18
+ type NovaStoreConstructor = abstract new (...args: Array<any>) => object;
19
+ /**
20
+ * Помечает class как business store, поля которого могут быть привязаны к Raph data graph.
21
+ */
22
+ export declare function Store(options?: NovaStoreOptions): <T extends new (...args: Array<any>) => object>(target: T) => T;
23
+ /**
24
+ * Помечает поле store как reactive data path.
25
+ */
26
+ export declare function Reactive<TStore extends object = object>(options?: NovaReactiveOptions<TStore>): (...args: Array<any>) => any;
27
+ /**
28
+ * Возвращает store metadata конструктора.
29
+ */
30
+ export declare function readNovaStoreMetadata(target: NovaStoreConstructor): NovaStoreMetadata | undefined;
31
+ /**
32
+ * Проверяет, что объект помечен как Nova store или содержит reactive fields.
33
+ */
34
+ export declare function isNovaStoreObject(value: unknown): value is object;
35
+ /**
36
+ * Возвращает store options конструктора.
37
+ */
38
+ export declare function readNovaStoreOptions(target: NovaStoreConstructor): NovaStoreOptions;
39
+ export declare function normalizeNovaStorePhases(input?: NovaStorePhaseInput, fallback?: NovaPhaseName | string): Array<NovaStorePhase>;
40
+ export {};
@@ -0,0 +1,23 @@
1
+ import { NovaApp } from '../app/NovaApp';
2
+ export interface NovaCreateStoreOptions {
3
+ app?: NovaApp<any>;
4
+ scope?: string;
5
+ }
6
+ export interface NovaStoreRuntime {
7
+ app?: NovaApp<any>;
8
+ scope: string;
9
+ path: string;
10
+ root: object;
11
+ }
12
+ /**
13
+ * Создает reactive business store и подключает его к Raph data graph.
14
+ */
15
+ export declare function createNovaStore<T extends object>(instance: T, options?: NovaCreateStoreOptions): T;
16
+ /**
17
+ * Выполняет несколько store mutations в одной Raph transaction.
18
+ */
19
+ export declare function batchNovaStore<T>(store: object, callback: () => T): T;
20
+ /**
21
+ * Возвращает runtime metadata store instance.
22
+ */
23
+ export declare function findNovaStoreRuntime(store: object): NovaStoreRuntime | undefined;
@@ -0,0 +1,17 @@
1
+ import { DataPathDef } from '@endge/raph';
2
+ import { NovaStorePhaseInput } from './nova-store-decorators';
3
+ import { NovaNode } from '../tree/NovaNode';
4
+ export type NovaStoreTrackingPhase = 'update' | 'matrix' | 'render';
5
+ export type NovaStoreReadMap = Map<NovaStoreTrackingPhase, Set<string>>;
6
+ /**
7
+ * Начинает сбор reactive store reads для lifecycle phase.
8
+ */
9
+ export declare function beginNovaStoreTracking(node: NovaNode<any>, defaultPhase: NovaStoreTrackingPhase): void;
10
+ /**
11
+ * Завершает сбор reads и синхронизирует Raph data observers ноды.
12
+ */
13
+ export declare function endNovaStoreTracking(): void;
14
+ /**
15
+ * Регистрирует чтение store data path в текущем tracking context.
16
+ */
17
+ export declare function trackNovaStoreRead(path: DataPathDef, phaseInput?: NovaStorePhaseInput): void;
@@ -0,0 +1,93 @@
1
+ import { NovaSyncEndpointInput, NovaSyncLink, NovaSyncLinkConfig, NovaSyncPort, NovaSyncPortMap, NovaSyncSchedule, NovaSyncScopeOptions, NovaSyncTransaction } from './nova-sync.types';
2
+ import { NovaNode } from '../tree/NovaNode';
3
+ /**
4
+ * Описывает ответственность NovaSyncScope в архитектуре проекта.
5
+ */
6
+ export declare class NovaSyncScope {
7
+ readonly id: string;
8
+ readonly scheduler: NovaSyncSchedule;
9
+ private readonly _ports;
10
+ private readonly _nodeEndpoints;
11
+ private readonly _links;
12
+ private readonly _microtaskQueue;
13
+ private readonly _frameQueue;
14
+ private _microtaskScheduled;
15
+ private _frameScheduled;
16
+ private _applyDepth;
17
+ /**
18
+ * Создает экземпляр NovaSyncScope и подготавливает базовое состояние.
19
+ */
20
+ constructor(options?: NovaSyncScopeOptions);
21
+ /**
22
+ * Регистрирует сущность в runtime-слое NovaSyncScope.
23
+ */
24
+ registerNode(node: NovaNode<any>, ports: NovaSyncPortMap): () => void;
25
+ /**
26
+ * Удаляет регистрацию сущности из runtime-слоя NovaSyncScope.
27
+ */
28
+ unregisterNode(node: NovaNode<any>): void;
29
+ /**
30
+ * Выполняет действие link в рамках ответственности NovaSyncScope.
31
+ */
32
+ link(config: NovaSyncLinkConfig): NovaSyncLink;
33
+ /**
34
+ * Выполняет действие unlink в рамках ответственности NovaSyncScope.
35
+ */
36
+ unlink(id: string): void;
37
+ /**
38
+ * Нормализует и возвращает итоговое значение NovaSyncScope.
39
+ */
40
+ resolvePort<T = unknown>(endpoint: NovaSyncEndpointInput): NovaSyncPort<T>;
41
+ /**
42
+ * Выполняет действие notify в рамках ответственности NovaSyncScope.
43
+ */
44
+ notify(endpoint: NovaSyncEndpointInput, value?: unknown, transaction?: NovaSyncTransaction): void;
45
+ /**
46
+ * Выполняет действие notifyPortChanged в рамках ответственности NovaSyncScope.
47
+ */
48
+ notifyPortChanged(node: NovaNode<any>, name: string, value?: unknown): void;
49
+ /**
50
+ * Освобождает runtime-ресурсы и подписки NovaSyncScope.
51
+ */
52
+ dispose(): void;
53
+ /**
54
+ * Выполняет внутренний шаг propagate для NovaSyncScope.
55
+ */
56
+ private _propagate;
57
+ /**
58
+ * Добавляет действие в очередь выполнения NovaSyncScope.
59
+ */
60
+ private _queueLinkedWrite;
61
+ /**
62
+ * Применяет подготовленное состояние NovaSyncScope.
63
+ */
64
+ private _applyQueuedWrite;
65
+ /**
66
+ * Планирует отложенное выполнение NovaSyncScope.
67
+ */
68
+ private _scheduleMicrotaskFlush;
69
+ /**
70
+ * Планирует отложенное выполнение NovaSyncScope.
71
+ */
72
+ private _scheduleFrameFlush;
73
+ /**
74
+ * Принудительно завершает накопленные изменения NovaSyncScope.
75
+ */
76
+ private _flushQueue;
77
+ /**
78
+ * Создает runtime-сущность NovaSyncScope.
79
+ */
80
+ private _createTransaction;
81
+ /**
82
+ * Выполняет внутренний шаг requirePort для NovaSyncScope.
83
+ */
84
+ private _requirePort;
85
+ /**
86
+ * Нормализует и возвращает итоговое значение NovaSyncScope.
87
+ */
88
+ private _resolveEndpoint;
89
+ /**
90
+ * Выполняет внутренний шаг endpointFor для NovaSyncScope.
91
+ */
92
+ private _endpointFor;
93
+ }
@@ -0,0 +1,2 @@
1
+ import { NovaSyncScope } from './NovaSyncScope';
2
+ export declare const NovaSyncScopeToken: import('../../..').NovaContextToken<NovaSyncScope>;
@@ -0,0 +1,5 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaComponentNode } from '../components/NovaComponentNode';
3
+ import { NovaSyncPort, NovaSyncPortMap } from './nova-sync.types';
4
+ export declare function createNovaSyncPort<T>(input: Omit<NovaSyncPort<T>, 'id' | 'owner'>): NovaSyncPort<T>;
5
+ export declare function createNovaComponentPropSyncPorts<TProps extends Record<string, any>, E extends EventList>(node: NovaComponentNode<TProps, unknown, Record<string, unknown>, TProps, E>): NovaSyncPortMap;
@@ -0,0 +1,48 @@
1
+ import { NovaNode } from '../tree/NovaNode';
2
+ export type NovaSyncSchedule = 'immediate' | 'microtask' | 'frame';
3
+ export type NovaSyncPortMap = Record<string, NovaSyncPort<any>>;
4
+ export type NovaSyncEndpointInput = string | NovaSyncPort<any>;
5
+ export interface NovaSyncTransaction {
6
+ id: number;
7
+ origin: string;
8
+ path: Set<string>;
9
+ }
10
+ export interface NovaSyncPort<T = unknown> {
11
+ id?: string;
12
+ owner?: NovaNode<any>;
13
+ type?: string;
14
+ writable?: boolean;
15
+ schedule?: NovaSyncSchedule;
16
+ meta?: Record<string, unknown>;
17
+ read: () => T;
18
+ write: (value: T, transaction: NovaSyncTransaction) => void;
19
+ equals?: (left: T, right: T) => boolean;
20
+ }
21
+ export interface NovaSyncLinkConfig<TFrom = unknown, TTo = TFrom> {
22
+ id?: string;
23
+ from: NovaSyncEndpointInput;
24
+ to: NovaSyncEndpointInput;
25
+ schedule?: NovaSyncSchedule;
26
+ bidirectional?: boolean;
27
+ transform?: (value: TFrom, transaction: NovaSyncTransaction) => TTo;
28
+ filter?: (value: TFrom, transaction: NovaSyncTransaction) => boolean;
29
+ equals?: (left: TTo, right: TTo) => boolean;
30
+ }
31
+ export interface NovaSyncLink {
32
+ id: string;
33
+ from: string;
34
+ to: string;
35
+ schedule: NovaSyncSchedule;
36
+ bidirectional: boolean;
37
+ dispose: () => void;
38
+ }
39
+ export interface NovaSyncRegisteredPort {
40
+ endpoint: string;
41
+ name: string;
42
+ node: NovaNode<any>;
43
+ port: NovaSyncPort<any>;
44
+ }
45
+ export interface NovaSyncScopeOptions {
46
+ id?: string;
47
+ scheduler?: NovaSyncSchedule;
48
+ }
@@ -0,0 +1,79 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaElementSchema, NovaElementSlotFactory, NovaElementSlots, NovaElementType } from '../../../domain/types/component.types';
3
+ import { NovaNodeEventHandlers } from '../../../domain/types/events.types';
4
+ import { NovaApp } from '../app/NovaApp';
5
+ import { NovaScope } from '../refs/nova-ref';
6
+ import { NovaNode } from '../tree/NovaNode';
7
+ import { NovaSurface } from '../tree/NovaSurface';
8
+ /** Constructor скомпилированного `.nova` компонента. */
9
+ export type NovaCompiledNodeConstructor<E extends EventList = Record<string, any>> = new (app: NovaApp<E>, surface: NovaSurface<E>, props?: Record<string, any>, listeners?: Record<string, (...args: Array<any>) => void>, slots?: NovaTemplateSlots) => NovaNode<E>;
10
+ /** Тип компонента в compiled template schema. */
11
+ export type NovaTemplateComponentType<E extends EventList = Record<string, any>> = NovaElementType<E>;
12
+ /** Фабрика compiled slot, которая возвращает schema snapshot по публичному scope. */
13
+ export type NovaTemplateSlotFactory<TScope = Record<string, any>> = NovaElementSlotFactory<TScope>;
14
+ /** Набор named slots в compiled template schema. */
15
+ export type NovaTemplateSlots = NovaElementSlots;
16
+ export interface NovaTemplateChildSchema<TProps = Record<string, any>> extends Omit<NovaElementSchema<TProps>, 'type'> {
17
+ type: NovaTemplateComponentType;
18
+ key?: string | number;
19
+ ref?: string;
20
+ refKey?: string | number;
21
+ context?: unknown;
22
+ children?: Array<NovaTemplateChildSchema>;
23
+ events?: Partial<NovaNodeEventHandlers>;
24
+ slots?: NovaTemplateSlots;
25
+ }
26
+ export interface NovaTemplateReconcileResult<E extends EventList = Record<string, any>> {
27
+ nodes: Array<NovaNode<E>>;
28
+ created: number;
29
+ reused: number;
30
+ removed: number;
31
+ patched: number;
32
+ }
33
+ export type NovaTemplateParentRenderDirtyMode = 'always' | 'structural' | 'never';
34
+ export interface NovaTemplateRuntimeOptions {
35
+ parentRenderDirty?: NovaTemplateParentRenderDirtyMode;
36
+ }
37
+ /**
38
+ * Runtime для сгенерированных Nova SFC, который сохраняет identity keyed children.
39
+ */
40
+ export declare class NovaTemplateRuntime<E extends EventList = Record<string, any>> {
41
+ private readonly _parent;
42
+ private _scope;
43
+ private readonly _options;
44
+ private _managedChildren;
45
+ private _stats;
46
+ private _reconciling;
47
+ /**
48
+ * Создает runtime для конкретного generated root node.
49
+ */
50
+ constructor(_parent: NovaNode<E>, _scope?: NovaScope, _options?: NovaTemplateRuntimeOptions);
51
+ /**
52
+ * Обновляет scope refs для следующих reconcile-проходов.
53
+ */
54
+ setScope(scope: NovaScope): void;
55
+ /**
56
+ * Применяет новый template snapshot к managed children.
57
+ */
58
+ reconcile(children: Array<NovaTemplateChildSchema>): NovaTemplateReconcileResult<E>;
59
+ /**
60
+ * Возвращает последние counters reconcile-прохода.
61
+ */
62
+ getStats(): Readonly<NovaTemplateReconcileResult<E>>;
63
+ /**
64
+ * Удаляет все managed children.
65
+ */
66
+ dispose(): void;
67
+ }
68
+ /**
69
+ * Сверяет children по key/id/type и обновляет существующие component nodes без пересоздания.
70
+ */
71
+ export declare function reconcileNovaTemplateChildren<E extends EventList>(parent: NovaNode<E>, previousNodes: ReadonlyArray<NovaNode<E>>, nextSchemas: ReadonlyArray<NovaTemplateChildSchema>, scope?: NovaScope, options?: NovaTemplateRuntimeOptions): NovaTemplateReconcileResult<E>;
72
+ /**
73
+ * Обновляет props, события, context и вложенные children существующей node.
74
+ */
75
+ export declare function patchNovaTemplateNode<E extends EventList>(node: NovaNode<E>, schema: NovaTemplateChildSchema): void;
76
+ /**
77
+ * Проверяет, может ли node быть обновлена без пересоздания.
78
+ */
79
+ export declare function canPatchTemplateNode(node: NovaNode<any>, schema: NovaTemplateChildSchema): boolean;
@@ -0,0 +1,78 @@
1
+ import { EventList } from '@endge/utils';
2
+ import { NovaBounds } from '../../../domain/types/renderer.types';
3
+ import { NovaApp } from '../app/NovaApp';
4
+ import { NovaSurface } from './NovaSurface';
5
+ import { NovaNode } from './NovaNode';
6
+ /**
7
+ * Описывает контейнерный node для группировки дочерних Nova nodes.
8
+ */
9
+ export declare class NovaContainer<E extends EventList> extends NovaNode<E> {
10
+ /**
11
+ * Создает instance и подготавливает внутреннее состояние.
12
+ */
13
+ constructor(app: NovaApp<E>, surface?: NovaSurface<E>);
14
+ /**
15
+ * Добавляет дочернюю Nova-ноду в контейнер.
16
+ */
17
+ add<T extends NovaNode<E>>(node: T): T;
18
+ /**
19
+ * Добавляет набор дочерних Nova-нод и делает один render-dirty проход.
20
+ */
21
+ addMany<T extends NovaNode<E>>(nodes: Array<T>): Array<T>;
22
+ /**
23
+ * Удаляет дочернюю Nova-ноду из контейнера и уничтожает ее.
24
+ */
25
+ remove(): void;
26
+ /**
27
+ * Выполняет внутреннюю операцию remove.
28
+ */
29
+ remove(node: NovaNode<E>): boolean;
30
+ /**
31
+ * Уничтожает всех дочерних Nova-потомков контейнера.
32
+ */
33
+ clear(): void;
34
+ /**
35
+ * Быстро переключает видимость всей группы через состояние контейнера.
36
+ */
37
+ setGroupVisible(visible: boolean): this;
38
+ /**
39
+ * Выполняет внутреннюю операцию show.
40
+ */
41
+ show(): this;
42
+ /**
43
+ * Выполняет внутреннюю операцию hide.
44
+ */
45
+ hide(): this;
46
+ /**
47
+ * Быстро переключает активность всей группы через состояние контейнера.
48
+ */
49
+ setGroupActive(active: boolean): this;
50
+ /**
51
+ * Выполняет внутреннюю операцию activate.
52
+ */
53
+ activate(): this;
54
+ /**
55
+ * Выполняет внутреннюю операцию deactivate.
56
+ */
57
+ deactivate(): this;
58
+ /**
59
+ * Переключает локальную видимость всех прямых Nova-детей.
60
+ */
61
+ setChildrenVisible(visible: boolean): this;
62
+ /**
63
+ * Переключает локальную активность всех прямых Nova-детей.
64
+ */
65
+ setChildrenActive(active: boolean): this;
66
+ /**
67
+ * Возвращает child count.
68
+ */
69
+ get childCount(): number;
70
+ /**
71
+ * Возвращает local bounds.
72
+ */
73
+ getLocalBounds(): NovaBounds;
74
+ /**
75
+ * Возвращает nova children.
76
+ */
77
+ get novaChildren(): Array<NovaNode<E>>;
78
+ }