@endge/nova 0.13.6 → 0.13.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain/constants/nova-phase.d.ts +16 -0
- package/dist/domain/types/base.types.d.ts +177 -0
- package/dist/domain/types/component.types.d.ts +156 -0
- package/dist/domain/types/context.types.d.ts +31 -0
- package/dist/domain/types/cursor.types.d.ts +89 -0
- package/dist/domain/types/diagnostics.types.d.ts +148 -0
- package/dist/domain/types/events.types.d.ts +85 -0
- package/dist/domain/types/export.types.d.ts +27 -0
- package/dist/domain/types/hit-test.types.d.ts +16 -0
- package/dist/domain/types/motion.types.d.ts +118 -0
- package/dist/domain/types/renderer.types.d.ts +607 -0
- package/dist/domain/types/rendering/index.d.ts +559 -0
- package/dist/domain/types/semantic.types.d.ts +69 -0
- package/dist/domain/types/sound.types.d.ts +84 -0
- package/dist/domain/types/theme.types.d.ts +53 -0
- package/dist/domain/utils/bounds.d.ts +34 -0
- package/dist/domain/utils/schemaBounds.d.ts +10 -0
- package/dist/index.d.ts +82 -8919
- package/dist/model/input/NovaCaretBlinkController.d.ts +35 -0
- package/dist/model/input/NovaClipboardService.d.ts +18 -0
- package/dist/model/input/NovaInputProxy_Adapter.d.ts +61 -0
- package/dist/model/input/NovaInputValidationController.d.ts +46 -0
- package/dist/model/input/NovaTextInputController.d.ts +126 -0
- package/dist/model/input/NovaTextLayoutEngine.d.ts +31 -0
- package/dist/model/input/index.d.ts +7 -0
- package/dist/model/input/nova-input.types.d.ts +137 -0
- package/dist/model/motion/NovaMotionEngine.d.ts +152 -0
- package/dist/model/motion/nova-motion-easing.d.ts +13 -0
- package/dist/model/motion/nova-motion-interpolation.d.ts +19 -0
- package/dist/model/motion/nova-motion-presets.d.ts +288 -0
- package/dist/model/motion/nova-motion-timeline.d.ts +5 -0
- package/dist/model/platform/NovaCanvas.d.ts +112 -0
- package/dist/model/platform/NovaGraphics.d.ts +32 -0
- package/dist/model/render/backends/canvas2d/NovaCanvas2DTargetManager.d.ts +29 -0
- package/dist/model/render/backends/canvas2d/NovaRenderer2D.d.ts +238 -0
- package/dist/model/render/backends/nova-render-backend-factory.d.ts +10 -0
- package/dist/model/render/backends/nova-render-backend.d.ts +16 -0
- package/dist/model/render/backends/webgl/NovaGpuBufferArena.d.ts +76 -0
- package/dist/model/render/backends/webgl/NovaRendererWebGL.d.ts +154 -0
- package/dist/model/render/backends/webgl/NovaWebGLBatcher.d.ts +17 -0
- package/dist/model/render/backends/webgl/NovaWebGLBuffer.d.ts +19 -0
- package/dist/model/render/backends/webgl/NovaWebGLDevice.d.ts +24 -0
- package/dist/model/render/backends/webgl/NovaWebGLDiagnostics.d.ts +29 -0
- package/dist/model/render/backends/webgl/NovaWebGLFrameRenderer.d.ts +1013 -0
- package/dist/model/render/backends/webgl/NovaWebGLProgram.d.ts +33 -0
- package/dist/model/render/backends/webgl/NovaWebGLTargetManager.d.ts +11 -0
- package/dist/model/render/backends/webgl/NovaWebGLTextRenderer.d.ts +17 -0
- package/dist/model/render/backends/webgl/NovaWebGLTextureManager.d.ts +16 -0
- package/dist/model/render/compiler/NovaRenderBuilder.d.ts +176 -0
- package/dist/model/render/compiler/NovaRenderCommandWriter.d.ts +166 -0
- package/dist/model/render/compiler/NovaRenderCompiler.d.ts +48 -0
- package/dist/model/render/compiler/NovaRenderFrameBuilder.d.ts +59 -0
- package/dist/model/render/graph/NovaRenderGraph.d.ts +96 -0
- package/dist/model/render/graph/NovaRenderHitIndex.d.ts +54 -0
- package/dist/model/render/graph/nova-render-culling.d.ts +26 -0
- package/dist/model/render/graph/nova-render-group.d.ts +18 -0
- package/dist/model/render/graph/nova-render-item.d.ts +35 -0
- package/dist/model/render/graph/nova-render-layer.d.ts +5 -0
- package/dist/model/render/graph/nova-render-stream.d.ts +117 -0
- package/dist/model/render/orchestration/NovaRenderOrchestrator.d.ts +73 -0
- package/dist/model/render/policy/nova-render-policy.d.ts +45 -0
- package/dist/model/render/resources/NovaGlyphAtlasManager.d.ts +45 -0
- package/dist/model/render/resources/NovaRenderResourceCache.d.ts +30 -0
- package/dist/model/render/resources/NovaRenderScheduler.d.ts +33 -0
- package/dist/model/render/resources/NovaTextAtlasManager.d.ts +44 -0
- package/dist/model/render/resources/NovaTextLayoutEngine.d.ts +23 -0
- package/dist/model/render/resources/NovaTextureAtlasManager.d.ts +95 -0
- package/dist/model/render/schema/NovaRenderContext.d.ts +74 -0
- package/dist/model/render/schema/nova-color-parser.d.ts +18 -0
- package/dist/model/render/schema/nova-style-compiler.d.ts +88 -0
- package/dist/model/render/targets/NovaRenderTargetManager.d.ts +51 -0
- package/dist/model/render/targets/nova-render-target-resource.d.ts +14 -0
- package/dist/model/render/utils/nova-icon-rendering.d.ts +9 -0
- package/dist/model/runtime/app/Nova.d.ts +167 -0
- package/dist/model/runtime/app/NovaApp.d.ts +305 -0
- package/dist/model/runtime/app/createNovaRaphRuntime.d.ts +17 -0
- package/dist/model/runtime/assets/NovaAssetRegistry.d.ts +511 -0
- package/dist/model/runtime/commands/NovaCommandBus.d.ts +48 -0
- package/dist/model/runtime/components/NovaComponentNode.d.ts +109 -0
- package/dist/model/runtime/components/NovaComponentRegistry.d.ts +35 -0
- package/dist/model/runtime/components/NovaSchemaRegistry.d.ts +71 -0
- package/dist/model/runtime/components/nova-component-metadata.d.ts +90 -0
- package/dist/model/runtime/components/nova-component.decorator.d.ts +38 -0
- package/dist/model/runtime/components/nova-defined-component.d.ts +58 -0
- package/dist/model/runtime/context/nova-context.d.ts +5 -0
- package/dist/model/runtime/cursor/NovaCursorManager.d.ts +148 -0
- package/dist/model/runtime/debug/NovaDebug.d.ts +105 -0
- package/dist/model/runtime/debug/NovaMetrics.d.ts +55 -0
- package/dist/model/runtime/diagnostics/NovaDiagnostics_Module.d.ts +143 -0
- package/dist/model/runtime/diagnostics/adapters/NovaDiagnosticsBrowser_Adapter.d.ts +32 -0
- package/dist/model/runtime/interaction/NovaEvents.d.ts +229 -0
- package/dist/model/runtime/interaction/NovaHitIndex.d.ts +57 -0
- package/dist/model/runtime/interaction/NovaSpatialIndex.d.ts +49 -0
- package/dist/model/runtime/reactivity/nova-reactivity.d.ts +24 -0
- package/dist/model/runtime/refs/nova-ref.d.ts +61 -0
- package/dist/model/runtime/scene/NovaScene.d.ts +80 -0
- package/dist/model/runtime/scene/nova-scene-components.d.ts +88 -0
- package/dist/model/runtime/state/NovaStore.d.ts +27 -0
- package/dist/model/runtime/state/nova-store-decorators.d.ts +38 -0
- package/dist/model/runtime/state/nova-store-runtime.d.ts +23 -0
- package/dist/model/runtime/state/nova-store-tracking.d.ts +17 -0
- package/dist/model/runtime/sync/NovaSyncScope.d.ts +93 -0
- package/dist/model/runtime/sync/nova-sync-context.d.ts +2 -0
- package/dist/model/runtime/sync/nova-sync-ports.d.ts +5 -0
- package/dist/model/runtime/sync/nova-sync.types.d.ts +48 -0
- package/dist/model/runtime/template/NovaTemplateRuntime.d.ts +79 -0
- package/dist/model/runtime/tree/NovaContainer.d.ts +78 -0
- package/dist/model/runtime/tree/NovaNode.d.ts +626 -0
- package/dist/model/runtime/tree/NovaSurface.d.ts +95 -0
- package/dist/model/semantic/NovaSemanticService.d.ts +30 -0
- package/dist/model/sound/NovaSoundEngine.d.ts +134 -0
- package/dist/model/telemetry.d.ts +108 -0
- package/dist/model/text-selection/NovaTextSelectionService.d.ts +85 -0
- package/dist/model/text-selection/index.d.ts +2 -0
- package/dist/model/text-selection/nova-text-selection.types.d.ts +54 -0
- package/dist/model/theme/NovaGlobalThemeRegistry.d.ts +57 -0
- package/dist/model/theme/NovaThemeService.d.ts +83 -0
- package/dist/nova.js +14489 -14069
- package/package.json +29 -23
|
@@ -0,0 +1,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
|
+
* Управляет motion segments, timelines и playback в Nova runtime.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NovaMotionEngine {
|
|
8
|
+
private readonly app;
|
|
9
|
+
private readonly playbacks;
|
|
10
|
+
private lease;
|
|
11
|
+
/**
|
|
12
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
13
|
+
*/
|
|
14
|
+
constructor(app: NovaApp<any>);
|
|
15
|
+
/**
|
|
16
|
+
* Выполняет внутреннюю операцию to.
|
|
17
|
+
*/
|
|
18
|
+
to(target: NovaMotionTarget, patch: NovaMotionPatch, options?: NovaMotionTweenOptions): NovaMotionPlayback;
|
|
19
|
+
/**
|
|
20
|
+
* Выполняет внутреннюю операцию timeline.
|
|
21
|
+
*/
|
|
22
|
+
timeline(options: NovaMotionTimelineOptions): NovaMotionPlayback;
|
|
23
|
+
/**
|
|
24
|
+
* Выполняет внутреннюю операцию preset.
|
|
25
|
+
*/
|
|
26
|
+
preset(target: NovaMotionTarget, name: NovaMotionPresetName, options?: NovaMotionPresetOptions): NovaMotionPlayback;
|
|
27
|
+
/**
|
|
28
|
+
* Выполняет внутреннюю операцию pattern.
|
|
29
|
+
*/
|
|
30
|
+
pattern(targets: Array<NovaMotionTarget>, name: NovaMotionPatternName, options?: NovaMotionPatternOptions): NovaMotionPlayback;
|
|
31
|
+
/**
|
|
32
|
+
* Выполняет внутреннюю операцию cancel.
|
|
33
|
+
*/
|
|
34
|
+
cancel(target?: NovaMotionTarget): void;
|
|
35
|
+
/**
|
|
36
|
+
* Выполняет внутреннюю операцию pause all.
|
|
37
|
+
*/
|
|
38
|
+
pauseAll(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Выполняет внутреннюю операцию resume all.
|
|
41
|
+
*/
|
|
42
|
+
resumeAll(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Выполняет один tick runtime-обработки.
|
|
45
|
+
*/
|
|
46
|
+
tick(frame: NovaMotionTickContext): void;
|
|
47
|
+
/**
|
|
48
|
+
* Освобождает runtime resources и снимает связанные ссылки.
|
|
49
|
+
*/
|
|
50
|
+
destroy(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Выполняет внутреннюю операцию activate.
|
|
53
|
+
*/
|
|
54
|
+
_activate(playback: NovaMotionPlaybackController): void;
|
|
55
|
+
/**
|
|
56
|
+
* Выполняет внутреннюю операцию deactivate.
|
|
57
|
+
*/
|
|
58
|
+
_deactivate(playback: NovaMotionPlaybackController): void;
|
|
59
|
+
/**
|
|
60
|
+
* Добавляет playback.
|
|
61
|
+
*/
|
|
62
|
+
private addPlayback;
|
|
63
|
+
/**
|
|
64
|
+
* Выполняет внутреннюю операцию overwrite segments.
|
|
65
|
+
*/
|
|
66
|
+
private overwriteSegments;
|
|
67
|
+
/**
|
|
68
|
+
* Читает value.
|
|
69
|
+
*/
|
|
70
|
+
private readValue;
|
|
71
|
+
/**
|
|
72
|
+
* Выполняет внутреннюю операцию apply patch.
|
|
73
|
+
*/
|
|
74
|
+
private applyPatch;
|
|
75
|
+
/**
|
|
76
|
+
* Выполняет внутреннюю операцию sync loop lease.
|
|
77
|
+
*/
|
|
78
|
+
private syncLoopLease;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Управляет playback state одного motion timeline или tween.
|
|
82
|
+
*/
|
|
83
|
+
declare class NovaMotionPlaybackController implements NovaMotionPlayback {
|
|
84
|
+
private readonly engine;
|
|
85
|
+
private readonly options;
|
|
86
|
+
private segments;
|
|
87
|
+
private startedAt;
|
|
88
|
+
private pausedAt;
|
|
89
|
+
private seekOffset;
|
|
90
|
+
private _state;
|
|
91
|
+
/**
|
|
92
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
93
|
+
*/
|
|
94
|
+
constructor(engine: NovaMotionEngine, options: NovaMotionOptions);
|
|
95
|
+
/**
|
|
96
|
+
* Возвращает id.
|
|
97
|
+
*/
|
|
98
|
+
get id(): string | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Возвращает state.
|
|
101
|
+
*/
|
|
102
|
+
get state(): NovaMotionPlaybackState;
|
|
103
|
+
/**
|
|
104
|
+
* Возвращает empty.
|
|
105
|
+
*/
|
|
106
|
+
get empty(): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Обновляет segments.
|
|
109
|
+
*/
|
|
110
|
+
setSegments(segments: Array<NovaMotionSegment>): void;
|
|
111
|
+
/**
|
|
112
|
+
* Проверяет наличие target.
|
|
113
|
+
*/
|
|
114
|
+
hasTarget(target: NovaMotionTarget): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Удаляет segments.
|
|
117
|
+
*/
|
|
118
|
+
removeSegments(predicate: (segment: NovaMotionSegment) => boolean): void;
|
|
119
|
+
/**
|
|
120
|
+
* Выполняет внутреннюю операцию play.
|
|
121
|
+
*/
|
|
122
|
+
play(): void;
|
|
123
|
+
/**
|
|
124
|
+
* Выполняет внутреннюю операцию pause.
|
|
125
|
+
*/
|
|
126
|
+
pause(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Выполняет внутреннюю операцию resume.
|
|
129
|
+
*/
|
|
130
|
+
resume(): void;
|
|
131
|
+
/**
|
|
132
|
+
* Выполняет внутреннюю операцию cancel.
|
|
133
|
+
*/
|
|
134
|
+
cancel(): void;
|
|
135
|
+
/**
|
|
136
|
+
* Выполняет внутреннюю операцию seek.
|
|
137
|
+
*/
|
|
138
|
+
seek(time: number): void;
|
|
139
|
+
/**
|
|
140
|
+
* Выполняет один tick runtime-обработки.
|
|
141
|
+
*/
|
|
142
|
+
tick(now: number, patches: Map<NovaMotionTarget, NovaMotionPatch>): void;
|
|
143
|
+
/**
|
|
144
|
+
* Выполняет внутреннюю операцию apply at.
|
|
145
|
+
*/
|
|
146
|
+
private applyAt;
|
|
147
|
+
/**
|
|
148
|
+
* Возвращает duration.
|
|
149
|
+
*/
|
|
150
|
+
private get duration();
|
|
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 {};
|