@flyingrobots/bijou-tui 4.4.1 → 7.0.0
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/README.md +244 -21
- package/dist/animate.d.ts +4 -0
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +47 -20
- package/dist/animate.js.map +1 -1
- package/dist/app-frame-actions.d.ts.map +1 -1
- package/dist/app-frame-actions.js +55 -0
- package/dist/app-frame-actions.js.map +1 -1
- package/dist/app-frame-i18n.d.ts.map +1 -1
- package/dist/app-frame-i18n.js +51 -0
- package/dist/app-frame-i18n.js.map +1 -1
- package/dist/app-frame-layers.d.ts +11 -1
- package/dist/app-frame-layers.d.ts.map +1 -1
- package/dist/app-frame-layers.js +19 -0
- package/dist/app-frame-layers.js.map +1 -1
- package/dist/app-frame-overlays.d.ts +82 -0
- package/dist/app-frame-overlays.d.ts.map +1 -0
- package/dist/app-frame-overlays.js +480 -0
- package/dist/app-frame-overlays.js.map +1 -0
- package/dist/app-frame-palette.d.ts.map +1 -1
- package/dist/app-frame-palette.js +36 -16
- package/dist/app-frame-palette.js.map +1 -1
- package/dist/app-frame-render.d.ts.map +1 -1
- package/dist/app-frame-render.js +16 -7
- package/dist/app-frame-render.js.map +1 -1
- package/dist/app-frame-types.d.ts +141 -5
- package/dist/app-frame-types.d.ts.map +1 -1
- package/dist/app-frame-types.js +17 -1
- package/dist/app-frame-types.js.map +1 -1
- package/dist/app-frame-utils.d.ts +3 -1
- package/dist/app-frame-utils.d.ts.map +1 -1
- package/dist/app-frame-utils.js +11 -5
- package/dist/app-frame-utils.js.map +1 -1
- package/dist/app-frame.d.ts +22 -86
- package/dist/app-frame.d.ts.map +1 -1
- package/dist/app-frame.js +475 -629
- package/dist/app-frame.js.map +1 -1
- package/dist/browsable-list.d.ts +12 -0
- package/dist/browsable-list.d.ts.map +1 -1
- package/dist/browsable-list.js +17 -6
- package/dist/browsable-list.js.map +1 -1
- package/dist/canvas.d.ts +11 -3
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +146 -13
- package/dist/canvas.js.map +1 -1
- package/dist/cell-glyph-fit.d.ts +20 -0
- package/dist/cell-glyph-fit.d.ts.map +1 -0
- package/dist/cell-glyph-fit.js +82 -0
- package/dist/cell-glyph-fit.js.map +1 -0
- package/dist/collection-surface.d.ts +8 -0
- package/dist/collection-surface.d.ts.map +1 -1
- package/dist/collection-surface.js +72 -8
- package/dist/collection-surface.js.map +1 -1
- package/dist/command-palette.d.ts +2 -0
- package/dist/command-palette.d.ts.map +1 -1
- package/dist/command-palette.js +36 -19
- package/dist/command-palette.js.map +1 -1
- package/dist/css/text-style.d.ts +2 -0
- package/dist/css/text-style.d.ts.map +1 -1
- package/dist/css/text-style.js +18 -8
- package/dist/css/text-style.js.map +1 -1
- package/dist/debug-overlay.d.ts +19 -0
- package/dist/debug-overlay.d.ts.map +1 -0
- package/dist/debug-overlay.js +25 -0
- package/dist/debug-overlay.js.map +1 -0
- package/dist/design-language.d.ts.map +1 -1
- package/dist/design-language.js +4 -5
- package/dist/design-language.js.map +1 -1
- package/dist/driver.d.ts +102 -0
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +259 -19
- package/dist/driver.js.map +1 -1
- package/dist/eventbus.d.ts +20 -0
- package/dist/eventbus.d.ts.map +1 -1
- package/dist/eventbus.js +47 -0
- package/dist/eventbus.js.map +1 -1
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +2 -2
- package/dist/file-picker.js.map +1 -1
- package/dist/flex.d.ts.map +1 -1
- package/dist/flex.js +6 -6
- package/dist/flex.js.map +1 -1
- package/dist/focus-area.d.ts +13 -4
- package/dist/focus-area.d.ts.map +1 -1
- package/dist/focus-area.js +56 -14
- package/dist/focus-area.js.map +1 -1
- package/dist/focus-map.d.ts +40 -0
- package/dist/focus-map.d.ts.map +1 -0
- package/dist/focus-map.js +133 -0
- package/dist/focus-map.js.map +1 -0
- package/dist/grid.d.ts +2 -2
- package/dist/grid.d.ts.map +1 -1
- package/dist/grid.js +11 -148
- package/dist/grid.js.map +1 -1
- package/dist/help.d.ts +2 -0
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +6 -4
- package/dist/help.js.map +1 -1
- package/dist/icon-presentation.d.ts +10 -0
- package/dist/icon-presentation.d.ts.map +1 -0
- package/dist/icon-presentation.js +12 -0
- package/dist/icon-presentation.js.map +1 -0
- package/dist/index.d.ts +32 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -5
- package/dist/index.js.map +1 -1
- package/dist/input-map.d.ts +68 -0
- package/dist/input-map.d.ts.map +1 -0
- package/dist/input-map.js +162 -0
- package/dist/input-map.js.map +1 -0
- package/dist/input-routing-inspector.d.ts +24 -0
- package/dist/input-routing-inspector.d.ts.map +1 -0
- package/dist/input-routing-inspector.js +76 -0
- package/dist/input-routing-inspector.js.map +1 -0
- package/dist/keybindings.d.ts.map +1 -1
- package/dist/keybindings.js +3 -0
- package/dist/keybindings.js.map +1 -1
- package/dist/layout-inspector.d.ts +31 -0
- package/dist/layout-inspector.d.ts.map +1 -0
- package/dist/layout-inspector.js +133 -0
- package/dist/layout-inspector.js.map +1 -0
- package/dist/layout-preset.d.ts +1 -1
- package/dist/layout-preset.d.ts.map +1 -1
- package/dist/motion/reconciler.d.ts +6 -2
- package/dist/motion/reconciler.d.ts.map +1 -1
- package/dist/motion/reconciler.js +40 -10
- package/dist/motion/reconciler.js.map +1 -1
- package/dist/motion/types.d.ts +3 -1
- package/dist/motion/types.d.ts.map +1 -1
- package/dist/navigable-table.d.ts +9 -10
- package/dist/navigable-table.d.ts.map +1 -1
- package/dist/navigable-table.js +33 -14
- package/dist/navigable-table.js.map +1 -1
- package/dist/notification.d.ts +15 -0
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +136 -34
- package/dist/notification.js.map +1 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +40 -14
- package/dist/overlay.js.map +1 -1
- package/dist/pager.d.ts +3 -1
- package/dist/pager.d.ts.map +1 -1
- package/dist/pager.js +4 -0
- package/dist/pager.js.map +1 -1
- package/dist/pipeline/middleware/grayscale.d.ts.map +1 -1
- package/dist/pipeline/middleware/grayscale.js +5 -5
- package/dist/pipeline/middleware/grayscale.js.map +1 -1
- package/dist/pipeline/middleware/motion.d.ts.map +1 -1
- package/dist/pipeline/middleware/motion.js +4 -3
- package/dist/pipeline/middleware/motion.js.map +1 -1
- package/dist/pipeline/middleware/paint.d.ts.map +1 -1
- package/dist/pipeline/middleware/paint.js +2 -1
- package/dist/pipeline/middleware/paint.js.map +1 -1
- package/dist/pipeline/middleware/surface-shaders.d.ts +37 -0
- package/dist/pipeline/middleware/surface-shaders.d.ts.map +1 -0
- package/dist/pipeline/middleware/surface-shaders.js +164 -0
- package/dist/pipeline/middleware/surface-shaders.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +37 -2
- package/dist/pipeline/pipeline.d.ts.map +1 -1
- package/dist/pipeline/pipeline.js +121 -22
- package/dist/pipeline/pipeline.js.map +1 -1
- package/dist/raytrace.d.ts +59 -0
- package/dist/raytrace.d.ts.map +1 -0
- package/dist/raytrace.js +121 -0
- package/dist/raytrace.js.map +1 -0
- package/dist/runtime-binding.d.ts +59 -0
- package/dist/runtime-binding.d.ts.map +1 -0
- package/dist/runtime-binding.js +271 -0
- package/dist/runtime-binding.js.map +1 -0
- package/dist/runtime.d.ts +19 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +222 -31
- package/dist/runtime.js.map +1 -1
- package/dist/split-pane.d.ts +2 -2
- package/dist/split-pane.d.ts.map +1 -1
- package/dist/split-pane.js +28 -49
- package/dist/split-pane.js.map +1 -1
- package/dist/subapp/mount.d.ts +17 -0
- package/dist/subapp/mount.d.ts.map +1 -1
- package/dist/subapp/mount.js +13 -0
- package/dist/subapp/mount.js.map +1 -1
- package/dist/surface-budget.d.ts +27 -0
- package/dist/surface-budget.d.ts.map +1 -0
- package/dist/surface-budget.js +61 -0
- package/dist/surface-budget.js.map +1 -0
- package/dist/surface-diff.d.ts +36 -0
- package/dist/surface-diff.d.ts.map +1 -0
- package/dist/surface-diff.js +202 -0
- package/dist/surface-diff.js.map +1 -0
- package/dist/surface-layout.d.ts +19 -3
- package/dist/surface-layout.d.ts.map +1 -1
- package/dist/surface-layout.js +42 -12
- package/dist/surface-layout.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/view-output.js +2 -2
- package/dist/view-output.js.map +1 -1
- package/dist/viewport.d.ts +13 -1
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +33 -11
- package/dist/viewport.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type ActiveBindingCollection, type ActiveBindingProviderAssignment, type BindingLifecycleOwner, type CommandIntent, type DeepReadonly, type ViewDataContract } from '@flyingrobots/bijou';
|
|
2
|
+
import { type RuntimeCommandBuffer } from './runtime-engine.js';
|
|
3
|
+
import type { RuntimeStackLayer, RuntimeViewStack } from './runtime-engine.js';
|
|
4
|
+
declare const RUNTIME_VIEW_BINDING_SOURCE_BRAND: unique symbol;
|
|
5
|
+
declare const RUNTIME_COMMAND_INTENT_EMISSION_BRAND: unique symbol;
|
|
6
|
+
declare const RUNTIME_COMMAND_INTENT_ROUTE_BRAND: unique symbol;
|
|
7
|
+
export interface RuntimeViewBindingSourceInput {
|
|
8
|
+
readonly owner: BindingLifecycleOwner;
|
|
9
|
+
readonly contract: ViewDataContract;
|
|
10
|
+
readonly providerIds?: readonly ActiveBindingProviderAssignment[];
|
|
11
|
+
}
|
|
12
|
+
export interface RuntimeViewBindingSource {
|
|
13
|
+
readonly [RUNTIME_VIEW_BINDING_SOURCE_BRAND]: true;
|
|
14
|
+
readonly owner: BindingLifecycleOwner;
|
|
15
|
+
readonly contract: ViewDataContract;
|
|
16
|
+
readonly providerIds?: readonly ActiveBindingProviderAssignment[];
|
|
17
|
+
}
|
|
18
|
+
export interface RuntimeBindingLayerModel {
|
|
19
|
+
readonly bindingSources?: readonly RuntimeViewBindingSource[];
|
|
20
|
+
}
|
|
21
|
+
export interface RuntimeCommandIntentEmissionOptions {
|
|
22
|
+
readonly owner?: BindingLifecycleOwner;
|
|
23
|
+
}
|
|
24
|
+
export interface RuntimeCommandIntentEmission<Payload = undefined> {
|
|
25
|
+
readonly [RUNTIME_COMMAND_INTENT_EMISSION_BRAND]: true;
|
|
26
|
+
readonly intent: CommandIntent<Payload>;
|
|
27
|
+
readonly payload: DeepReadonly<Payload>;
|
|
28
|
+
readonly owner?: BindingLifecycleOwner;
|
|
29
|
+
}
|
|
30
|
+
export interface RuntimeCommandIntentRouteInput<Payload, Command> {
|
|
31
|
+
readonly intent: CommandIntent<Payload>;
|
|
32
|
+
readonly toCommand: (emission: RuntimeCommandIntentEmission<Payload>) => Command;
|
|
33
|
+
}
|
|
34
|
+
export interface RuntimeCommandIntentRoute<Payload = unknown, Command = unknown> {
|
|
35
|
+
readonly [RUNTIME_COMMAND_INTENT_ROUTE_BRAND]: true;
|
|
36
|
+
readonly intent: CommandIntent<Payload>;
|
|
37
|
+
readonly toCommand: (emission: RuntimeCommandIntentEmission<Payload>) => Command;
|
|
38
|
+
}
|
|
39
|
+
export interface DispatchRuntimeCommandIntentInput<Payload, Command> {
|
|
40
|
+
readonly emission: RuntimeCommandIntentEmission<Payload>;
|
|
41
|
+
readonly routes: readonly RuntimeCommandIntentRoute<Payload, Command>[];
|
|
42
|
+
readonly buffer: RuntimeCommandBuffer<Command>;
|
|
43
|
+
}
|
|
44
|
+
export interface DispatchRuntimeCommandIntentResult<Command> {
|
|
45
|
+
readonly command: Command;
|
|
46
|
+
readonly buffer: RuntimeCommandBuffer<Command>;
|
|
47
|
+
}
|
|
48
|
+
export declare function runtimeViewBindingSource(input: RuntimeViewBindingSourceInput): RuntimeViewBindingSource;
|
|
49
|
+
export declare function runtimeCommandIntentEmission(intent: CommandIntent): RuntimeCommandIntentEmission<undefined>;
|
|
50
|
+
export declare function runtimeCommandIntentEmission<Payload>(intent: CommandIntent<Payload>, payload: Payload, options?: RuntimeCommandIntentEmissionOptions): RuntimeCommandIntentEmission<Payload>;
|
|
51
|
+
export declare function isRuntimeCommandIntentEmission(value: unknown): value is RuntimeCommandIntentEmission;
|
|
52
|
+
export declare function runtimeCommandIntentRoute<Payload, Command>(input: RuntimeCommandIntentRouteInput<Payload, Command>): RuntimeCommandIntentRoute<Payload, Command>;
|
|
53
|
+
export declare function isRuntimeCommandIntentRoute(value: unknown): value is RuntimeCommandIntentRoute;
|
|
54
|
+
export declare function dispatchRuntimeCommandIntent<Payload, Command>(input: DispatchRuntimeCommandIntentInput<Payload, Command>): DispatchRuntimeCommandIntentResult<Command>;
|
|
55
|
+
export declare function isRuntimeViewBindingSource(value: unknown): value is RuntimeViewBindingSource;
|
|
56
|
+
export declare function runtimeActiveBindingLayers<Model extends RuntimeBindingLayerModel>(stack: RuntimeViewStack<Model>): readonly RuntimeStackLayer<Model>[];
|
|
57
|
+
export declare function collectRuntimeViewBindings<Model extends RuntimeBindingLayerModel>(stack: RuntimeViewStack<Model>): ActiveBindingCollection;
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=runtime-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-binding.d.ts","sourceRoot":"","sources":["../src/runtime-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { collectActiveBindings, isBindingLifecycleOwner, isCommandIntent, isViewDataContract, } from '@flyingrobots/bijou';
|
|
2
|
+
import { appendRuntimeCommands, } from './runtime-engine.js';
|
|
3
|
+
const RUNTIME_VIEW_BINDING_SOURCE_BRAND = Symbol('RuntimeViewBindingSource');
|
|
4
|
+
const RUNTIME_COMMAND_INTENT_EMISSION_BRAND = Symbol('RuntimeCommandIntentEmission');
|
|
5
|
+
const RUNTIME_COMMAND_INTENT_ROUTE_BRAND = Symbol('RuntimeCommandIntentRoute');
|
|
6
|
+
export function runtimeViewBindingSource(input) {
|
|
7
|
+
assertObjectRecord(input, 'runtime binding source');
|
|
8
|
+
if (!isBindingLifecycleOwner(input.owner)) {
|
|
9
|
+
throw new Error('runtime binding source: owner was not created by defineBindingLifecycleOwner()');
|
|
10
|
+
}
|
|
11
|
+
if (!isViewDataContract(input.contract)) {
|
|
12
|
+
throw new Error('runtime binding source: contract was not created by defineViewData()');
|
|
13
|
+
}
|
|
14
|
+
const source = {
|
|
15
|
+
owner: input.owner,
|
|
16
|
+
contract: input.contract,
|
|
17
|
+
providerIds: freezeProviderAssignments(input.providerIds),
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(source, RUNTIME_VIEW_BINDING_SOURCE_BRAND, { value: true });
|
|
20
|
+
return Object.freeze(source);
|
|
21
|
+
}
|
|
22
|
+
export function runtimeCommandIntentEmission(intent, payload, options = {}) {
|
|
23
|
+
assertObjectRecord(options, 'runtime command intent emission', 'options');
|
|
24
|
+
if (!isCommandIntent(intent)) {
|
|
25
|
+
throw new Error('runtime command intent emission: intent was not created by commandIntent()');
|
|
26
|
+
}
|
|
27
|
+
if (options.owner !== undefined && !isBindingLifecycleOwner(options.owner)) {
|
|
28
|
+
throw new Error('runtime command intent emission: owner was not created by defineBindingLifecycleOwner()');
|
|
29
|
+
}
|
|
30
|
+
const emission = {
|
|
31
|
+
intent,
|
|
32
|
+
payload: freezeRuntimePayload(payload),
|
|
33
|
+
owner: options.owner,
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(emission, RUNTIME_COMMAND_INTENT_EMISSION_BRAND, { value: true });
|
|
36
|
+
return Object.freeze(emission);
|
|
37
|
+
}
|
|
38
|
+
export function isRuntimeCommandIntentEmission(value) {
|
|
39
|
+
return Boolean(value
|
|
40
|
+
&& typeof value === 'object'
|
|
41
|
+
&& Object.prototype.hasOwnProperty.call(value, RUNTIME_COMMAND_INTENT_EMISSION_BRAND)
|
|
42
|
+
&& value[RUNTIME_COMMAND_INTENT_EMISSION_BRAND] === true);
|
|
43
|
+
}
|
|
44
|
+
export function runtimeCommandIntentRoute(input) {
|
|
45
|
+
assertObjectRecord(input, 'runtime command intent route');
|
|
46
|
+
if (!isCommandIntent(input.intent)) {
|
|
47
|
+
throw new Error('runtime command intent route: intent was not created by commandIntent()');
|
|
48
|
+
}
|
|
49
|
+
if (typeof input.toCommand !== 'function') {
|
|
50
|
+
throw new Error('runtime command intent route: toCommand must be a function');
|
|
51
|
+
}
|
|
52
|
+
const route = {
|
|
53
|
+
intent: input.intent,
|
|
54
|
+
toCommand: input.toCommand,
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(route, RUNTIME_COMMAND_INTENT_ROUTE_BRAND, { value: true });
|
|
57
|
+
return Object.freeze(route);
|
|
58
|
+
}
|
|
59
|
+
export function isRuntimeCommandIntentRoute(value) {
|
|
60
|
+
return Boolean(value
|
|
61
|
+
&& typeof value === 'object'
|
|
62
|
+
&& Object.prototype.hasOwnProperty.call(value, RUNTIME_COMMAND_INTENT_ROUTE_BRAND)
|
|
63
|
+
&& value[RUNTIME_COMMAND_INTENT_ROUTE_BRAND] === true);
|
|
64
|
+
}
|
|
65
|
+
export function dispatchRuntimeCommandIntent(input) {
|
|
66
|
+
assertObjectRecord(input, 'runtime command intent dispatch');
|
|
67
|
+
if (!isRuntimeCommandIntentEmission(input.emission)) {
|
|
68
|
+
throw new Error('runtime command intent dispatch: emission was not created by runtimeCommandIntentEmission()');
|
|
69
|
+
}
|
|
70
|
+
if (!Array.isArray(input.routes)) {
|
|
71
|
+
throw new Error('runtime command intent dispatch: routes must be an array');
|
|
72
|
+
}
|
|
73
|
+
if (!isRuntimeCommandBuffer(input.buffer)) {
|
|
74
|
+
throw new Error('runtime command intent dispatch: buffer must be a RuntimeCommandBuffer');
|
|
75
|
+
}
|
|
76
|
+
const route = input.routes.find((candidate, index) => {
|
|
77
|
+
if (!isRuntimeCommandIntentRoute(candidate)) {
|
|
78
|
+
throw new Error(`runtime command intent dispatch: route at index ${index} was not created by runtimeCommandIntentRoute()`);
|
|
79
|
+
}
|
|
80
|
+
return candidate.intent.id === input.emission.intent.id;
|
|
81
|
+
});
|
|
82
|
+
if (route === undefined) {
|
|
83
|
+
throw new Error(`runtime command intent dispatch: no route for intent ${input.emission.intent.id}`);
|
|
84
|
+
}
|
|
85
|
+
const command = route.toCommand(input.emission);
|
|
86
|
+
return Object.freeze({
|
|
87
|
+
command,
|
|
88
|
+
buffer: appendRuntimeCommands(input.buffer, [command]),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export function isRuntimeViewBindingSource(value) {
|
|
92
|
+
return Boolean(value
|
|
93
|
+
&& typeof value === 'object'
|
|
94
|
+
&& Object.prototype.hasOwnProperty.call(value, RUNTIME_VIEW_BINDING_SOURCE_BRAND)
|
|
95
|
+
&& value[RUNTIME_VIEW_BINDING_SOURCE_BRAND] === true);
|
|
96
|
+
}
|
|
97
|
+
export function runtimeActiveBindingLayers(stack) {
|
|
98
|
+
if (!isRuntimeViewStack(stack)) {
|
|
99
|
+
throw new Error('runtime binding collection: stack must be a RuntimeViewStack');
|
|
100
|
+
}
|
|
101
|
+
const activeLayers = [];
|
|
102
|
+
for (let index = stack.layers.length - 1; index >= 0; index -= 1) {
|
|
103
|
+
const layer = stack.layers[index];
|
|
104
|
+
if (layer === undefined) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
activeLayers.unshift(layer);
|
|
108
|
+
if (layer.blocksBelow) {
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return Object.freeze(activeLayers);
|
|
113
|
+
}
|
|
114
|
+
export function collectRuntimeViewBindings(stack) {
|
|
115
|
+
const contracts = runtimeActiveBindingLayers(stack).flatMap((layer) => {
|
|
116
|
+
const bindingSources = layer.model?.bindingSources ?? [];
|
|
117
|
+
if (!Array.isArray(bindingSources)) {
|
|
118
|
+
throw new Error(`runtime binding collection: bindingSources for layer ${layer.id} must be an array`);
|
|
119
|
+
}
|
|
120
|
+
return bindingSources.map((source, index) => {
|
|
121
|
+
if (!isRuntimeViewBindingSource(source)) {
|
|
122
|
+
throw new Error(`runtime binding collection: source at layer ${layer.id} index ${index} `
|
|
123
|
+
+ 'was not created by runtimeViewBindingSource()');
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
owner: source.owner,
|
|
127
|
+
contract: source.contract,
|
|
128
|
+
providerIds: source.providerIds,
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
return collectActiveBindings({ contracts });
|
|
133
|
+
}
|
|
134
|
+
function isRuntimeViewStack(value) {
|
|
135
|
+
return Boolean(value
|
|
136
|
+
&& typeof value === 'object'
|
|
137
|
+
&& Array.isArray(value.layers));
|
|
138
|
+
}
|
|
139
|
+
function isRuntimeCommandBuffer(value) {
|
|
140
|
+
return Boolean(value
|
|
141
|
+
&& typeof value === 'object'
|
|
142
|
+
&& Array.isArray(value.items));
|
|
143
|
+
}
|
|
144
|
+
function freezeProviderAssignments(assignments) {
|
|
145
|
+
if (assignments === undefined) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
if (!Array.isArray(assignments)) {
|
|
149
|
+
throw new Error('runtime binding source: providerIds must be an array');
|
|
150
|
+
}
|
|
151
|
+
const seenRequirementIds = new Set();
|
|
152
|
+
return Object.freeze(assignments.map((assignment, index) => {
|
|
153
|
+
assertObjectRecord(assignment, 'runtime binding source', `provider assignment ${index}`);
|
|
154
|
+
const requirementId = normalizeRequiredText({
|
|
155
|
+
scope: 'runtime binding source',
|
|
156
|
+
field: `provider assignment ${index} requirementId`,
|
|
157
|
+
value: assignment['requirementId'],
|
|
158
|
+
});
|
|
159
|
+
if (seenRequirementIds.has(requirementId)) {
|
|
160
|
+
throw new Error(`runtime binding source: duplicate provider assignment ${requirementId}`);
|
|
161
|
+
}
|
|
162
|
+
seenRequirementIds.add(requirementId);
|
|
163
|
+
return Object.freeze({
|
|
164
|
+
requirementId,
|
|
165
|
+
providerId: normalizeRequiredText({
|
|
166
|
+
scope: 'runtime binding source',
|
|
167
|
+
field: `provider assignment ${index} providerId`,
|
|
168
|
+
value: assignment['providerId'],
|
|
169
|
+
}),
|
|
170
|
+
});
|
|
171
|
+
}));
|
|
172
|
+
}
|
|
173
|
+
function freezeRuntimePayload(payload) {
|
|
174
|
+
if (payload === undefined) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
return deepFreeze(cloneRuntimePayload(payload, 'payload'));
|
|
178
|
+
}
|
|
179
|
+
function cloneRuntimePayload(value, path, seen = new WeakSet()) {
|
|
180
|
+
if (value === null
|
|
181
|
+
|| typeof value === 'string'
|
|
182
|
+
|| typeof value === 'number'
|
|
183
|
+
|| typeof value === 'boolean') {
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
if (typeof value === 'bigint' || typeof value === 'symbol' || typeof value === 'function') {
|
|
187
|
+
throw new Error(`runtime command intent payload: unsupported ${typeof value} at ${path}`);
|
|
188
|
+
}
|
|
189
|
+
if (value === undefined) {
|
|
190
|
+
throw new Error(`runtime command intent payload: unsupported undefined at ${path}`);
|
|
191
|
+
}
|
|
192
|
+
if (typeof value !== 'object') {
|
|
193
|
+
throw new Error(`runtime command intent payload: unsupported ${typeof value} at ${path}`);
|
|
194
|
+
}
|
|
195
|
+
const objectValue = value;
|
|
196
|
+
if (seen.has(objectValue)) {
|
|
197
|
+
throw new Error(`runtime command intent payload: circular reference at ${path}`);
|
|
198
|
+
}
|
|
199
|
+
seen.add(objectValue);
|
|
200
|
+
try {
|
|
201
|
+
if (Array.isArray(value)) {
|
|
202
|
+
return value.map((item, index) => cloneRuntimePayload(item, `${path}[${index}]`, seen));
|
|
203
|
+
}
|
|
204
|
+
if (!isPlainObject(value)) {
|
|
205
|
+
throw new Error(`runtime command intent payload: unsupported ${objectKind(value)} at ${path}`);
|
|
206
|
+
}
|
|
207
|
+
const clone = Object.create(Object.getPrototypeOf(value));
|
|
208
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
209
|
+
for (const key of Reflect.ownKeys(descriptors)) {
|
|
210
|
+
if (typeof key === 'symbol') {
|
|
211
|
+
throw new Error(`runtime command intent payload: unsupported symbol property at ${path}`);
|
|
212
|
+
}
|
|
213
|
+
const descriptor = descriptors[key];
|
|
214
|
+
const propertyPath = `${path}.${key}`;
|
|
215
|
+
if (descriptor === undefined) {
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
if (!descriptor.enumerable) {
|
|
219
|
+
throw new Error(`runtime command intent payload: unsupported non-enumerable property at ${propertyPath}`);
|
|
220
|
+
}
|
|
221
|
+
if ('get' in descriptor || 'set' in descriptor) {
|
|
222
|
+
throw new Error(`runtime command intent payload: unsupported accessor at ${propertyPath}`);
|
|
223
|
+
}
|
|
224
|
+
clone[key] = cloneRuntimePayload(descriptor.value, propertyPath, seen);
|
|
225
|
+
}
|
|
226
|
+
return clone;
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
seen.delete(objectValue);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function deepFreeze(value, seen = new WeakSet()) {
|
|
233
|
+
if (value === null || typeof value !== 'object') {
|
|
234
|
+
return value;
|
|
235
|
+
}
|
|
236
|
+
const objectValue = value;
|
|
237
|
+
if (seen.has(objectValue)) {
|
|
238
|
+
return value;
|
|
239
|
+
}
|
|
240
|
+
seen.add(objectValue);
|
|
241
|
+
for (const key of Reflect.ownKeys(objectValue)) {
|
|
242
|
+
const descriptor = Object.getOwnPropertyDescriptor(objectValue, key);
|
|
243
|
+
if (descriptor !== undefined && 'value' in descriptor) {
|
|
244
|
+
deepFreeze(descriptor.value, seen);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return Object.freeze(value);
|
|
248
|
+
}
|
|
249
|
+
function assertObjectRecord(value, scope, label = 'input') {
|
|
250
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
251
|
+
throw new Error(`${scope}: ${label} must be an object`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function normalizeRequiredText(options) {
|
|
255
|
+
if (typeof options.value !== 'string') {
|
|
256
|
+
throw new Error(`${options.scope}: ${options.field} must be a string`);
|
|
257
|
+
}
|
|
258
|
+
const normalized = options.value.trim();
|
|
259
|
+
if (normalized === '') {
|
|
260
|
+
throw new Error(`${options.scope}: ${options.field} is required`);
|
|
261
|
+
}
|
|
262
|
+
return normalized;
|
|
263
|
+
}
|
|
264
|
+
function isPlainObject(value) {
|
|
265
|
+
const prototype = Object.getPrototypeOf(value);
|
|
266
|
+
return prototype === Object.prototype || prototype === null;
|
|
267
|
+
}
|
|
268
|
+
function objectKind(value) {
|
|
269
|
+
return Object.prototype.toString.call(value).slice(8, -1);
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=runtime-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-binding.js","sourceRoot":"","sources":["../src/runtime-binding.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import type { App, RunOptions } from './types.js';
|
|
2
|
+
import { type RenderStageTiming } from './pipeline/pipeline.js';
|
|
3
|
+
export interface RuntimeRenderSummary<Model> {
|
|
4
|
+
readonly model: Model;
|
|
5
|
+
readonly dt: number;
|
|
6
|
+
readonly timings: readonly RenderStageTiming[];
|
|
7
|
+
readonly viewport: {
|
|
8
|
+
readonly columns: number;
|
|
9
|
+
readonly rows: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface RuntimePostRenderEffect<Model> {
|
|
13
|
+
readonly model?: Model;
|
|
14
|
+
readonly requestRender?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface RuntimeLifecycleHooks<Model> {
|
|
17
|
+
beforeRender?(model: Model): Model | void;
|
|
18
|
+
afterRender?(summary: RuntimeRenderSummary<Model>): RuntimePostRenderEffect<Model> | void;
|
|
19
|
+
}
|
|
2
20
|
/**
|
|
3
21
|
* Run a TEA application.
|
|
4
22
|
*
|
|
@@ -16,4 +34,5 @@ import type { App, RunOptions } from './types.js';
|
|
|
16
34
|
* @returns A promise that resolves when the application exits.
|
|
17
35
|
*/
|
|
18
36
|
export declare function run<Model, M>(app: App<Model, M>, options?: RunOptions<M>): Promise<void>;
|
|
37
|
+
export declare function runWithLifecycleHooks<Model, M>(app: App<Model, M>, options?: RunOptions<M>, hooks?: RuntimeLifecycleHooks<Model>): Promise<void>;
|
|
19
38
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAO,UAAU,EAAa,MAAM,YAAY,CAAC;AAIlE,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAwBhC,MAAM,WAAW,oBAAoB,CAAC,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1C,WAAW,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAC3F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,GAAG,CAAC,KAAK,EAAE,CAAC,EAChC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,CAAC,EAClD,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAygBf"}
|