@flyingrobots/bijou-tui 0.10.0 → 1.1.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 +25 -0
- package/dist/accordion.d.ts +46 -5
- package/dist/accordion.d.ts.map +1 -1
- package/dist/accordion.js +41 -5
- package/dist/accordion.js.map +1 -1
- package/dist/animate.d.ts +30 -0
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +33 -0
- package/dist/animate.js.map +1 -1
- package/dist/browsable-list.d.ts +67 -4
- package/dist/browsable-list.d.ts.map +1 -1
- package/dist/browsable-list.js +49 -4
- package/dist/browsable-list.js.map +1 -1
- package/dist/canvas.d.ts +13 -4
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +9 -3
- package/dist/canvas.js.map +1 -1
- package/dist/command-palette.d.ts +67 -6
- package/dist/command-palette.d.ts.map +1 -1
- package/dist/command-palette.js +67 -6
- package/dist/command-palette.js.map +1 -1
- package/dist/commands.d.ts +32 -3
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +32 -3
- package/dist/commands.js.map +1 -1
- package/dist/dag-pane.d.ts +225 -0
- package/dist/dag-pane.d.ts.map +1 -0
- package/dist/dag-pane.js +510 -0
- package/dist/dag-pane.js.map +1 -0
- package/dist/driver.d.ts +14 -0
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +7 -0
- package/dist/driver.js.map +1 -1
- package/dist/eventbus.d.ts +43 -6
- package/dist/eventbus.d.ts.map +1 -1
- package/dist/eventbus.js +9 -0
- package/dist/eventbus.js.map +1 -1
- package/dist/file-picker.d.ts +56 -4
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +52 -4
- package/dist/file-picker.js.map +1 -1
- package/dist/flex.d.ts +17 -0
- package/dist/flex.d.ts.map +1 -1
- package/dist/flex.js +106 -12
- package/dist/flex.js.map +1 -1
- package/dist/focus-area.d.ts +179 -0
- package/dist/focus-area.d.ts.map +1 -0
- package/dist/focus-area.js +261 -0
- package/dist/focus-area.js.map +1 -0
- package/dist/help.d.ts +16 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +13 -0
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/inputstack.d.ts +32 -4
- package/dist/inputstack.d.ts.map +1 -1
- package/dist/inputstack.js +11 -0
- package/dist/inputstack.js.map +1 -1
- package/dist/keybindings.d.ts +106 -14
- package/dist/keybindings.d.ts.map +1 -1
- package/dist/keybindings.js +28 -2
- package/dist/keybindings.js.map +1 -1
- package/dist/keys.d.ts +24 -8
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +34 -9
- package/dist/keys.js.map +1 -1
- package/dist/layout.d.ts +26 -0
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +25 -1
- package/dist/layout.js.map +1 -1
- package/dist/navigable-table.d.ts +48 -4
- package/dist/navigable-table.d.ts.map +1 -1
- package/dist/navigable-table.js +44 -4
- package/dist/navigable-table.js.map +1 -1
- package/dist/overlay.d.ts +110 -3
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +87 -7
- package/dist/overlay.js.map +1 -1
- package/dist/pager.d.ts +66 -7
- package/dist/pager.d.ts.map +1 -1
- package/dist/pager.js +56 -7
- package/dist/pager.js.map +1 -1
- package/dist/panels.d.ts +55 -0
- package/dist/panels.d.ts.map +1 -1
- package/dist/panels.js +11 -0
- package/dist/panels.js.map +1 -1
- package/dist/runtime.d.ts +6 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +6 -0
- package/dist/runtime.js.map +1 -1
- package/dist/screen.d.ts +37 -3
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +37 -3
- package/dist/screen.js.map +1 -1
- package/dist/spring.d.ts +56 -7
- package/dist/spring.d.ts.map +1 -1
- package/dist/spring.js +44 -7
- package/dist/spring.js.map +1 -1
- package/dist/status-bar.d.ts +15 -2
- package/dist/status-bar.d.ts.map +1 -1
- package/dist/status-bar.js +9 -0
- package/dist/status-bar.js.map +1 -1
- package/dist/timeline.d.ts +68 -5
- package/dist/timeline.d.ts.map +1 -1
- package/dist/timeline.js +33 -0
- package/dist/timeline.js.map +1 -1
- package/dist/types.d.ts +86 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +27 -3
- package/dist/types.js.map +1 -1
- package/dist/viewport.d.ts +71 -11
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +79 -11
- package/dist/viewport.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus area building block — a scrollable pane with a colored left gutter.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `viewport()` and prepends a styled gutter character (`▎`) to each
|
|
5
|
+
* line indicating focus state: bright accent when focused, muted when unfocused.
|
|
6
|
+
*
|
|
7
|
+
* Follows the building block pattern: immutable state + pure transformers +
|
|
8
|
+
* pure render + convenience keymap factory.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* // In TEA init:
|
|
12
|
+
* const fa = createFocusAreaState({ content, width: 60, height: 20 });
|
|
13
|
+
*
|
|
14
|
+
* // In TEA view:
|
|
15
|
+
* const output = focusArea(fa, { focused: true, ctx });
|
|
16
|
+
*
|
|
17
|
+
* // In TEA update:
|
|
18
|
+
* case 'scroll-down':
|
|
19
|
+
* return [{ ...model, fa: focusAreaScrollBy(model.fa, 1) }, []];
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { viewport, createScrollState, scrollBy, scrollTo, scrollToTop, scrollToBottom, pageDown, pageUp, scrollByX, scrollToX, } from './viewport.js';
|
|
23
|
+
import { createKeyMap } from './keybindings.js';
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Constants
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/** Gutter character: left one quarter block (U+258E). */
|
|
28
|
+
const GUTTER_CHAR = '▎';
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// State creation
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
/**
|
|
33
|
+
* Create initial focus area state for the given content and dimensions.
|
|
34
|
+
*
|
|
35
|
+
* The viewport width is `width - 1` to account for the gutter column.
|
|
36
|
+
* When `overflowX` is `'scroll'`, horizontal scroll bounds are computed
|
|
37
|
+
* from the widest content line.
|
|
38
|
+
*
|
|
39
|
+
* @param options - Content, width, height, and overflow for the focus area.
|
|
40
|
+
* @returns Fresh focus area state with scroll at the top-left.
|
|
41
|
+
*/
|
|
42
|
+
export function createFocusAreaState(options) {
|
|
43
|
+
const { content, overflowX = 'hidden' } = options;
|
|
44
|
+
// Clamp dimensions to at least 1
|
|
45
|
+
const width = Math.max(1, options.width);
|
|
46
|
+
const height = Math.max(1, options.height);
|
|
47
|
+
// Gutter consumes 1 column; scrollbar consumes 1 more when visible
|
|
48
|
+
const contentWidth = Math.max(1, width - 1);
|
|
49
|
+
const totalLines = content.split('\n').length;
|
|
50
|
+
const hasScrollbar = totalLines > height;
|
|
51
|
+
const scrollableWidth = hasScrollbar ? Math.max(1, contentWidth - 1) : contentWidth;
|
|
52
|
+
const viewportWidth = overflowX === 'scroll' ? scrollableWidth : undefined;
|
|
53
|
+
return {
|
|
54
|
+
content,
|
|
55
|
+
scroll: createScrollState(content, height, viewportWidth),
|
|
56
|
+
width,
|
|
57
|
+
height,
|
|
58
|
+
overflowX,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// State transformers
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
/**
|
|
65
|
+
* Scroll vertically by a relative amount.
|
|
66
|
+
*
|
|
67
|
+
* @param state - Current focus area state.
|
|
68
|
+
* @param dy - Relative vertical offset (positive = down).
|
|
69
|
+
* @returns Updated state with new scroll position.
|
|
70
|
+
*/
|
|
71
|
+
export function focusAreaScrollBy(state, dy) {
|
|
72
|
+
return { ...state, scroll: scrollBy(state.scroll, dy) };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Scroll vertically to an absolute position.
|
|
76
|
+
*
|
|
77
|
+
* @param state - Current focus area state.
|
|
78
|
+
* @param y - Absolute vertical offset (0-based).
|
|
79
|
+
* @returns Updated state with new scroll position.
|
|
80
|
+
*/
|
|
81
|
+
export function focusAreaScrollTo(state, y) {
|
|
82
|
+
return { ...state, scroll: scrollTo(state.scroll, y) };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Scroll to the first line.
|
|
86
|
+
*
|
|
87
|
+
* @param state - Current focus area state.
|
|
88
|
+
* @returns Updated state scrolled to the top.
|
|
89
|
+
*/
|
|
90
|
+
export function focusAreaScrollToTop(state) {
|
|
91
|
+
return { ...state, scroll: scrollToTop(state.scroll) };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Scroll to the last line.
|
|
95
|
+
*
|
|
96
|
+
* @param state - Current focus area state.
|
|
97
|
+
* @returns Updated state scrolled to the bottom.
|
|
98
|
+
*/
|
|
99
|
+
export function focusAreaScrollToBottom(state) {
|
|
100
|
+
return { ...state, scroll: scrollToBottom(state.scroll) };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Page down (one viewport height).
|
|
104
|
+
*
|
|
105
|
+
* @param state - Current focus area state.
|
|
106
|
+
* @returns Updated state advanced by one page.
|
|
107
|
+
*/
|
|
108
|
+
export function focusAreaPageDown(state) {
|
|
109
|
+
return { ...state, scroll: pageDown(state.scroll) };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Page up (one viewport height).
|
|
113
|
+
*
|
|
114
|
+
* @param state - Current focus area state.
|
|
115
|
+
* @returns Updated state moved back by one page.
|
|
116
|
+
*/
|
|
117
|
+
export function focusAreaPageUp(state) {
|
|
118
|
+
return { ...state, scroll: pageUp(state.scroll) };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Scroll horizontally by a relative amount.
|
|
122
|
+
* No-op when `overflowX` is `'hidden'`.
|
|
123
|
+
*
|
|
124
|
+
* @param state - Current focus area state.
|
|
125
|
+
* @param dx - Relative horizontal offset (positive = right).
|
|
126
|
+
* @returns Updated state with new horizontal scroll position.
|
|
127
|
+
*/
|
|
128
|
+
export function focusAreaScrollByX(state, dx) {
|
|
129
|
+
if (state.overflowX === 'hidden')
|
|
130
|
+
return state;
|
|
131
|
+
return { ...state, scroll: scrollByX(state.scroll, dx) };
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Scroll horizontally to an absolute position.
|
|
135
|
+
* No-op when `overflowX` is `'hidden'`.
|
|
136
|
+
*
|
|
137
|
+
* @param state - Current focus area state.
|
|
138
|
+
* @param x - Absolute horizontal offset (0-based).
|
|
139
|
+
* @returns Updated state with new horizontal scroll position.
|
|
140
|
+
*/
|
|
141
|
+
export function focusAreaScrollToX(state, x) {
|
|
142
|
+
if (state.overflowX === 'hidden')
|
|
143
|
+
return state;
|
|
144
|
+
return { ...state, scroll: scrollToX(state.scroll, x) };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Update content while preserving scroll position (clamped).
|
|
148
|
+
*
|
|
149
|
+
* @param state - Current focus area state.
|
|
150
|
+
* @param content - New text content to display.
|
|
151
|
+
* @returns Updated state with new content and clamped scroll position.
|
|
152
|
+
*/
|
|
153
|
+
export function focusAreaSetContent(state, content) {
|
|
154
|
+
const contentWidth = Math.max(1, state.width - 1);
|
|
155
|
+
const totalLines = content.split('\n').length;
|
|
156
|
+
const hasScrollbar = totalLines > state.height;
|
|
157
|
+
const scrollableWidth = hasScrollbar ? Math.max(1, contentWidth - 1) : contentWidth;
|
|
158
|
+
const viewportWidth = state.overflowX === 'scroll' ? scrollableWidth : undefined;
|
|
159
|
+
const newScroll = createScrollState(content, state.height, viewportWidth);
|
|
160
|
+
const clampedY = Math.min(state.scroll.y, newScroll.maxY);
|
|
161
|
+
const clampedX = Math.min(state.scroll.x, newScroll.maxX);
|
|
162
|
+
return {
|
|
163
|
+
...state,
|
|
164
|
+
content,
|
|
165
|
+
scroll: { ...newScroll, y: clampedY, x: clampedX },
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// Render
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
/**
|
|
172
|
+
* Render the focus area — viewport content with a colored left gutter.
|
|
173
|
+
*
|
|
174
|
+
* The gutter character (`▎`) is styled based on focus state:
|
|
175
|
+
* - Focused: `focusedGutterToken` (default: `theme.semantic.accent`)
|
|
176
|
+
* - Unfocused: `unfocusedGutterToken` (default: `theme.semantic.muted`)
|
|
177
|
+
* - Static mode: unstyled gutter
|
|
178
|
+
* - Pipe / accessible mode: no gutter (full width to content)
|
|
179
|
+
*
|
|
180
|
+
* @param state - Current focus area state.
|
|
181
|
+
* @param options - Rendering options (focus, tokens, scrollbar, ctx).
|
|
182
|
+
* @returns Rendered focus area string.
|
|
183
|
+
*/
|
|
184
|
+
export function focusArea(state, options) {
|
|
185
|
+
const focused = options?.focused ?? true;
|
|
186
|
+
const showScrollbar = options?.showScrollbar ?? true;
|
|
187
|
+
const ctx = options?.ctx;
|
|
188
|
+
const mode = ctx?.mode ?? 'interactive';
|
|
189
|
+
// Pipe and accessible modes: no gutter, full width to content
|
|
190
|
+
const hasGutter = mode !== 'pipe' && mode !== 'accessible';
|
|
191
|
+
const contentWidth = hasGutter ? Math.max(1, state.width - 1) : state.width;
|
|
192
|
+
// Clamp scrollX to render-time content width (may differ from state-time
|
|
193
|
+
// width when pipe/accessible mode removes the gutter)
|
|
194
|
+
let scrollX;
|
|
195
|
+
if (state.overflowX === 'scroll') {
|
|
196
|
+
const maxRenderX = Math.max(0, state.scroll.maxX + (contentWidth < state.width ? 0 : 1));
|
|
197
|
+
scrollX = Math.min(state.scroll.x, maxRenderX);
|
|
198
|
+
}
|
|
199
|
+
const body = viewport({
|
|
200
|
+
width: contentWidth,
|
|
201
|
+
height: state.height,
|
|
202
|
+
content: state.content,
|
|
203
|
+
scrollY: state.scroll.y,
|
|
204
|
+
scrollX,
|
|
205
|
+
showScrollbar,
|
|
206
|
+
});
|
|
207
|
+
if (!hasGutter)
|
|
208
|
+
return body;
|
|
209
|
+
// Determine gutter string
|
|
210
|
+
const gutter = resolveGutter(focused, ctx, options);
|
|
211
|
+
// Prepend gutter to each line
|
|
212
|
+
const lines = body.split('\n');
|
|
213
|
+
return lines.map((line) => gutter + line).join('\n');
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Resolve the styled gutter string based on focus state and context.
|
|
217
|
+
*/
|
|
218
|
+
function resolveGutter(focused, ctx, options) {
|
|
219
|
+
if (!ctx)
|
|
220
|
+
return GUTTER_CHAR;
|
|
221
|
+
const mode = ctx.mode;
|
|
222
|
+
if (mode === 'static')
|
|
223
|
+
return GUTTER_CHAR;
|
|
224
|
+
const token = focused
|
|
225
|
+
? (options?.focusedGutterToken ?? ctx.theme.theme.semantic.accent)
|
|
226
|
+
: (options?.unfocusedGutterToken ?? ctx.theme.theme.semantic.muted);
|
|
227
|
+
return ctx.style.styled(token, GUTTER_CHAR);
|
|
228
|
+
}
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
// Convenience keymap
|
|
231
|
+
// ---------------------------------------------------------------------------
|
|
232
|
+
/**
|
|
233
|
+
* Create a preconfigured KeyMap for focus area navigation.
|
|
234
|
+
*
|
|
235
|
+
* Arrow keys are intentionally excluded — reserved for content-specific
|
|
236
|
+
* navigation (e.g., DAG node selection).
|
|
237
|
+
*
|
|
238
|
+
* @template Msg - Application message type dispatched by key bindings.
|
|
239
|
+
* @param actions - Map of navigation actions to message values.
|
|
240
|
+
* @returns Preconfigured key map with vim-style scroll bindings.
|
|
241
|
+
*/
|
|
242
|
+
export function focusAreaKeyMap(actions) {
|
|
243
|
+
const km = createKeyMap()
|
|
244
|
+
.group('Scroll', (g) => {
|
|
245
|
+
g.bind('j', 'Down', actions.scrollDown)
|
|
246
|
+
.bind('k', 'Up', actions.scrollUp)
|
|
247
|
+
.bind('d', 'Page down', actions.pageDown)
|
|
248
|
+
.bind('u', 'Page up', actions.pageUp)
|
|
249
|
+
.bind('g', 'Top', actions.top)
|
|
250
|
+
.bind('shift+g', 'Bottom', actions.bottom);
|
|
251
|
+
if (actions.scrollLeft !== undefined) {
|
|
252
|
+
g.bind('h', 'Scroll left', actions.scrollLeft);
|
|
253
|
+
}
|
|
254
|
+
if (actions.scrollRight !== undefined) {
|
|
255
|
+
g.bind('l', 'Scroll right', actions.scrollRight);
|
|
256
|
+
}
|
|
257
|
+
return g;
|
|
258
|
+
});
|
|
259
|
+
return km;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=focus-area.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-area.js","sourceRoot":"","sources":["../src/focus-area.ts"],"names":[],"mappings":"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"}
|
package/dist/help.d.ts
CHANGED
|
@@ -17,14 +17,16 @@
|
|
|
17
17
|
import type { BindingInfo } from './keybindings.js';
|
|
18
18
|
/** Anything that can list its bindings (satisfied by KeyMap). */
|
|
19
19
|
export interface BindingSource {
|
|
20
|
+
/** Return all registered key bindings. */
|
|
20
21
|
bindings(): readonly BindingInfo[];
|
|
21
22
|
}
|
|
23
|
+
/** Options for rendering help views. */
|
|
22
24
|
export interface HelpOptions {
|
|
23
25
|
/** Only show enabled bindings (default: true). */
|
|
24
26
|
enabledOnly?: boolean;
|
|
25
27
|
/** Filter to bindings in groups matching this prefix. */
|
|
26
28
|
groupFilter?: string;
|
|
27
|
-
/** Separator between key and description (default: " "). */
|
|
29
|
+
/** Separator between key and description (default: `" "`). */
|
|
28
30
|
separator?: string;
|
|
29
31
|
/** Title shown at the top (default: none). */
|
|
30
32
|
title?: string;
|
|
@@ -41,6 +43,10 @@ export interface HelpOptions {
|
|
|
41
43
|
* q Quit
|
|
42
44
|
* ? Toggle help
|
|
43
45
|
* ```
|
|
46
|
+
*
|
|
47
|
+
* @param keymap - Source of key binding information.
|
|
48
|
+
* @param options - Filtering, formatting, and title options.
|
|
49
|
+
* @returns Multi-line help text grouped by binding group.
|
|
44
50
|
*/
|
|
45
51
|
export declare function helpView(keymap: BindingSource, options?: HelpOptions): string;
|
|
46
52
|
/**
|
|
@@ -49,10 +55,19 @@ export declare function helpView(keymap: BindingSource, options?: HelpOptions):
|
|
|
49
55
|
* ```
|
|
50
56
|
* q Quit • j Down • k Up • ? Help
|
|
51
57
|
* ```
|
|
58
|
+
*
|
|
59
|
+
* @param keymap - Source of key binding information.
|
|
60
|
+
* @param options - Optional filtering by enabled state or group prefix.
|
|
61
|
+
* @returns Single-line help string with keys and descriptions separated by bullets.
|
|
52
62
|
*/
|
|
53
63
|
export declare function helpShort(keymap: BindingSource, options?: Pick<HelpOptions, 'enabledOnly' | 'groupFilter'>): string;
|
|
54
64
|
/**
|
|
55
65
|
* Filter help to a specific group (convenience wrapper).
|
|
66
|
+
*
|
|
67
|
+
* @param keymap - Source of key binding information.
|
|
68
|
+
* @param groupPrefix - Group name prefix to filter on (case-insensitive).
|
|
69
|
+
* @param options - Additional formatting options forwarded to `helpView` (excluding `groupFilter`, which is set by `groupPrefix`).
|
|
70
|
+
* @returns Filtered multi-line help text.
|
|
56
71
|
*/
|
|
57
72
|
export declare function helpFor(keymap: BindingSource, groupPrefix: string, options?: HelpOptions): string;
|
|
58
73
|
//# sourceMappingURL=help.d.ts.map
|
package/dist/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI,SAAS,WAAW,EAAE,CAAC;CACpC;AAMD,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,QAAQ,IAAI,SAAS,WAAW,EAAE,CAAC;CACpC;AAMD,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAoD7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,MAAM,CAenH;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAEjG"}
|
package/dist/help.js
CHANGED
|
@@ -30,6 +30,10 @@ import { formatKeyCombo } from './keybindings.js';
|
|
|
30
30
|
* q Quit
|
|
31
31
|
* ? Toggle help
|
|
32
32
|
* ```
|
|
33
|
+
*
|
|
34
|
+
* @param keymap - Source of key binding information.
|
|
35
|
+
* @param options - Filtering, formatting, and title options.
|
|
36
|
+
* @returns Multi-line help text grouped by binding group.
|
|
33
37
|
*/
|
|
34
38
|
export function helpView(keymap, options) {
|
|
35
39
|
const enabledOnly = options?.enabledOnly ?? true;
|
|
@@ -81,6 +85,10 @@ export function helpView(keymap, options) {
|
|
|
81
85
|
* ```
|
|
82
86
|
* q Quit • j Down • k Up • ? Help
|
|
83
87
|
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param keymap - Source of key binding information.
|
|
90
|
+
* @param options - Optional filtering by enabled state or group prefix.
|
|
91
|
+
* @returns Single-line help string with keys and descriptions separated by bullets.
|
|
84
92
|
*/
|
|
85
93
|
export function helpShort(keymap, options) {
|
|
86
94
|
const enabledOnly = options?.enabledOnly ?? true;
|
|
@@ -97,6 +105,11 @@ export function helpShort(keymap, options) {
|
|
|
97
105
|
}
|
|
98
106
|
/**
|
|
99
107
|
* Filter help to a specific group (convenience wrapper).
|
|
108
|
+
*
|
|
109
|
+
* @param keymap - Source of key binding information.
|
|
110
|
+
* @param groupPrefix - Group name prefix to filter on (case-insensitive).
|
|
111
|
+
* @param options - Additional formatting options forwarded to `helpView` (excluding `groupFilter`, which is set by `groupPrefix`).
|
|
112
|
+
* @returns Filtered multi-line help text.
|
|
100
113
|
*/
|
|
101
114
|
export function helpFor(keymap, groupPrefix, options) {
|
|
102
115
|
return helpView(keymap, { ...options, groupFilter: groupPrefix });
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAwBlD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAqB,EAAE,OAAqB;IACnE,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,MAAM,GAAG,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IACvC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;IAEzC,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5B,IAAI,WAAW;QAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,sBAAsB;IACtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;QACnC,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAED,mCAAmC;IACnC,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,KAAK,GAAG,KAAK,CAAC;QAEd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,MAAqB,EAAE,OAA0D;IACzG,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;IAEzC,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5B,IAAI,WAAW;QAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;SACzD,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,MAAqB,EAAE,WAAmB,EAAE,OAAqB;IACvF,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bijou-tui — TEA-based terminal UI framework.
|
|
3
|
+
*
|
|
4
|
+
* Re-export all public types, functions, and constants from the bijou-tui
|
|
5
|
+
* package. Import from `@flyingrobots/bijou-tui` for the full API.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
1
9
|
export type { App, Cmd, KeyMsg, ResizeMsg, MouseMsg, MouseButton, MouseAction, QuitSignal, RunOptions } from './types.js';
|
|
2
10
|
export { QUIT, isKeyMsg, isResizeMsg, isMouseMsg } from './types.js';
|
|
3
11
|
export { parseKey, parseMouse } from './keys.js';
|
|
@@ -27,4 +35,6 @@ export { type FileEntry, type FilePickerState, type FilePickerOptions, type File
|
|
|
27
35
|
export { type ScriptStep, type RunScriptOptions, type RunScriptResult, runScript, } from './driver.js';
|
|
28
36
|
export { type ShaderFn, type CanvasOptions, canvas, } from './canvas.js';
|
|
29
37
|
export { type CommandPaletteItem, type CommandPaletteState, type CommandPaletteOptions, createCommandPaletteState, cpFilter, cpFocusNext, cpFocusPrev, cpPageDown, cpPageUp, cpSelectedItem, commandPalette, commandPaletteKeyMap, } from './command-palette.js';
|
|
38
|
+
export { type OverflowX, type FocusAreaState, type FocusAreaOptions, type FocusAreaRenderOptions, createFocusAreaState, focusArea, focusAreaScrollBy, focusAreaScrollTo, focusAreaScrollToTop, focusAreaScrollToBottom, focusAreaPageDown, focusAreaPageUp, focusAreaScrollByX, focusAreaScrollToX, focusAreaSetContent, focusAreaKeyMap, } from './focus-area.js';
|
|
39
|
+
export { type DagPaneDagOptions, type DagPaneState, type DagPaneOptions, type DagPaneRenderOptions, createDagPaneState, dagPane, dagPaneSelectChild, dagPaneSelectParent, dagPaneSelectLeft, dagPaneSelectRight, dagPaneSelectNode, dagPaneClearSelection, dagPaneScrollBy, dagPaneScrollToTop, dagPaneScrollToBottom, dagPanePageDown, dagPanePageUp, dagPaneScrollByX, dagPaneSetSource, dagPaneKeyMap, } from './dag-pane.js';
|
|
30
40
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bijou-tui — TEA-based terminal UI framework.
|
|
3
|
+
*
|
|
4
|
+
* Re-export all public types, functions, and constants from the bijou-tui
|
|
5
|
+
* package. Import from `@flyingrobots/bijou-tui` for the full API.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
1
9
|
export { QUIT, isKeyMsg, isResizeMsg, isMouseMsg } from './types.js';
|
|
2
10
|
// Key parsing
|
|
3
11
|
export { parseKey, parseMouse } from './keys.js';
|
|
@@ -48,4 +56,8 @@ export { runScript, } from './driver.js';
|
|
|
48
56
|
export { canvas, } from './canvas.js';
|
|
49
57
|
// Command palette
|
|
50
58
|
export { createCommandPaletteState, cpFilter, cpFocusNext, cpFocusPrev, cpPageDown, cpPageUp, cpSelectedItem, commandPalette, commandPaletteKeyMap, } from './command-palette.js';
|
|
59
|
+
// Focus area — scrollable pane with colored gutter
|
|
60
|
+
export { createFocusAreaState, focusArea, focusAreaScrollBy, focusAreaScrollTo, focusAreaScrollToTop, focusAreaScrollToBottom, focusAreaPageDown, focusAreaPageUp, focusAreaScrollByX, focusAreaScrollToX, focusAreaSetContent, focusAreaKeyMap, } from './focus-area.js';
|
|
61
|
+
// DAG pane — interactive DAG viewer
|
|
62
|
+
export { createDagPaneState, dagPane, dagPaneSelectChild, dagPaneSelectParent, dagPaneSelectLeft, dagPaneSelectRight, dagPaneSelectNode, dagPaneClearSelection, dagPaneScrollBy, dagPaneScrollToTop, dagPaneScrollToBottom, dagPanePageDown, dagPanePageUp, dagPaneScrollByX, dagPaneSetSource, dagPaneKeyMap, } from './dag-pane.js';
|
|
51
63
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/inputstack.d.ts
CHANGED
|
@@ -26,14 +26,23 @@
|
|
|
26
26
|
*/
|
|
27
27
|
/**
|
|
28
28
|
* Anything that can handle an input message and optionally return an action.
|
|
29
|
+
*
|
|
29
30
|
* Return `undefined` to indicate "not handled" (pass through).
|
|
31
|
+
* {@link KeyMap}.handle() already satisfies this interface.
|
|
30
32
|
*
|
|
31
|
-
*
|
|
33
|
+
* @template Msg - Input message type.
|
|
34
|
+
* @template A - Action type returned on match.
|
|
32
35
|
*/
|
|
33
36
|
export interface InputHandler<Msg, A> {
|
|
37
|
+
/**
|
|
38
|
+
* Attempt to handle the given message.
|
|
39
|
+
*
|
|
40
|
+
* @param msg - Input message to handle.
|
|
41
|
+
* @returns The matched action, or `undefined` if not handled.
|
|
42
|
+
*/
|
|
34
43
|
handle(msg: Msg): A | undefined;
|
|
35
44
|
}
|
|
36
|
-
/**
|
|
45
|
+
/** Configuration options when pushing a layer onto the stack. */
|
|
37
46
|
export interface LayerOptions {
|
|
38
47
|
/**
|
|
39
48
|
* When true, unhandled events pass through to layers below even
|
|
@@ -44,13 +53,21 @@ export interface LayerOptions {
|
|
|
44
53
|
/** Optional name for debugging and removal by name. */
|
|
45
54
|
name?: string;
|
|
46
55
|
}
|
|
47
|
-
/** Read-only
|
|
56
|
+
/** Read-only snapshot of a layer's metadata. */
|
|
48
57
|
export interface LayerInfo {
|
|
58
|
+
/** Unique identifier assigned when the layer was pushed. */
|
|
49
59
|
readonly id: number;
|
|
60
|
+
/** Layer name (empty string if unnamed). */
|
|
50
61
|
readonly name: string;
|
|
62
|
+
/** Whether unhandled events pass through to layers below. */
|
|
51
63
|
readonly passthrough: boolean;
|
|
52
64
|
}
|
|
53
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Stack-based input dispatcher for layered TUI input handling.
|
|
67
|
+
*
|
|
68
|
+
* @template Msg - Input message type dispatched through the stack.
|
|
69
|
+
* @template A - Action type returned when a handler matches.
|
|
70
|
+
*/
|
|
54
71
|
export interface InputStack<Msg, A> {
|
|
55
72
|
/**
|
|
56
73
|
* Push a handler onto the top of the stack.
|
|
@@ -75,5 +92,16 @@ export interface InputStack<Msg, A> {
|
|
|
75
92
|
/** Number of layers in the stack. */
|
|
76
93
|
readonly size: number;
|
|
77
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a new empty input stack.
|
|
97
|
+
*
|
|
98
|
+
* Return an {@link InputStack} that dispatches input messages top-down
|
|
99
|
+
* through a stack of handlers. Layers can be opaque (swallowing unmatched
|
|
100
|
+
* events) or passthrough (letting them fall to lower layers).
|
|
101
|
+
*
|
|
102
|
+
* @template Msg - Input message type dispatched through the stack.
|
|
103
|
+
* @template A - Action type returned when a handler matches.
|
|
104
|
+
* @returns A new empty input stack.
|
|
105
|
+
*/
|
|
78
106
|
export declare function createInputStack<Msg, A>(): InputStack<Msg, A>;
|
|
79
107
|
//# sourceMappingURL=inputstack.d.ts.map
|
package/dist/inputstack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputstack.d.ts","sourceRoot":"","sources":["../src/inputstack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH
|
|
1
|
+
{"version":3,"file":"inputstack.d.ts","sourceRoot":"","sources":["../src/inputstack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,CAAC;IAClC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;CACjC;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gDAAgD;AAChD,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,GAAG,EAAE,CAAC;IAChC;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAEpE,mEAAmE;IACnE,GAAG,IAAI,SAAS,GAAG,SAAS,CAAC;IAE7B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAE5B;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;IAElC,mDAAmD;IACnD,MAAM,IAAI,SAAS,SAAS,EAAE,CAAC;IAE/B,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAuBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CA4D7D"}
|
package/dist/inputstack.js
CHANGED
|
@@ -24,6 +24,17 @@
|
|
|
24
24
|
* // or: stack.remove(modalId);
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
|
+
/**
|
|
28
|
+
* Create a new empty input stack.
|
|
29
|
+
*
|
|
30
|
+
* Return an {@link InputStack} that dispatches input messages top-down
|
|
31
|
+
* through a stack of handlers. Layers can be opaque (swallowing unmatched
|
|
32
|
+
* events) or passthrough (letting them fall to lower layers).
|
|
33
|
+
*
|
|
34
|
+
* @template Msg - Input message type dispatched through the stack.
|
|
35
|
+
* @template A - Action type returned when a handler matches.
|
|
36
|
+
* @returns A new empty input stack.
|
|
37
|
+
*/
|
|
27
38
|
export function createInputStack() {
|
|
28
39
|
const stack = [];
|
|
29
40
|
let nextId = 1;
|
package/dist/inputstack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputstack.js","sourceRoot":"","sources":["../src/inputstack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"inputstack.js","sourceRoot":"","sources":["../src/inputstack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAyGH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO;QACL,IAAI,CAAC,OAAO,EAAE,OAAO;YACnB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE;gBACF,OAAO;gBACP,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK;gBAC1C,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;aAC1B,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,GAAG;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK;gBAAE,OAAO,SAAS,CAAC;YAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5E,CAAC;QAED,MAAM,CAAC,EAAE;YACP,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC7B,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,QAAQ,CAAC,GAAG;YACV,gBAAgB;YAChB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,4DAA4D;gBAC5D,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBACvB,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM;YACJ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,IAAI;YACN,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
|