@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,88 @@
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
+ /** No-op declaration node for invalid direct <Scene> usage outside <Scenes>. */
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_SCENES_DESCRIPTOR: NovaScenesDescriptor;
80
+ export declare const NOVA_SCENE_DESCRIPTOR: NovaSceneDefinitionDescriptor;
81
+ /** Группировка core DSL schema types для compiler output и публичных интеграций. */
82
+ export declare const NovaCoreDSL: {
83
+ readonly Scenes: "nova.scenes";
84
+ readonly Scene: "nova.scene";
85
+ };
86
+ /** Регистрирует core DSL-компоненты сцен. */
87
+ export declare function registerNovaSceneComponents(registry: NovaSchemaRegistry): void;
88
+ 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,38 @@
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
+ /**
19
+ * Помечает class как business store, поля которого могут быть привязаны к Raph data graph.
20
+ */
21
+ export declare function Store(options?: NovaStoreOptions): <T extends new (...args: Array<any>) => object>(target: T) => T;
22
+ /**
23
+ * Помечает поле store как reactive data path.
24
+ */
25
+ export declare function Reactive<TStore extends object = object>(options?: NovaReactiveOptions<TStore>): (...args: Array<any>) => any;
26
+ /**
27
+ * Возвращает store metadata конструктора.
28
+ */
29
+ export declare function readNovaStoreMetadata(target: Function): NovaStoreMetadata | undefined;
30
+ /**
31
+ * Проверяет, что объект помечен как Nova store или содержит reactive fields.
32
+ */
33
+ export declare function isNovaStoreObject(value: unknown): value is object;
34
+ /**
35
+ * Возвращает store options конструктора.
36
+ */
37
+ export declare function readNovaStoreOptions(target: Function): NovaStoreOptions;
38
+ export declare function normalizeNovaStorePhases(input?: NovaStorePhaseInput, fallback?: NovaPhaseName | string): Array<NovaStorePhase>;
@@ -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
+ }