@flyingrobots/bijou-tui 5.0.0 → 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.
Files changed (111) hide show
  1. package/README.md +152 -1
  2. package/dist/animate.d.ts +4 -0
  3. package/dist/animate.d.ts.map +1 -1
  4. package/dist/animate.js +47 -20
  5. package/dist/animate.js.map +1 -1
  6. package/dist/app-frame-actions.d.ts.map +1 -1
  7. package/dist/app-frame-actions.js +53 -0
  8. package/dist/app-frame-actions.js.map +1 -1
  9. package/dist/app-frame-i18n.d.ts.map +1 -1
  10. package/dist/app-frame-i18n.js +2 -0
  11. package/dist/app-frame-i18n.js.map +1 -1
  12. package/dist/app-frame-palette.d.ts.map +1 -1
  13. package/dist/app-frame-palette.js +36 -16
  14. package/dist/app-frame-palette.js.map +1 -1
  15. package/dist/app-frame-render.d.ts.map +1 -1
  16. package/dist/app-frame-render.js +14 -5
  17. package/dist/app-frame-render.js.map +1 -1
  18. package/dist/app-frame-types.d.ts +22 -0
  19. package/dist/app-frame-types.d.ts.map +1 -1
  20. package/dist/app-frame-types.js.map +1 -1
  21. package/dist/app-frame-utils.d.ts +3 -1
  22. package/dist/app-frame-utils.d.ts.map +1 -1
  23. package/dist/app-frame-utils.js +5 -0
  24. package/dist/app-frame-utils.js.map +1 -1
  25. package/dist/app-frame.d.ts +5 -3
  26. package/dist/app-frame.d.ts.map +1 -1
  27. package/dist/app-frame.js +101 -7
  28. package/dist/app-frame.js.map +1 -1
  29. package/dist/canvas.d.ts +11 -3
  30. package/dist/canvas.d.ts.map +1 -1
  31. package/dist/canvas.js +122 -9
  32. package/dist/canvas.js.map +1 -1
  33. package/dist/cell-glyph-fit.d.ts +20 -0
  34. package/dist/cell-glyph-fit.d.ts.map +1 -0
  35. package/dist/cell-glyph-fit.js +82 -0
  36. package/dist/cell-glyph-fit.js.map +1 -0
  37. package/dist/command-palette.d.ts +2 -0
  38. package/dist/command-palette.d.ts.map +1 -1
  39. package/dist/command-palette.js +36 -19
  40. package/dist/command-palette.js.map +1 -1
  41. package/dist/eventbus.d.ts +20 -0
  42. package/dist/eventbus.d.ts.map +1 -1
  43. package/dist/eventbus.js +47 -0
  44. package/dist/eventbus.js.map +1 -1
  45. package/dist/focus-area.d.ts +6 -5
  46. package/dist/focus-area.d.ts.map +1 -1
  47. package/dist/focus-area.js +6 -5
  48. package/dist/focus-area.js.map +1 -1
  49. package/dist/focus-map.d.ts +40 -0
  50. package/dist/focus-map.d.ts.map +1 -0
  51. package/dist/focus-map.js +133 -0
  52. package/dist/focus-map.js.map +1 -0
  53. package/dist/index.d.ts +20 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +11 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/input-map.d.ts +68 -0
  58. package/dist/input-map.d.ts.map +1 -0
  59. package/dist/input-map.js +162 -0
  60. package/dist/input-map.js.map +1 -0
  61. package/dist/input-routing-inspector.d.ts +24 -0
  62. package/dist/input-routing-inspector.d.ts.map +1 -0
  63. package/dist/input-routing-inspector.js +76 -0
  64. package/dist/input-routing-inspector.js.map +1 -0
  65. package/dist/keybindings.d.ts.map +1 -1
  66. package/dist/keybindings.js +3 -0
  67. package/dist/keybindings.js.map +1 -1
  68. package/dist/layout-inspector.d.ts +31 -0
  69. package/dist/layout-inspector.d.ts.map +1 -0
  70. package/dist/layout-inspector.js +133 -0
  71. package/dist/layout-inspector.js.map +1 -0
  72. package/dist/notification.d.ts.map +1 -1
  73. package/dist/notification.js +38 -5
  74. package/dist/notification.js.map +1 -1
  75. package/dist/pipeline/middleware/motion.d.ts.map +1 -1
  76. package/dist/pipeline/middleware/motion.js +2 -1
  77. package/dist/pipeline/middleware/motion.js.map +1 -1
  78. package/dist/pipeline/middleware/paint.d.ts.map +1 -1
  79. package/dist/pipeline/middleware/paint.js +2 -1
  80. package/dist/pipeline/middleware/paint.js.map +1 -1
  81. package/dist/pipeline/pipeline.d.ts +8 -1
  82. package/dist/pipeline/pipeline.d.ts.map +1 -1
  83. package/dist/pipeline/pipeline.js +43 -7
  84. package/dist/pipeline/pipeline.js.map +1 -1
  85. package/dist/raytrace.d.ts +59 -0
  86. package/dist/raytrace.d.ts.map +1 -0
  87. package/dist/raytrace.js +121 -0
  88. package/dist/raytrace.js.map +1 -0
  89. package/dist/runtime-binding.d.ts +59 -0
  90. package/dist/runtime-binding.d.ts.map +1 -0
  91. package/dist/runtime-binding.js +271 -0
  92. package/dist/runtime-binding.js.map +1 -0
  93. package/dist/runtime.d.ts.map +1 -1
  94. package/dist/runtime.js +41 -3
  95. package/dist/runtime.js.map +1 -1
  96. package/dist/surface-budget.d.ts +27 -0
  97. package/dist/surface-budget.d.ts.map +1 -0
  98. package/dist/surface-budget.js +61 -0
  99. package/dist/surface-budget.js.map +1 -0
  100. package/dist/surface-diff.d.ts +36 -0
  101. package/dist/surface-diff.d.ts.map +1 -0
  102. package/dist/surface-diff.js +202 -0
  103. package/dist/surface-diff.js.map +1 -0
  104. package/dist/surface-layout.d.ts +11 -0
  105. package/dist/surface-layout.d.ts.map +1 -1
  106. package/dist/surface-layout.js +16 -1
  107. package/dist/surface-layout.js.map +1 -1
  108. package/dist/types.d.ts +8 -0
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/types.js.map +1 -1
  111. package/package.json +4 -4
@@ -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":"AAAA,OAAO,EAAE,eAAe,EAAiC,MAAM,qBAAqB,CAAC;AAoCrF,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,UAAU,wBAAwB,CAKtC,OAA4D,EAC5D,MAA0D,EAC1D,UAA+C,EAAE;IAEjD,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAAqC;IAErC,MAAM,KAAK,GAAG,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IAElE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACxC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAqC,EACrC,UAA+C,EAAE;IAEjD,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;IAChG,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAmC,EACnC,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,WAAW,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,WAAW,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,IAAI,WAAW,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,WAAW,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAChD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE/C,OAAO;QACL,IAAI,KAAK,GAAG,CAAC,GAAG;QAChB,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;QACxC,WAAW,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACnC,WAAW,OAAO,EAAE;QACpB,aAAa,SAAS,EAAE;QACxB,aAAa,SAAS,EAAE;QACxB,QAAQ,IAAI,EAAE;QACd,OAAO,GAAG,EAAE;QACZ,YAAY,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACzE,WAAW,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACtE,aAAa,MAAM,CAAC,SAAS,CAAC,EAAE;QAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,EAAE;KACvB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAwB;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,WAAW,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,aAAa,CAAC,MAAqC,EAAE,KAAa;IACzE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAyB,EAAE,QAAgB;IAC1E,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keybindings.d.ts","sourceRoot":"","sources":["../src/keybindings.ts"],"names":[],"mappings":"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"}
@@ -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'.
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
@@ -603,12 +603,45 @@ function wrapLineSurface(surface, width) {
603
603
  if (surface.width === 0)
604
604
  return [createBlankLineSurface(safeWidth)];
605
605
  const rows = [];
606
- for (let offset = 0; offset < surface.width; offset += safeWidth) {
607
- const row = createSurface(safeWidth, 1);
608
- row.blit(surface, 0, 0, offset, 0, safeWidth, 1);
609
- rows.push(row);
606
+ let offset = 0;
607
+ while (offset < surface.width) {
608
+ const hardEnd = Math.min(surface.width, offset + safeWidth);
609
+ const end = hardEnd >= surface.width
610
+ ? surface.width
611
+ : wordBoundarySurfaceEnd(surface, offset, hardEnd);
612
+ rows.push(sliceLineSurface(surface, offset, end, safeWidth));
613
+ offset = hardEnd >= surface.width
614
+ ? surface.width
615
+ : trimLeadingSurfaceWhitespace(surface, end < hardEnd ? end + 1 : hardEnd);
616
+ }
617
+ return rows.length === 0 ? [createBlankLineSurface(safeWidth)] : rows;
618
+ }
619
+ function sliceLineSurface(surface, start, end, width) {
620
+ const row = createSurface(width, 1);
621
+ const span = Math.max(0, Math.min(surface.width, end) - start);
622
+ if (span > 0) {
623
+ row.blit(surface, 0, 0, start, 0, span, 1);
610
624
  }
611
- return rows;
625
+ return row;
626
+ }
627
+ function wordBoundarySurfaceEnd(surface, start, hardEnd) {
628
+ let breakAt = -1;
629
+ for (let index = start; index < hardEnd; index++) {
630
+ if (isWhitespaceSurfaceCell(surface, index)) {
631
+ breakAt = index;
632
+ }
633
+ }
634
+ return breakAt > start ? breakAt : hardEnd;
635
+ }
636
+ function trimLeadingSurfaceWhitespace(surface, start) {
637
+ let offset = start;
638
+ while (offset < surface.width && isWhitespaceSurfaceCell(surface, offset)) {
639
+ offset++;
640
+ }
641
+ return offset;
642
+ }
643
+ function isWhitespaceSurfaceCell(surface, col) {
644
+ return /^\s+$/.test(surface.get(col, 0).char);
612
645
  }
613
646
  function renderPlainSurface(surface) {
614
647
  const lines = [];