@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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input feature events and semantic action maps.
|
|
3
|
+
*
|
|
4
|
+
* This module sits above raw terminal input parsing and below app/frame
|
|
5
|
+
* reducers. It lets shells bind actions to semantic input feature events such
|
|
6
|
+
* as "keyboard.tab double-tap" without hard-coding gesture state into a single
|
|
7
|
+
* component.
|
|
8
|
+
*/
|
|
9
|
+
import type { KeyMsg } from './types.js';
|
|
10
|
+
export declare const DEFAULT_DOUBLE_TAP_MS = 300;
|
|
11
|
+
export declare const KEYBOARD_INPUT_DEVICE_ID = "keyboard";
|
|
12
|
+
export type StandardInputFeatureEventType = 'press' | 'held' | 'long-press' | 'release' | 'tap' | 'double-tap';
|
|
13
|
+
export type InputFeatureEventType = StandardInputFeatureEventType | (string & {});
|
|
14
|
+
export interface InputDevice {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly kind: string;
|
|
17
|
+
readonly label?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface InputFeature {
|
|
20
|
+
readonly deviceId: string;
|
|
21
|
+
readonly id: string;
|
|
22
|
+
readonly kind: string;
|
|
23
|
+
readonly label?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface InputFeatureEvent {
|
|
26
|
+
readonly feature: InputFeature;
|
|
27
|
+
readonly type: InputFeatureEventType;
|
|
28
|
+
readonly atMs: number;
|
|
29
|
+
}
|
|
30
|
+
export interface InputEvent {
|
|
31
|
+
readonly device: InputDevice;
|
|
32
|
+
readonly featureEvents: readonly InputFeatureEvent[];
|
|
33
|
+
readonly atMs: number;
|
|
34
|
+
}
|
|
35
|
+
export interface InputFeatureEventPattern {
|
|
36
|
+
readonly featureId: string;
|
|
37
|
+
readonly type: InputFeatureEventType;
|
|
38
|
+
readonly deviceId?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface InputActionBinding<Action> {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
readonly description: string;
|
|
43
|
+
readonly featureEvents: readonly InputFeatureEventPattern[];
|
|
44
|
+
readonly action: Action;
|
|
45
|
+
readonly enabled: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface InputActionMap<Action> {
|
|
48
|
+
bind(id: string, description: string, featureEvents: readonly InputFeatureEventPattern[], action: Action): InputActionMap<Action>;
|
|
49
|
+
handle(event: InputEvent): Action | undefined;
|
|
50
|
+
bindings(): readonly InputActionBinding<Action>[];
|
|
51
|
+
}
|
|
52
|
+
export interface InputGestureRecognizer {
|
|
53
|
+
observeKey(msg: KeyMsg, atMs: number): InputEvent;
|
|
54
|
+
reset(): void;
|
|
55
|
+
}
|
|
56
|
+
export interface InputGestureRecognizerOptions {
|
|
57
|
+
readonly doubleTapMs?: number;
|
|
58
|
+
readonly device?: InputDevice;
|
|
59
|
+
}
|
|
60
|
+
export declare function defineInputDevice(device: InputDevice): InputDevice;
|
|
61
|
+
export declare function defineInputFeature(feature: InputFeature): InputFeature;
|
|
62
|
+
export declare function keyboardFeature(key: string): InputFeature;
|
|
63
|
+
export declare function keyboardModifierFeature(modifier: 'ctrl' | 'alt' | 'shift'): InputFeature;
|
|
64
|
+
export declare function inputFeatureEvent(feature: InputFeature, type: InputFeatureEventType, atMs: number): InputFeatureEvent;
|
|
65
|
+
export declare function createInputGestureRecognizer(options?: InputGestureRecognizerOptions): InputGestureRecognizer;
|
|
66
|
+
export declare function createInputActionMap<Action>(): InputActionMap<Action>;
|
|
67
|
+
export declare function inputEventMatches(event: InputEvent, patterns: readonly InputFeatureEventPattern[]): boolean;
|
|
68
|
+
//# sourceMappingURL=input-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-map.d.ts","sourceRoot":"","sources":["../src/input-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input feature events and semantic action maps.
|
|
3
|
+
*
|
|
4
|
+
* This module sits above raw terminal input parsing and below app/frame
|
|
5
|
+
* reducers. It lets shells bind actions to semantic input feature events such
|
|
6
|
+
* as "keyboard.tab double-tap" without hard-coding gesture state into a single
|
|
7
|
+
* component.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_DOUBLE_TAP_MS = 300;
|
|
10
|
+
export const KEYBOARD_INPUT_DEVICE_ID = 'keyboard';
|
|
11
|
+
export function defineInputDevice(device) {
|
|
12
|
+
return freezePlain({
|
|
13
|
+
...device,
|
|
14
|
+
id: normalizeId(device.id, 'input device id'),
|
|
15
|
+
kind: normalizeId(device.kind, 'input device kind'),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function defineInputFeature(feature) {
|
|
19
|
+
return freezePlain({
|
|
20
|
+
...feature,
|
|
21
|
+
deviceId: normalizeId(feature.deviceId, 'input feature device id'),
|
|
22
|
+
id: normalizeId(feature.id, 'input feature id'),
|
|
23
|
+
kind: normalizeId(feature.kind, 'input feature kind'),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export function keyboardFeature(key) {
|
|
27
|
+
const normalizedKey = normalizeId(key, 'keyboard feature key');
|
|
28
|
+
return defineInputFeature({
|
|
29
|
+
deviceId: KEYBOARD_INPUT_DEVICE_ID,
|
|
30
|
+
id: `key.${normalizedKey}`,
|
|
31
|
+
kind: 'key',
|
|
32
|
+
label: normalizedKey,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export function keyboardModifierFeature(modifier) {
|
|
36
|
+
return defineInputFeature({
|
|
37
|
+
deviceId: KEYBOARD_INPUT_DEVICE_ID,
|
|
38
|
+
id: `modifier.${modifier}`,
|
|
39
|
+
kind: 'modifier',
|
|
40
|
+
label: modifier,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
export function inputFeatureEvent(feature, type, atMs) {
|
|
44
|
+
return freezePlain({
|
|
45
|
+
feature,
|
|
46
|
+
type: normalizeId(type, 'input feature event type'),
|
|
47
|
+
atMs: normalizeTimestamp(atMs),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
export function createInputGestureRecognizer(options = {}) {
|
|
51
|
+
const device = defineInputDevice(options.device ?? {
|
|
52
|
+
id: KEYBOARD_INPUT_DEVICE_ID,
|
|
53
|
+
kind: 'keyboard',
|
|
54
|
+
label: 'Keyboard',
|
|
55
|
+
});
|
|
56
|
+
const doubleTapMs = normalizePositiveDuration(options.doubleTapMs, DEFAULT_DOUBLE_TAP_MS);
|
|
57
|
+
let lastTap;
|
|
58
|
+
return {
|
|
59
|
+
observeKey(msg, atMs) {
|
|
60
|
+
const timestamp = normalizeTimestamp(atMs);
|
|
61
|
+
const featureEvents = [];
|
|
62
|
+
if (msg.ctrl) {
|
|
63
|
+
featureEvents.push(inputFeatureEvent(keyboardModifierFeature('ctrl'), 'held', timestamp));
|
|
64
|
+
}
|
|
65
|
+
if (msg.alt) {
|
|
66
|
+
featureEvents.push(inputFeatureEvent(keyboardModifierFeature('alt'), 'held', timestamp));
|
|
67
|
+
}
|
|
68
|
+
if (msg.shift) {
|
|
69
|
+
featureEvents.push(inputFeatureEvent(keyboardModifierFeature('shift'), 'held', timestamp));
|
|
70
|
+
}
|
|
71
|
+
const keyFeature = keyboardFeature(msg.key);
|
|
72
|
+
featureEvents.push(inputFeatureEvent(keyFeature, 'press', timestamp));
|
|
73
|
+
featureEvents.push(inputFeatureEvent(keyFeature, 'tap', timestamp));
|
|
74
|
+
const signature = keySignature(msg);
|
|
75
|
+
const isDoubleTap = lastTap != null
|
|
76
|
+
&& lastTap.signature === signature
|
|
77
|
+
&& timestamp - lastTap.atMs <= doubleTapMs;
|
|
78
|
+
if (isDoubleTap) {
|
|
79
|
+
featureEvents.push(inputFeatureEvent(keyFeature, 'double-tap', timestamp));
|
|
80
|
+
lastTap = undefined;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
lastTap = { signature, atMs: timestamp };
|
|
84
|
+
}
|
|
85
|
+
return freezePlain({
|
|
86
|
+
device,
|
|
87
|
+
featureEvents: Object.freeze(featureEvents),
|
|
88
|
+
atMs: timestamp,
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
reset() {
|
|
92
|
+
lastTap = undefined;
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export function createInputActionMap() {
|
|
97
|
+
const bindings = [];
|
|
98
|
+
return {
|
|
99
|
+
bind(id, description, featureEvents, action) {
|
|
100
|
+
const normalizedFeatureEvents = featureEvents.map((featureEvent) => freezePlain({
|
|
101
|
+
...featureEvent,
|
|
102
|
+
featureId: normalizeId(featureEvent.featureId, 'input action feature id'),
|
|
103
|
+
type: normalizeId(featureEvent.type, 'input action event type'),
|
|
104
|
+
deviceId: featureEvent.deviceId != null
|
|
105
|
+
? normalizeId(featureEvent.deviceId, 'input action device id')
|
|
106
|
+
: undefined,
|
|
107
|
+
}));
|
|
108
|
+
bindings.push(freezePlain({
|
|
109
|
+
id: normalizeId(id, 'input action id'),
|
|
110
|
+
description,
|
|
111
|
+
featureEvents: Object.freeze(normalizedFeatureEvents),
|
|
112
|
+
action,
|
|
113
|
+
enabled: true,
|
|
114
|
+
}));
|
|
115
|
+
return this;
|
|
116
|
+
},
|
|
117
|
+
handle(event) {
|
|
118
|
+
return bindings.find((binding) => binding.enabled && inputEventMatches(event, binding.featureEvents))?.action;
|
|
119
|
+
},
|
|
120
|
+
bindings() {
|
|
121
|
+
return Object.freeze([...bindings]);
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
export function inputEventMatches(event, patterns) {
|
|
126
|
+
return patterns.every((pattern) => event.featureEvents.some((featureEvent) => featureEvent.type === pattern.type
|
|
127
|
+
&& featureEvent.feature.id === pattern.featureId
|
|
128
|
+
&& (pattern.deviceId == null || featureEvent.feature.deviceId === pattern.deviceId)));
|
|
129
|
+
}
|
|
130
|
+
function keySignature(msg) {
|
|
131
|
+
return [
|
|
132
|
+
msg.ctrl ? 'ctrl' : '',
|
|
133
|
+
msg.alt ? 'alt' : '',
|
|
134
|
+
msg.shift ? 'shift' : '',
|
|
135
|
+
msg.key,
|
|
136
|
+
].join('|');
|
|
137
|
+
}
|
|
138
|
+
function normalizeId(value, label) {
|
|
139
|
+
const normalized = value.trim();
|
|
140
|
+
if (normalized === '') {
|
|
141
|
+
throw new Error(`${label} is required`);
|
|
142
|
+
}
|
|
143
|
+
return normalized;
|
|
144
|
+
}
|
|
145
|
+
function normalizeTimestamp(value) {
|
|
146
|
+
if (!Number.isFinite(value)) {
|
|
147
|
+
throw new Error('input event timestamp must be finite');
|
|
148
|
+
}
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
function normalizePositiveDuration(value, fallback) {
|
|
152
|
+
if (value == null)
|
|
153
|
+
return fallback;
|
|
154
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
155
|
+
throw new Error('input gesture doubleTapMs must be a positive finite number');
|
|
156
|
+
}
|
|
157
|
+
return value;
|
|
158
|
+
}
|
|
159
|
+
function freezePlain(value) {
|
|
160
|
+
return Object.freeze(value);
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=input-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-map.js","sourceRoot":"","sources":["../src/input-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type LayoutNode, type Surface } from '@flyingrobots/bijou';
|
|
2
|
+
import type { RuntimeInputEvent, RuntimeInputRouteResult } from './runtime-engine.js';
|
|
3
|
+
export interface InputRoutingInspectorRecord<Command = string, Effect = string, Node extends LayoutNode = LayoutNode> {
|
|
4
|
+
readonly rawInput?: string;
|
|
5
|
+
readonly atMs?: number;
|
|
6
|
+
readonly event: RuntimeInputEvent;
|
|
7
|
+
readonly result: RuntimeInputRouteResult<Command, Effect, Node>;
|
|
8
|
+
readonly commandLabels?: readonly string[];
|
|
9
|
+
readonly effectLabels?: readonly string[];
|
|
10
|
+
}
|
|
11
|
+
export interface InputRoutingInspectorHistory<Command = string, Effect = string, Node extends LayoutNode = LayoutNode> {
|
|
12
|
+
readonly records: readonly InputRoutingInspectorRecord<Command, Effect, Node>[];
|
|
13
|
+
}
|
|
14
|
+
export interface InputRoutingInspectorHistoryOptions {
|
|
15
|
+
readonly maxEvents?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface InputRoutingInspectorSurfaceOptions {
|
|
18
|
+
readonly width?: number;
|
|
19
|
+
readonly height?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function appendInputRoutingRecord<Command = string, Effect = string, Node extends LayoutNode = LayoutNode>(history: InputRoutingInspectorHistory<Command, Effect, Node>, record: InputRoutingInspectorRecord<Command, Effect, Node>, options?: InputRoutingInspectorHistoryOptions): InputRoutingInspectorHistory<Command, Effect, Node>;
|
|
22
|
+
export declare function inputRoutingInspectorText(history: InputRoutingInspectorHistory): string;
|
|
23
|
+
export declare function inputRoutingInspectorSurface(history: InputRoutingInspectorHistory, options?: InputRoutingInspectorSurfaceOptions): Surface;
|
|
24
|
+
//# sourceMappingURL=input-routing-inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-routing-inspector.d.ts","sourceRoot":"","sources":["../src/input-routing-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,2BAA2B,CAC1C,OAAO,GAAG,MAAM,EAChB,MAAM,GAAG,MAAM,EACf,IAAI,SAAS,UAAU,GAAG,UAAU;IAEpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B,CAC3C,OAAO,GAAG,MAAM,EAChB,MAAM,GAAG,MAAM,EACf,IAAI,SAAS,UAAU,GAAG,UAAU;IAEpC,QAAQ,CAAC,OAAO,EAAE,SAAS,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;CACjF;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD,wBAAgB,wBAAwB,CACtC,OAAO,GAAG,MAAM,EAChB,MAAM,GAAG,MAAM,EACf,IAAI,SAAS,UAAU,GAAG,UAAU,EAEpC,OAAO,EAAE,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAC5D,MAAM,EAAE,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAC1D,OAAO,GAAE,mCAAwC,GAChD,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAOrD;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAQR;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,4BAA4B,EACrC,OAAO,GAAE,mCAAwC,GAChD,OAAO,CAMT"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { stringToSurface } from '@flyingrobots/bijou';
|
|
2
|
+
const DEFAULT_MAX_EVENTS = 20;
|
|
3
|
+
const DEFAULT_SURFACE_WIDTH = 80;
|
|
4
|
+
const MIN_EVENT_COUNT = 1;
|
|
5
|
+
const MIN_SURFACE_WIDTH = 1;
|
|
6
|
+
const MIN_SURFACE_HEIGHT = 1;
|
|
7
|
+
const EMPTY_LABEL = '-';
|
|
8
|
+
const PATH_SEPARATOR = '>';
|
|
9
|
+
const LABEL_SEPARATOR = ',';
|
|
10
|
+
export function appendInputRoutingRecord(history, record, options = {}) {
|
|
11
|
+
const maxEvents = sanitizePositiveInteger(options.maxEvents, DEFAULT_MAX_EVENTS);
|
|
12
|
+
const records = [...history.records, record];
|
|
13
|
+
return {
|
|
14
|
+
records: records.slice(Math.max(0, records.length - maxEvents)),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function inputRoutingInspectorText(history) {
|
|
18
|
+
const lines = [`input routing: ${history.records.length} events`];
|
|
19
|
+
history.records.forEach((record, index) => {
|
|
20
|
+
lines.push(inputRoutingRecordLine(record, index));
|
|
21
|
+
});
|
|
22
|
+
return lines.join('\n');
|
|
23
|
+
}
|
|
24
|
+
export function inputRoutingInspectorSurface(history, options = {}) {
|
|
25
|
+
const text = inputRoutingInspectorText(history);
|
|
26
|
+
const lineCount = text.split('\n').length;
|
|
27
|
+
const width = sanitizePositiveInteger(options.width, DEFAULT_SURFACE_WIDTH);
|
|
28
|
+
const height = sanitizePositiveInteger(options.height, Math.max(MIN_SURFACE_HEIGHT, lineCount));
|
|
29
|
+
return stringToSurface(text, Math.max(MIN_SURFACE_WIDTH, width), height);
|
|
30
|
+
}
|
|
31
|
+
function inputRoutingRecordLine(record, index) {
|
|
32
|
+
const result = record.result;
|
|
33
|
+
const swallowed = !result.handled && result.stoppedByViewId !== undefined;
|
|
34
|
+
const noop = result.handled && result.commands.length === 0 && result.effects.length === 0;
|
|
35
|
+
const raw = record.rawInput === undefined ? '' : ` raw=${record.rawInput}`;
|
|
36
|
+
const handledBy = result.handledByViewId ?? EMPTY_LABEL;
|
|
37
|
+
const stoppedBy = result.stoppedByViewId ?? EMPTY_LABEL;
|
|
38
|
+
const node = result.handledByNodeId ?? EMPTY_LABEL;
|
|
39
|
+
const hit = result.hit?.target.id ?? EMPTY_LABEL;
|
|
40
|
+
const visited = result.visitedViewIds.length === 0
|
|
41
|
+
? EMPTY_LABEL
|
|
42
|
+
: result.visitedViewIds.join(PATH_SEPARATOR);
|
|
43
|
+
return [
|
|
44
|
+
`[${index + 1}]`,
|
|
45
|
+
`${inputEventLabel(record.event)}${raw}`,
|
|
46
|
+
`handled=${String(result.handled)}`,
|
|
47
|
+
`visited=${visited}`,
|
|
48
|
+
`handledBy=${handledBy}`,
|
|
49
|
+
`stoppedBy=${stoppedBy}`,
|
|
50
|
+
`node=${node}`,
|
|
51
|
+
`hit=${hit}`,
|
|
52
|
+
`commands=${labelsOrCount(record.commandLabels, result.commands.length)}`,
|
|
53
|
+
`effects=${labelsOrCount(record.effectLabels, result.effects.length)}`,
|
|
54
|
+
`swallowed=${String(swallowed)}`,
|
|
55
|
+
`noop=${String(noop)}`,
|
|
56
|
+
].join(' ');
|
|
57
|
+
}
|
|
58
|
+
function inputEventLabel(event) {
|
|
59
|
+
if (event.kind === 'key') {
|
|
60
|
+
return `key ${event.key}`;
|
|
61
|
+
}
|
|
62
|
+
return `pointer ${event.action} ${event.button ?? EMPTY_LABEL} ${event.x},${event.y}`;
|
|
63
|
+
}
|
|
64
|
+
function labelsOrCount(labels, count) {
|
|
65
|
+
if (labels === undefined || labels.length === 0) {
|
|
66
|
+
return String(count);
|
|
67
|
+
}
|
|
68
|
+
return labels.join(LABEL_SEPARATOR);
|
|
69
|
+
}
|
|
70
|
+
function sanitizePositiveInteger(value, fallback) {
|
|
71
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
72
|
+
return fallback;
|
|
73
|
+
}
|
|
74
|
+
return Math.max(MIN_EVENT_COUNT, Math.floor(value));
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=input-routing-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-routing-inspector.js","sourceRoot":"","sources":["../src/input-routing-inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE1E;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEnC;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC;IAEjE;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC;;;;OAIG;IACH,QAAQ,IAAI,SAAS,WAAW,EAAE,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CACnE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"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"}
|
package/dist/keybindings.js
CHANGED
|
@@ -33,6 +33,9 @@
|
|
|
33
33
|
* @throws {Error} If a modifier is duplicated, unknown, or the key part is empty.
|
|
34
34
|
*/
|
|
35
35
|
export function parseKeyCombo(descriptor) {
|
|
36
|
+
if (descriptor === '+') {
|
|
37
|
+
return { key: '+', ctrl: false, alt: false, shift: false };
|
|
38
|
+
}
|
|
36
39
|
// Lowercase the entire descriptor for consistency with parseKey(), which always
|
|
37
40
|
// returns lowercase key names (e.g., 'escape', 'enter', 'c' for Ctrl+C).
|
|
38
41
|
// Uppercase letter bindings should use 'shift+a' not 'A'.
|
package/dist/keybindings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keybindings.js","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Surface } from '@flyingrobots/bijou';
|
|
2
|
+
import { type LayoutRect } from './layout-rect.js';
|
|
3
|
+
export interface LayoutInspectorXYRect {
|
|
4
|
+
readonly x: number;
|
|
5
|
+
readonly y: number;
|
|
6
|
+
readonly width: number;
|
|
7
|
+
readonly height: number;
|
|
8
|
+
}
|
|
9
|
+
export type LayoutInspectorRect = LayoutInspectorXYRect | LayoutRect;
|
|
10
|
+
export interface LayoutInspectorScroll {
|
|
11
|
+
readonly x: number;
|
|
12
|
+
readonly y: number;
|
|
13
|
+
}
|
|
14
|
+
export interface LayoutInspectorRegion {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly role?: string;
|
|
17
|
+
readonly rect: LayoutInspectorRect;
|
|
18
|
+
readonly clip?: LayoutInspectorRect;
|
|
19
|
+
readonly scroll?: LayoutInspectorScroll;
|
|
20
|
+
readonly focused?: boolean;
|
|
21
|
+
readonly layer?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface LayoutInspectorOptions {
|
|
24
|
+
/** Draw region labels on the top border. Defaults to `true`. */
|
|
25
|
+
readonly showLabels?: boolean;
|
|
26
|
+
/** Maximum label width, before clipping to the visible region. */
|
|
27
|
+
readonly maxLabelWidth?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function layoutInspectorOverlay(background: Surface, regions: readonly LayoutInspectorRegion[], options?: LayoutInspectorOptions): Surface;
|
|
30
|
+
export declare function layoutInspectorText(regions: readonly LayoutInspectorRegion[]): string;
|
|
31
|
+
//# sourceMappingURL=layout-inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-inspector.d.ts","sourceRoot":"","sources":["../src/layout-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,UAAU,CAAC;AAErE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAwBD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAST;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,GAAG,MAAM,CAKrF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
const DEFAULT_MAX_LABEL_WIDTH = 32;
|
|
2
|
+
const MIN_VISIBLE_SIZE = 1;
|
|
3
|
+
const BORDER_TOP_LEFT = '+';
|
|
4
|
+
const BORDER_TOP_RIGHT = '+';
|
|
5
|
+
const BORDER_BOTTOM_LEFT = '+';
|
|
6
|
+
const BORDER_BOTTOM_RIGHT = '+';
|
|
7
|
+
const BORDER_HORIZONTAL = '-';
|
|
8
|
+
const BORDER_VERTICAL = '|';
|
|
9
|
+
const FOCUSED_PREFIX = '*';
|
|
10
|
+
const EMPTY_FIELD = '-';
|
|
11
|
+
const REGION_SEPARATOR = ' ';
|
|
12
|
+
const FIELD_SEPARATOR = '=';
|
|
13
|
+
const COORD_SEPARATOR = ',';
|
|
14
|
+
const SIZE_SEPARATOR = 'x';
|
|
15
|
+
export function layoutInspectorOverlay(background, regions, options = {}) {
|
|
16
|
+
const surface = background.clone();
|
|
17
|
+
const sortedRegions = [...regions].sort(compareRegions);
|
|
18
|
+
for (const region of sortedRegions) {
|
|
19
|
+
drawRegion(surface, region, options);
|
|
20
|
+
}
|
|
21
|
+
return surface;
|
|
22
|
+
}
|
|
23
|
+
export function layoutInspectorText(regions) {
|
|
24
|
+
return [...regions]
|
|
25
|
+
.sort(compareRegions)
|
|
26
|
+
.map(regionReportLine)
|
|
27
|
+
.join('\n');
|
|
28
|
+
}
|
|
29
|
+
function compareRegions(a, b) {
|
|
30
|
+
const layerDelta = (a.layer ?? 0) - (b.layer ?? 0);
|
|
31
|
+
if (layerDelta !== 0) {
|
|
32
|
+
return layerDelta;
|
|
33
|
+
}
|
|
34
|
+
return a.id.localeCompare(b.id);
|
|
35
|
+
}
|
|
36
|
+
function drawRegion(surface, region, options) {
|
|
37
|
+
const clipped = clipRect(region.rect, surface.width, surface.height);
|
|
38
|
+
if (clipped === undefined) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
drawBorder(surface, clipped);
|
|
42
|
+
if (options.showLabels === false) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
drawLabel(surface, clipped, region, options);
|
|
46
|
+
}
|
|
47
|
+
function clipRect(rect, width, height) {
|
|
48
|
+
const rectX = rectColumn(rect);
|
|
49
|
+
const rectY = rectRow(rect);
|
|
50
|
+
const left = Math.max(0, rectX);
|
|
51
|
+
const top = Math.max(0, rectY);
|
|
52
|
+
const right = Math.min(width, rectX + rect.width);
|
|
53
|
+
const bottom = Math.min(height, rectY + rect.height);
|
|
54
|
+
const clippedWidth = right - left;
|
|
55
|
+
const clippedHeight = bottom - top;
|
|
56
|
+
if (clippedWidth < MIN_VISIBLE_SIZE || clippedHeight < MIN_VISIBLE_SIZE) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
x: left,
|
|
61
|
+
y: top,
|
|
62
|
+
width: clippedWidth,
|
|
63
|
+
height: clippedHeight,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function drawBorder(surface, rect) {
|
|
67
|
+
const right = rect.x + rect.width - 1;
|
|
68
|
+
const bottom = rect.y + rect.height - 1;
|
|
69
|
+
for (let x = rect.x; x <= right; x++) {
|
|
70
|
+
writeChar(surface, x, rect.y, BORDER_HORIZONTAL);
|
|
71
|
+
writeChar(surface, x, bottom, BORDER_HORIZONTAL);
|
|
72
|
+
}
|
|
73
|
+
for (let y = rect.y; y <= bottom; y++) {
|
|
74
|
+
writeChar(surface, rect.x, y, BORDER_VERTICAL);
|
|
75
|
+
writeChar(surface, right, y, BORDER_VERTICAL);
|
|
76
|
+
}
|
|
77
|
+
writeChar(surface, rect.x, rect.y, BORDER_TOP_LEFT);
|
|
78
|
+
writeChar(surface, right, rect.y, BORDER_TOP_RIGHT);
|
|
79
|
+
writeChar(surface, rect.x, bottom, BORDER_BOTTOM_LEFT);
|
|
80
|
+
writeChar(surface, right, bottom, BORDER_BOTTOM_RIGHT);
|
|
81
|
+
}
|
|
82
|
+
function drawLabel(surface, rect, region, options) {
|
|
83
|
+
const writableWidth = Math.max(0, rect.width - 1);
|
|
84
|
+
if (writableWidth === 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const requestedMax = Math.floor(options.maxLabelWidth ?? DEFAULT_MAX_LABEL_WIDTH);
|
|
88
|
+
const maxLabelWidth = Math.max(0, Math.min(writableWidth, requestedMax));
|
|
89
|
+
const label = labelForRegion(region).slice(0, maxLabelWidth);
|
|
90
|
+
for (let index = 0; index < label.length; index++) {
|
|
91
|
+
writeChar(surface, rect.x + 1 + index, rect.y, label[index]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function labelForRegion(region) {
|
|
95
|
+
return region.focused === true
|
|
96
|
+
? `${FOCUSED_PREFIX}${region.id}`
|
|
97
|
+
: region.id;
|
|
98
|
+
}
|
|
99
|
+
function writeChar(surface, x, y, char) {
|
|
100
|
+
const current = surface.get(x, y);
|
|
101
|
+
surface.set(x, y, {
|
|
102
|
+
...current,
|
|
103
|
+
char,
|
|
104
|
+
empty: false,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function regionReportLine(region) {
|
|
108
|
+
return [
|
|
109
|
+
region.id,
|
|
110
|
+
field('role', region.role ?? EMPTY_FIELD),
|
|
111
|
+
field('rect', rectLabel(region.rect)),
|
|
112
|
+
field('clip', region.clip === undefined ? EMPTY_FIELD : rectLabel(region.clip)),
|
|
113
|
+
field('scroll', region.scroll === undefined ? EMPTY_FIELD : scrollLabel(region.scroll)),
|
|
114
|
+
field('focused', String(region.focused === true)),
|
|
115
|
+
field('layer', String(region.layer ?? 0)),
|
|
116
|
+
].join(REGION_SEPARATOR);
|
|
117
|
+
}
|
|
118
|
+
function field(name, value) {
|
|
119
|
+
return `${name}${FIELD_SEPARATOR}${value}`;
|
|
120
|
+
}
|
|
121
|
+
function rectLabel(rect) {
|
|
122
|
+
return `${rectColumn(rect)}${COORD_SEPARATOR}${rectRow(rect)} ${rect.width}${SIZE_SEPARATOR}${rect.height}`;
|
|
123
|
+
}
|
|
124
|
+
function scrollLabel(scroll) {
|
|
125
|
+
return `${scroll.x}${COORD_SEPARATOR}${scroll.y}`;
|
|
126
|
+
}
|
|
127
|
+
function rectColumn(rect) {
|
|
128
|
+
return 'x' in rect ? rect.x : rect.col;
|
|
129
|
+
}
|
|
130
|
+
function rectRow(rect) {
|
|
131
|
+
return 'y' in rect ? rect.y : rect.row;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=layout-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-inspector.js","sourceRoot":"","sources":["../src/layout-inspector.ts"],"names":[],"mappings":"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"}
|
package/dist/layout-preset.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Pure functions for converting FrameModel layout state to JSON-friendly
|
|
5
5
|
* structures and applying them back.
|
|
6
6
|
*/
|
|
7
|
-
import type { FrameModel } from './app-frame.js';
|
|
7
|
+
import type { FrameModel } from './app-frame-types.js';
|
|
8
8
|
import type { PanelVisibilityState } from './panel-state.js';
|
|
9
9
|
import type { PanelMaximizeState } from './panel-state.js';
|
|
10
10
|
import type { PanelDockState } from './panel-dock.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-preset.d.ts","sourceRoot":"","sources":["../src/layout-preset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"layout-preset.d.ts","sourceRoot":"","sources":["../src/layout-preset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,sDAAsD;IACtD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACtD;AAED,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAC5C,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,EAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACjE,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnE,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3D,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3E,GACL,qBAAqB,CA+BvB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,qBAAqB,GAC3B;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACtD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACtD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D,CA2BA;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAQtE;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAQnE;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAQlE"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import type { LayoutNode } from '@flyingrobots/bijou';
|
|
1
|
+
import type { LayoutNode, WritePort } from '@flyingrobots/bijou';
|
|
2
2
|
/**
|
|
3
3
|
* Registry of active motion components across frames.
|
|
4
4
|
*/
|
|
5
5
|
export declare class MotionReconciler {
|
|
6
6
|
private tracked;
|
|
7
|
+
private warnedTransitions;
|
|
7
8
|
/**
|
|
8
9
|
* Reconcile the target layout tree with the last known positions.
|
|
9
10
|
* If a node with a known key has moved, it initiates/continues a transition.
|
|
10
11
|
*/
|
|
11
|
-
reconcile(node: LayoutNode, dt: number): void;
|
|
12
|
+
reconcile(node: LayoutNode, dt: number, io?: Pick<WritePort, 'writeError'>): void;
|
|
13
|
+
private reconcileNode;
|
|
12
14
|
private processNode;
|
|
15
|
+
private warnOnLikelyUnstableKeys;
|
|
16
|
+
private pruneMissingKeys;
|
|
13
17
|
private step;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=reconciler.d.ts.map
|