@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,35 @@
1
+ /**
2
+ * Координирует поведение контроллера NovaCaretBlinkController.
3
+ */
4
+ export declare class NovaCaretBlinkController {
5
+ private readonly _onTick;
6
+ private readonly _interval;
7
+ private static readonly _instances;
8
+ private static _timer;
9
+ private _visible;
10
+ private _active;
11
+ /**
12
+ * Создает экземпляр NovaCaretBlinkController и подготавливает базовое состояние.
13
+ */
14
+ constructor(_onTick: (visible: boolean) => void, _interval?: number);
15
+ /**
16
+ * Возвращает значение состояния NovaCaretBlinkController.
17
+ */
18
+ getVisible(): boolean;
19
+ /**
20
+ * Запускает runtime-процесс NovaCaretBlinkController.
21
+ */
22
+ start(): void;
23
+ /**
24
+ * Останавливает runtime-процесс NovaCaretBlinkController.
25
+ */
26
+ stop(): void;
27
+ /**
28
+ * Сбрасывает состояние к базовым значениям NovaCaretBlinkController.
29
+ */
30
+ reset(): void;
31
+ /**
32
+ * Выполняет внутренний шаг ensureTimer для NovaCaretBlinkController.
33
+ */
34
+ private static _ensureTimer;
35
+ }
@@ -0,0 +1,18 @@
1
+ export interface NovaClipboardResult {
2
+ ok: boolean;
3
+ text?: string;
4
+ error?: unknown;
5
+ }
6
+ /**
7
+ * Инкапсулирует сервисную логику NovaClipboardService.
8
+ */
9
+ export declare class NovaClipboardService {
10
+ /**
11
+ * Выполняет действие readText в рамках ответственности NovaClipboardService.
12
+ */
13
+ readText(proxy?: HTMLTextAreaElement | null): Promise<NovaClipboardResult>;
14
+ /**
15
+ * Выполняет действие writeText в рамках ответственности NovaClipboardService.
16
+ */
17
+ writeText(text: string, proxy?: HTMLTextAreaElement | null): Promise<NovaClipboardResult>;
18
+ }
@@ -0,0 +1,61 @@
1
+ import { NovaInputEngine } from './nova-input.types';
2
+ export interface NovaInputProxyOptions {
3
+ engine?: NovaInputEngine;
4
+ ownerDocument?: Document;
5
+ className?: string;
6
+ onInput?: (value: string, event: Event) => void;
7
+ onCompositionStart?: (event: CompositionEvent) => void;
8
+ onCompositionUpdate?: (event: CompositionEvent) => void;
9
+ onCompositionEnd?: (event: CompositionEvent) => void;
10
+ }
11
+ /**
12
+ * Инкапсулирует сервисную логику NovaInputProxy_Adapter.
13
+ */
14
+ export declare class NovaInputProxy_Adapter {
15
+ /** Browser input element, attachment state и injected options. */
16
+ private _textarea;
17
+ private _attached;
18
+ private readonly _options;
19
+ /**
20
+ * ----------------------------------------
21
+ * PUBLIC
22
+ * ----------------------------------------
23
+ */
24
+ /**
25
+ * Создает экземпляр NovaInputProxy_Adapter и подготавливает базовое состояние.
26
+ */
27
+ constructor(options?: NovaInputProxyOptions);
28
+ /**
29
+ * Подключает внешнюю runtime-сущность NovaInputProxy_Adapter.
30
+ */
31
+ attach(): HTMLTextAreaElement | null;
32
+ /**
33
+ * Отключает внешнюю runtime-сущность NovaInputProxy_Adapter.
34
+ */
35
+ detach(): void;
36
+ /**
37
+ * Переводит focus в целевое состояние NovaInputProxy_Adapter.
38
+ */
39
+ focus(value: string, start: number, end?: number): void;
40
+ /**
41
+ * Снимает focus с целевого состояния NovaInputProxy_Adapter.
42
+ */
43
+ blur(): void;
44
+ /**
45
+ * Синхронизирует состояние между слоями NovaInputProxy_Adapter.
46
+ */
47
+ sync(value: string, start: number, end?: number): void;
48
+ /**
49
+ * Освобождает runtime-ресурсы и подписки NovaInputProxy_Adapter.
50
+ */
51
+ dispose(): void;
52
+ /**
53
+ * ----------------------------------------
54
+ * ACCESS
55
+ * ----------------------------------------
56
+ */
57
+ /** Возвращает hidden textarea для browser input integration. */
58
+ get element(): HTMLTextAreaElement | null;
59
+ }
60
+ /** @deprecated Используйте NovaInputProxy_Adapter. */
61
+ export { NovaInputProxy_Adapter as NovaInputProxyService };
@@ -0,0 +1,46 @@
1
+ import { NovaInputValidationResult, NovaInputValidationState } from './nova-input.types';
2
+ export type NovaInputValidateFn<TValue = unknown, TContext = unknown> = (value: TValue, context: TContext) => NovaInputValidationResult | Promise<NovaInputValidationResult>;
3
+ /**
4
+ * Координирует поведение контроллера NovaInputValidationController.
5
+ */
6
+ export declare class NovaInputValidationController<TValue = unknown, TContext = unknown> {
7
+ private readonly _validateFn?;
8
+ private _token;
9
+ private _state;
10
+ /**
11
+ * Создает экземпляр NovaInputValidationController и подготавливает базовое состояние.
12
+ */
13
+ constructor(_validateFn?: NovaInputValidateFn<TValue, TContext> | undefined);
14
+ /**
15
+ * Возвращает значение состояния NovaInputValidationController.
16
+ */
17
+ getState(): NovaInputValidationState;
18
+ /**
19
+ * Выполняет действие markDirty в рамках ответственности NovaInputValidationController.
20
+ */
21
+ markDirty(): void;
22
+ /**
23
+ * Выполняет действие markTouched в рамках ответственности NovaInputValidationController.
24
+ */
25
+ markTouched(): void;
26
+ /**
27
+ * Выполняет действие markSubmitted в рамках ответственности NovaInputValidationController.
28
+ */
29
+ markSubmitted(): void;
30
+ /**
31
+ * Проверяет входное значение NovaInputValidationController.
32
+ */
33
+ validate(value: TValue, context: TContext): Promise<NovaInputValidationState>;
34
+ /**
35
+ * Обновляет значение состояния NovaInputValidationController.
36
+ */
37
+ setResult(result: NovaInputValidationResult): NovaInputValidationState;
38
+ /**
39
+ * Сбрасывает состояние к базовым значениям NovaInputValidationController.
40
+ */
41
+ reset(): void;
42
+ /**
43
+ * Применяет подготовленное состояние NovaInputValidationController.
44
+ */
45
+ private _applyResult;
46
+ }
@@ -0,0 +1,126 @@
1
+ import { NovaTextInputContext, NovaTextInputControllerOptions, NovaTextInputLayoutResult, NovaTextInputSnapshot, NovaTextSelection } from './nova-input.types';
2
+ /**
3
+ * Координирует поведение контроллера NovaTextInputController.
4
+ */
5
+ export declare class NovaTextInputController {
6
+ private readonly _options;
7
+ private _value;
8
+ private _draft;
9
+ private _selectionStart;
10
+ private _selectionEnd;
11
+ private _focused;
12
+ private _composing;
13
+ private _dirty;
14
+ private readonly _multiline;
15
+ private readonly _maxLength?;
16
+ private readonly _historyLimit;
17
+ private _history;
18
+ /**
19
+ * Создает экземпляр NovaTextInputController и подготавливает базовое состояние.
20
+ */
21
+ constructor(_options?: NovaTextInputControllerOptions);
22
+ /**
23
+ * Возвращает значение состояния NovaTextInputController.
24
+ */
25
+ getState(): NovaTextInputSnapshot;
26
+ /**
27
+ * Обновляет значение состояния NovaTextInputController.
28
+ */
29
+ setValue(value: string | number, context?: NovaTextInputContext): void;
30
+ /**
31
+ * Обновляет значение состояния NovaTextInputController.
32
+ */
33
+ setDraft(value: string | number, context?: NovaTextInputContext): void;
34
+ /**
35
+ * Переводит focus в целевое состояние NovaTextInputController.
36
+ */
37
+ focus(): void;
38
+ /**
39
+ * Снимает focus с целевого состояния NovaTextInputController.
40
+ */
41
+ blur(): void;
42
+ /**
43
+ * Обновляет состояние выбора NovaTextInputController.
44
+ */
45
+ select(start?: number, end?: number): void;
46
+ /**
47
+ * Обновляет состояние выбора NovaTextInputController.
48
+ */
49
+ selectAll(): void;
50
+ /**
51
+ * Возвращает значение состояния NovaTextInputController.
52
+ */
53
+ getSelection(): NovaTextSelection;
54
+ /**
55
+ * Возвращает значение состояния NovaTextInputController.
56
+ */
57
+ getSelectedText(): string;
58
+ /**
59
+ * Добавляет сущность в runtime-коллекцию NovaTextInputController.
60
+ */
61
+ insertText(text: string, context?: NovaTextInputContext): void;
62
+ /**
63
+ * Удаляет сущность из runtime-коллекции NovaTextInputController.
64
+ */
65
+ deleteBackward(context?: NovaTextInputContext): void;
66
+ /**
67
+ * Удаляет сущность из runtime-коллекции NovaTextInputController.
68
+ */
69
+ deleteForward(context?: NovaTextInputContext): void;
70
+ /**
71
+ * Выполняет действие moveCaret в рамках ответственности NovaTextInputController.
72
+ */
73
+ moveCaret(direction: 'left' | 'right' | 'home' | 'end' | 'up' | 'down', options?: {
74
+ shift?: boolean;
75
+ word?: boolean;
76
+ layout?: NovaTextInputLayoutResult;
77
+ }): void;
78
+ /**
79
+ * Обрабатывает runtime-событие NovaTextInputController.
80
+ */
81
+ handleKeydown(event: Pick<KeyboardEvent, 'key' | 'metaKey' | 'ctrlKey' | 'altKey' | 'shiftKey' | 'preventDefault'>, context?: NovaTextInputContext): boolean;
82
+ /**
83
+ * Фиксирует подготовленные изменения NovaTextInputController.
84
+ */
85
+ commit(context?: NovaTextInputContext): void;
86
+ /**
87
+ * Выполняет действие cancel в рамках ответственности NovaTextInputController.
88
+ */
89
+ cancel(context?: NovaTextInputContext): void;
90
+ /**
91
+ * Запускает runtime-процесс NovaTextInputController.
92
+ */
93
+ startComposition(): void;
94
+ /**
95
+ * Обновляет runtime-состояние NovaTextInputController.
96
+ */
97
+ updateComposition(text: string, context?: NovaTextInputContext): void;
98
+ /**
99
+ * Выполняет действие endComposition в рамках ответственности NovaTextInputController.
100
+ */
101
+ endComposition(): void;
102
+ /**
103
+ * Выполняет действие undo в рамках ответственности NovaTextInputController.
104
+ */
105
+ undo(): void;
106
+ /**
107
+ * Выполняет внутренний шаг replaceRange для NovaTextInputController.
108
+ */
109
+ private _replaceRange;
110
+ /**
111
+ * Обновляет состояние выбора NovaTextInputController.
112
+ */
113
+ private _selectionBounds;
114
+ /**
115
+ * Выполняет внутренний шаг canEdit для NovaTextInputController.
116
+ */
117
+ private _canEdit;
118
+ /**
119
+ * Ограничивает значение допустимым диапазоном NovaTextInputController.
120
+ */
121
+ private _clampValue;
122
+ /**
123
+ * Выполняет внутренний шаг pushHistory для NovaTextInputController.
124
+ */
125
+ private _pushHistory;
126
+ }
@@ -0,0 +1,31 @@
1
+ import { NovaRectLike, NovaTextInputLayoutOptions, NovaTextInputLayoutResult } from './nova-input.types';
2
+ /**
3
+ * Описывает ответственность NovaTextLayoutEngine в архитектуре проекта.
4
+ */
5
+ export declare class NovaTextLayoutEngine {
6
+ /**
7
+ * Выполняет действие layout в рамках ответственности NovaTextLayoutEngine.
8
+ */
9
+ layout(options: NovaTextInputLayoutOptions): NovaTextInputLayoutResult;
10
+ /**
11
+ * Выполняет действие coordinateToIndex в рамках ответственности NovaTextLayoutEngine.
12
+ */
13
+ coordinateToIndex(layout: NovaTextInputLayoutResult, x: number, y: number): number;
14
+ /**
15
+ * Выполняет действие caretRect в рамках ответственности NovaTextLayoutEngine.
16
+ */
17
+ caretRect(layout: NovaTextInputLayoutResult, index: number): NovaRectLike;
18
+ /**
19
+ * Обновляет состояние выбора NovaTextLayoutEngine.
20
+ */
21
+ selectionRects(layout: NovaTextInputLayoutResult, start: number, end: number): Array<NovaRectLike>;
22
+ }
23
+ export declare function layoutNovaTextInput(options: NovaTextInputLayoutOptions): NovaTextInputLayoutResult;
24
+ export declare function novaTextIndexAtPoint(layout: NovaTextInputLayoutResult, x: number, y: number): number;
25
+ export declare function novaCaretRectAtIndex(layout: NovaTextInputLayoutResult, index: number): NovaRectLike;
26
+ export declare function novaSelectionRects(layout: NovaTextInputLayoutResult, start: number, end: number): Array<NovaRectLike>;
27
+ export declare function splitGraphemes(text: string): Array<{
28
+ value: string;
29
+ index: number;
30
+ end: number;
31
+ }>;
@@ -0,0 +1,7 @@
1
+ export * from './nova-input.types';
2
+ export * from './NovaCaretBlinkController';
3
+ export * from './NovaClipboardService';
4
+ export * from './NovaInputProxy_Adapter';
5
+ export * from './NovaInputValidationController';
6
+ export * from './NovaTextInputController';
7
+ export { layoutNovaTextInput, novaCaretRectAtIndex, NovaTextLayoutEngine as NovaInputTextLayoutEngine, novaSelectionRects, novaTextIndexAtPoint, splitGraphemes, } from './NovaTextLayoutEngine';
@@ -0,0 +1,137 @@
1
+ import { NovaTextFont } from '../../domain/types/renderer.types';
2
+ type NovaResolvedTextFont = NonNullable<NovaTextFont>;
3
+ export type NovaInputEngine = 'canvas' | 'proxy' | 'auto';
4
+ export type NovaInputState = 'idle' | 'hovered' | 'focused' | 'disabled' | 'invalid' | 'readonly';
5
+ export type NovaInputValidationResult = true | string | {
6
+ message: string;
7
+ code?: string;
8
+ };
9
+ export interface NovaTextSelection {
10
+ start: number;
11
+ end: number;
12
+ direction?: 'forward' | 'backward' | 'none';
13
+ }
14
+ export interface NovaTextRange {
15
+ start: number;
16
+ end: number;
17
+ }
18
+ export interface NovaRectLike {
19
+ x: number;
20
+ y: number;
21
+ width: number;
22
+ height: number;
23
+ }
24
+ export interface NovaTextInputContext {
25
+ reason?: string;
26
+ event?: Event;
27
+ }
28
+ export interface NovaTextInputSnapshot {
29
+ value: string;
30
+ draft: string;
31
+ selectionStart: number;
32
+ selectionEnd: number;
33
+ focused: boolean;
34
+ composing: boolean;
35
+ dirty: boolean;
36
+ readonly: boolean;
37
+ disabled: boolean;
38
+ }
39
+ export interface NovaTextInputControllerOptions {
40
+ value?: string | number;
41
+ defaultValue?: string | number;
42
+ multiline?: boolean;
43
+ readonly?: boolean;
44
+ disabled?: boolean;
45
+ maxLength?: number;
46
+ historyLimit?: number;
47
+ onValueChange?: (value: string, context: NovaTextInputContext) => void;
48
+ onCommit?: (value: string, context: NovaTextInputContext) => void;
49
+ onCancel?: (context: NovaTextInputContext) => void;
50
+ }
51
+ export interface NovaTextMeasureOptions {
52
+ fontSize?: number;
53
+ lineHeight?: number;
54
+ fontFamily?: string;
55
+ fontWeight?: NovaResolvedTextFont['weight'];
56
+ fontStyle?: NovaResolvedTextFont['style'];
57
+ charWidth?: number;
58
+ tabSize?: number;
59
+ padding?: number | {
60
+ top?: number;
61
+ right?: number;
62
+ bottom?: number;
63
+ left?: number;
64
+ horizontal?: number;
65
+ vertical?: number;
66
+ };
67
+ measureText?: NovaTextMeasureFn;
68
+ }
69
+ export type NovaTextInputAlign = 'left' | 'center' | 'right';
70
+ export interface NovaTextMeasureContext {
71
+ fontSize: number;
72
+ lineHeight: number;
73
+ fontFamily: string;
74
+ fontWeight: NovaResolvedTextFont['weight'];
75
+ fontStyle: NovaResolvedTextFont['style'];
76
+ charWidth: number;
77
+ tabSize: number;
78
+ }
79
+ export type NovaTextMeasureFn = (text: string, context: NovaTextMeasureContext) => number;
80
+ export interface NovaTextInputLayoutOptions extends NovaTextMeasureOptions {
81
+ text: string;
82
+ width: number;
83
+ height: number;
84
+ multiline?: boolean;
85
+ wrap?: boolean;
86
+ align?: NovaTextInputAlign;
87
+ scrollX?: number;
88
+ scrollY?: number;
89
+ }
90
+ export interface NovaTextLayoutGlyph {
91
+ value: string;
92
+ index: number;
93
+ end: number;
94
+ x: number;
95
+ y: number;
96
+ width: number;
97
+ height: number;
98
+ line: number;
99
+ }
100
+ export interface NovaTextLayoutLine {
101
+ index: number;
102
+ start: number;
103
+ end: number;
104
+ x: number;
105
+ y: number;
106
+ width: number;
107
+ height: number;
108
+ text: string;
109
+ }
110
+ export interface NovaTextInputLayoutResult {
111
+ text: string;
112
+ width: number;
113
+ height: number;
114
+ contentX: number;
115
+ contentY: number;
116
+ contentWidth: number;
117
+ contentHeight: number;
118
+ scrollX: number;
119
+ scrollY: number;
120
+ fontSize: number;
121
+ lineHeight: number;
122
+ charWidth: number;
123
+ multiline: boolean;
124
+ wrap: boolean;
125
+ lines: Array<NovaTextLayoutLine>;
126
+ glyphs: Array<NovaTextLayoutGlyph>;
127
+ }
128
+ export interface NovaInputValidationState {
129
+ result: NovaInputValidationResult;
130
+ pending: boolean;
131
+ dirty: boolean;
132
+ touched: boolean;
133
+ submitted: boolean;
134
+ message?: string;
135
+ code?: string;
136
+ }
137
+ export {};
@@ -0,0 +1,152 @@
1
+ import { NovaMotionOptions, NovaMotionPatch, NovaMotionPlayback, NovaMotionPlaybackState, NovaMotionSegment, NovaMotionTarget, NovaMotionTickContext, NovaMotionTimelineOptions, NovaMotionTweenOptions } from '../../domain/types/motion.types';
2
+ import { NovaMotionPatternName, NovaMotionPatternOptions, NovaMotionPresetName, NovaMotionPresetOptions } from './nova-motion-presets';
3
+ import { NovaApp } from '../runtime/app/NovaApp';
4
+ /**
5
+ * Управляет playback state одного motion timeline или tween.
6
+ */
7
+ declare class NovaMotionPlaybackController implements NovaMotionPlayback {
8
+ private readonly _engine;
9
+ private readonly _options;
10
+ private _segments;
11
+ private _startedAt;
12
+ private _pausedAt;
13
+ private _seekOffset;
14
+ private _state;
15
+ /**
16
+ * Создает instance и подготавливает внутреннее состояние.
17
+ */
18
+ constructor(_engine: NovaMotionEngine, _options: NovaMotionOptions);
19
+ /**
20
+ * Возвращает id.
21
+ */
22
+ get id(): string | undefined;
23
+ /**
24
+ * Возвращает state.
25
+ */
26
+ get state(): NovaMotionPlaybackState;
27
+ /**
28
+ * Возвращает empty.
29
+ */
30
+ get empty(): boolean;
31
+ /**
32
+ * Обновляет segments.
33
+ */
34
+ setSegments(segments: Array<NovaMotionSegment>): void;
35
+ /**
36
+ * Проверяет наличие target.
37
+ */
38
+ hasTarget(target: NovaMotionTarget): boolean;
39
+ /**
40
+ * Удаляет segments.
41
+ */
42
+ removeSegments(predicate: (segment: NovaMotionSegment) => boolean): void;
43
+ /**
44
+ * Выполняет внутреннюю операцию play.
45
+ */
46
+ play(): void;
47
+ /**
48
+ * Выполняет внутреннюю операцию pause.
49
+ */
50
+ pause(): void;
51
+ /**
52
+ * Выполняет внутреннюю операцию resume.
53
+ */
54
+ resume(): void;
55
+ /**
56
+ * Выполняет внутреннюю операцию cancel.
57
+ */
58
+ cancel(): void;
59
+ /**
60
+ * Выполняет внутреннюю операцию seek.
61
+ */
62
+ seek(time: number): void;
63
+ /**
64
+ * Выполняет один tick runtime-обработки.
65
+ */
66
+ tick(now: number, patches: Map<NovaMotionTarget, NovaMotionPatch>): void;
67
+ /**
68
+ * Выполняет внутреннюю операцию apply at.
69
+ */
70
+ private _applyAt;
71
+ /**
72
+ * Возвращает duration.
73
+ */
74
+ private get _duration();
75
+ }
76
+ /**
77
+ * Управляет motion segments, timelines и playback в Nova runtime.
78
+ */
79
+ export declare class NovaMotionEngine {
80
+ private readonly _app;
81
+ private readonly _playbacks;
82
+ private _lease;
83
+ /**
84
+ * Создает instance и подготавливает внутреннее состояние.
85
+ */
86
+ constructor(_app: NovaApp<any>);
87
+ /**
88
+ * Выполняет внутреннюю операцию to.
89
+ */
90
+ to(target: NovaMotionTarget, patch: NovaMotionPatch, options?: NovaMotionTweenOptions): NovaMotionPlayback;
91
+ /**
92
+ * Выполняет внутреннюю операцию timeline.
93
+ */
94
+ timeline(options: NovaMotionTimelineOptions): NovaMotionPlayback;
95
+ /**
96
+ * Выполняет внутреннюю операцию preset.
97
+ */
98
+ preset(target: NovaMotionTarget, name: NovaMotionPresetName, options?: NovaMotionPresetOptions): NovaMotionPlayback;
99
+ /**
100
+ * Выполняет внутреннюю операцию pattern.
101
+ */
102
+ pattern(targets: Array<NovaMotionTarget>, name: NovaMotionPatternName, options?: NovaMotionPatternOptions): NovaMotionPlayback;
103
+ /**
104
+ * Выполняет внутреннюю операцию cancel.
105
+ */
106
+ cancel(target?: NovaMotionTarget): void;
107
+ /**
108
+ * Выполняет внутреннюю операцию pause all.
109
+ */
110
+ pauseAll(): void;
111
+ /**
112
+ * Выполняет внутреннюю операцию resume all.
113
+ */
114
+ resumeAll(): void;
115
+ /**
116
+ * Выполняет один tick runtime-обработки.
117
+ */
118
+ tick(frame: NovaMotionTickContext): void;
119
+ /**
120
+ * Освобождает runtime resources и снимает связанные ссылки.
121
+ */
122
+ destroy(): void;
123
+ /**
124
+ * Выполняет внутреннюю операцию activate.
125
+ */
126
+ _activate(playback: NovaMotionPlaybackController): void;
127
+ /**
128
+ * Выполняет внутреннюю операцию deactivate.
129
+ */
130
+ _deactivate(playback: NovaMotionPlaybackController): void;
131
+ /**
132
+ * Добавляет playback.
133
+ */
134
+ private _addPlayback;
135
+ /**
136
+ * Выполняет внутреннюю операцию overwrite segments.
137
+ */
138
+ private _overwriteSegments;
139
+ /**
140
+ * Читает value.
141
+ */
142
+ private _readValue;
143
+ /**
144
+ * Выполняет внутреннюю операцию apply patch.
145
+ */
146
+ private _applyPatch;
147
+ /**
148
+ * Выполняет внутреннюю операцию sync loop lease.
149
+ */
150
+ private _syncLoopLease;
151
+ }
152
+ export {};
@@ -0,0 +1,13 @@
1
+ import { NovaMotionEasingName, NovaMotionOptions } from '../../domain/types/motion.types';
2
+ /**
3
+ * Хранит значение NOVA_MOTION_EASING, используемое runtime-кодом пакета.
4
+ */
5
+ export declare const NOVA_MOTION_EASING: Record<NovaMotionEasingName, (t: number) => number>;
6
+ /**
7
+ * Вычисляет nova motion easing.
8
+ */
9
+ export declare function resolveNovaMotionEasing(easing: NovaMotionOptions['easing']): (t: number) => number;
10
+ /**
11
+ * Выполняет публичную операцию clamp motion progress.
12
+ */
13
+ export declare function clampMotionProgress(value: number): number;
@@ -0,0 +1,19 @@
1
+ import { NovaMotionValue } from '../../domain/types/motion.types';
2
+ /**
3
+ * Описывает контракт RgbaColor.
4
+ */
5
+ interface RgbaColor {
6
+ r: number;
7
+ g: number;
8
+ b: number;
9
+ a: number;
10
+ }
11
+ /**
12
+ * Выполняет публичную операцию interpolate nova motion value.
13
+ */
14
+ export declare function interpolateNovaMotionValue(from: NovaMotionValue, to: NovaMotionValue, progress: number): NovaMotionValue;
15
+ /**
16
+ * Парсит color.
17
+ */
18
+ export declare function parseColor(value: unknown): RgbaColor | null;
19
+ export {};