genaicode 2.13.4 → 2.14.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/CHANGELOG.md +11 -0
- package/README.md +38 -0
- package/dist/react/agent-chat.js +5 -12
- package/dist/react/agent-chat.js.map +1 -1
- package/dist/react/follow-scroll.d.ts +18 -0
- package/dist/react/follow-scroll.js +49 -0
- package/dist/react/follow-scroll.js.map +1 -0
- package/dist/react/resize-handle.d.ts +65 -0
- package/dist/react/resize-handle.js +158 -0
- package/dist/react/resize-handle.js.map +1 -0
- package/dist/react.d.ts +3 -0
- package/dist/react.js +2 -0
- package/dist/react.js.map +1 -1
- package/dist/ui/web-client.js +13 -13
- package/dist/vite/overlay.js +14 -4
- package/dist/vite/overlay.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `genaicode/react` exports `useFollowScroll`, the hook that keeps a transcript at its newest
|
|
8
|
+
line until the user scrolls up (`<AgentChat>` now uses it, and also re-pins when its box is
|
|
9
|
+
resized), and `installResizeHandle` with `storedSize`: a framework-free panel-edge resize
|
|
10
|
+
handle with pointer drag, arrow keys, Home/End, Escape to undo a drag, Enter or double-click
|
|
11
|
+
to reset, and a kept ARIA range. The gamedev.pl Play workbench uses both.
|
|
12
|
+
|
|
5
13
|
### Fixed
|
|
6
14
|
|
|
7
15
|
- Anthropic structured outputs: the converter drops the schema keywords the API rejects with a
|
|
@@ -9,6 +17,9 @@
|
|
|
9
17
|
`uniqueItems`) and lowers `minItems` above 1 to 1, the largest value accepted. It walks only
|
|
10
18
|
real subschemas, so a property that happens to be named `maximum` is kept. Callers still
|
|
11
19
|
validate the answer against their own schema.
|
|
20
|
+
- `genaicode/vite` overlay: Escape closes the panel and hands the focus back to the wolf, from the
|
|
21
|
+
wolf or anything in the panel (inside the chat frame the key stays with the UI). The wolf names
|
|
22
|
+
the panel it toggles with `aria-controls`.
|
|
12
23
|
|
|
13
24
|
## 2.13.3 — 2026-10-17
|
|
14
25
|
|
package/README.md
CHANGED
|
@@ -318,6 +318,44 @@ Theme it with CSS custom properties on the component or any ancestor: `--gc-bg`,
|
|
|
318
318
|
the `genaicode ui` look, light or dark by `prefers-color-scheme`, or by `theme="light"` /
|
|
319
319
|
`"dark"`. `genaicode ui` and the Vite panel draw this same component.
|
|
320
320
|
|
|
321
|
+
Two smaller pieces come along for hosts that build their own panels around a transcript:
|
|
322
|
+
|
|
323
|
+
```ts
|
|
324
|
+
import { installResizeHandle, storedSize, useFollowScroll } from 'genaicode/react';
|
|
325
|
+
|
|
326
|
+
// A log that stays at its newest line until the user scrolls up (and again after follow()).
|
|
327
|
+
const { ref, onScroll, follow } = useFollowScroll(lines);
|
|
328
|
+
|
|
329
|
+
// A drag handle on a panel's left edge; the width survives reloads.
|
|
330
|
+
const stored = storedSize('panel-width', [300, 900]);
|
|
331
|
+
let width = stored.get();
|
|
332
|
+
const handle = installResizeHandle(edge, {
|
|
333
|
+
axis: 'x',
|
|
334
|
+
direction: () => -1, // dragging left makes the panel wider
|
|
335
|
+
bounds: () => [300, Math.min(900, innerWidth - 24)],
|
|
336
|
+
read: () => width ?? 390,
|
|
337
|
+
write: (next, commit) => {
|
|
338
|
+
width = next;
|
|
339
|
+
panel.style.setProperty('--width', `${width}px`);
|
|
340
|
+
if (commit) stored.set(width);
|
|
341
|
+
},
|
|
342
|
+
reset: () => {
|
|
343
|
+
width = undefined;
|
|
344
|
+
panel.style.removeProperty('--width');
|
|
345
|
+
stored.clear();
|
|
346
|
+
},
|
|
347
|
+
});
|
|
348
|
+
// The CSS caps the shown width, so the saved one comes back when the window grows again:
|
|
349
|
+
// .panel { width: min(var(--width, 390px), calc(100vw - 24px)); }
|
|
350
|
+
window.addEventListener('resize', handle.sync);
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
The handle keeps its `aria-value*` range current and takes the arrow keys (Shift for bigger
|
|
354
|
+
steps), Home and End, Escape to undo a drag, and Enter or double-click to reset. While a drag
|
|
355
|
+
runs, `document.body` (or `root`) has `data-resizing="true"`, so the page can keep the cursor
|
|
356
|
+
and turn off pointer events on iframes. `read()` must return what `write` or `reset` just set,
|
|
357
|
+
so keep the size in a variable or a ref rather than only in React state.
|
|
358
|
+
|
|
321
359
|
To show the whole `genaicode ui` page in a frame instead, `startEmbeddedWeb` from
|
|
322
360
|
`genaicode/ui` serves it on 127.0.0.1 with your `task` (`mcpServers`, `timeoutMs`...), `env`
|
|
323
361
|
and `transformPrompt`, and returns its tokenized `url` and a `controller` to send prompts.
|
package/dist/react/agent-chat.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useLayoutEffect, useRef, useState, } from 'react';
|
|
3
|
+
import { useFollowScroll } from './follow-scroll.js';
|
|
3
4
|
import { formatDuration, formatUsage, relativePath, shortId, toolLabel, toolSummary, turnFooter } from './format.js';
|
|
4
5
|
import { Markdown } from './markdown.js';
|
|
5
6
|
/**
|
|
@@ -10,16 +11,9 @@ import { Markdown } from './markdown.js';
|
|
|
10
11
|
export function AgentChat(props) {
|
|
11
12
|
const state = props.state ?? NO_SESSION;
|
|
12
13
|
const [draft, setDraft] = useState('');
|
|
13
|
-
const scroller = useRef(null);
|
|
14
|
-
const pinned = useRef(true);
|
|
15
14
|
const input = useRef(null);
|
|
16
15
|
const running = state?.status === 'running';
|
|
17
16
|
const now = useNow(running);
|
|
18
|
-
useLayoutEffect(() => {
|
|
19
|
-
const el = scroller.current;
|
|
20
|
-
if (el && pinned.current)
|
|
21
|
-
el.scrollTop = el.scrollHeight;
|
|
22
|
-
});
|
|
23
17
|
useLayoutEffect(() => {
|
|
24
18
|
const el = input.current;
|
|
25
19
|
if (!el)
|
|
@@ -33,7 +27,7 @@ export function AgentChat(props) {
|
|
|
33
27
|
const send = () => {
|
|
34
28
|
if (!draft.trim() || props.disabled)
|
|
35
29
|
return;
|
|
36
|
-
|
|
30
|
+
follow();
|
|
37
31
|
props.onSend(draft);
|
|
38
32
|
setDraft('');
|
|
39
33
|
};
|
|
@@ -63,6 +57,8 @@ export function AgentChat(props) {
|
|
|
63
57
|
}
|
|
64
58
|
});
|
|
65
59
|
flush(Number.MAX_SAFE_INTEGER);
|
|
60
|
+
// `items` is new on every render, so each render scrolls to the end while the user is there.
|
|
61
|
+
const { ref: scroller, onScroll, follow } = useFollowScroll(items, 80);
|
|
66
62
|
const placeholder = props.placeholder ??
|
|
67
63
|
(running
|
|
68
64
|
? state.canSteer
|
|
@@ -71,10 +67,7 @@ export function AgentChat(props) {
|
|
|
71
67
|
: `Ask ${agentName} to change something…`);
|
|
72
68
|
const usage = formatUsage(state.usage, state.costUsd);
|
|
73
69
|
const footer = props.renderFooter?.();
|
|
74
|
-
return (_jsxs("div", { className: rootClass, "data-theme": theme, "data-status": state.status, style: props.style, children: [props.header !== undefined ? (props.header) : (_jsxs("div", { className: "gc-header", children: [state.agent ? (_jsx("span", { className: "gc-avatar", "aria-hidden": "true", children: state.agent.slice(0, 2) })) : null, _jsx("b", { className: "gc-agent", children: state.agent || 'Agent' }), state.model ? _jsx("span", { className: "gc-model", children: state.model }) : null, running ? _jsx("span", { className: "gc-spin", role: "status", "aria-label": "Working" }) : null, _jsx("span", { className: "gc-spacer" }), state.sessionId ? _jsxs("span", { className: "gc-chip", children: ["session ", shortId(state.sessionId)] }) : null, usage ? _jsx("span", { className: "gc-chip", children: usage }) : null, props.headerExtras] })), _jsx("div", { className: "gc-scroll", ref: scroller, onScroll: (
|
|
75
|
-
const el = event.currentTarget;
|
|
76
|
-
pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 80;
|
|
77
|
-
}, children: _jsxs("div", { className: "gc-thread", role: "log", "aria-live": "polite", children: [state.turns.length === 0
|
|
70
|
+
return (_jsxs("div", { className: rootClass, "data-theme": theme, "data-status": state.status, style: props.style, children: [props.header !== undefined ? (props.header) : (_jsxs("div", { className: "gc-header", children: [state.agent ? (_jsx("span", { className: "gc-avatar", "aria-hidden": "true", children: state.agent.slice(0, 2) })) : null, _jsx("b", { className: "gc-agent", children: state.agent || 'Agent' }), state.model ? _jsx("span", { className: "gc-model", children: state.model }) : null, running ? _jsx("span", { className: "gc-spin", role: "status", "aria-label": "Working" }) : null, _jsx("span", { className: "gc-spacer" }), state.sessionId ? _jsxs("span", { className: "gc-chip", children: ["session ", shortId(state.sessionId)] }) : null, usage ? _jsx("span", { className: "gc-chip", children: usage }) : null, props.headerExtras] })), _jsx("div", { className: "gc-scroll", ref: scroller, onScroll: onScroll, children: _jsxs("div", { className: "gc-thread", role: "log", "aria-live": "polite", children: [state.turns.length === 0
|
|
78
71
|
? (props.emptyState ?? (_jsx("div", { className: "gc-empty", children: _jsxs("div", { className: "gc-empty-title", children: ["What should ", agentName, " work on?"] }) })))
|
|
79
72
|
: null, items, footer !== undefined && footer !== null && footer !== false ? (_jsx("div", { className: "gc-footer-slot", children: footer })) : null] }) }), _jsxs("div", { className: "gc-composer", children: [state.queued.length ? (_jsx("div", { className: "gc-queued", children: state.queued.map((prompt, i) => {
|
|
80
73
|
const shown = props.renderPrompt ? props.renderPrompt(prompt) : prompt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat.js","sourceRoot":"","sources":["../../src/react/agent-chat.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-chat.js","sourceRoot":"","sources":["../../src/react/agent-chat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Ref, type UIEventHandler } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Keep a scrolling log at its newest line: it follows while the user is at the bottom (within
|
|
4
|
+
* `slack` pixels) and stays put once they scroll up to read. It also re-pins when the box itself
|
|
5
|
+
* changes size, e.g. when a hidden panel is shown again or resized.
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* const { ref, onScroll } = useFollowScroll(lines);
|
|
9
|
+
* <div ref={ref} onScroll={onScroll} style={{ overflow: 'auto' }}>{...}</div>
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* `content` is compared by identity: the log scrolls after a render where it changed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useFollowScroll<T extends HTMLElement = HTMLDivElement>(content: unknown, slack?: number): {
|
|
15
|
+
ref: Ref<T>;
|
|
16
|
+
onScroll: UIEventHandler<T>;
|
|
17
|
+
follow: () => void;
|
|
18
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useCallback, useEffect, useLayoutEffect, useRef } from 'react';
|
|
2
|
+
// No layout effects on the server (React 18 warns about them there).
|
|
3
|
+
const useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;
|
|
4
|
+
/**
|
|
5
|
+
* Keep a scrolling log at its newest line: it follows while the user is at the bottom (within
|
|
6
|
+
* `slack` pixels) and stays put once they scroll up to read. It also re-pins when the box itself
|
|
7
|
+
* changes size, e.g. when a hidden panel is shown again or resized.
|
|
8
|
+
*
|
|
9
|
+
* ```tsx
|
|
10
|
+
* const { ref, onScroll } = useFollowScroll(lines);
|
|
11
|
+
* <div ref={ref} onScroll={onScroll} style={{ overflow: 'auto' }}>{...}</div>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* `content` is compared by identity: the log scrolls after a render where it changed.
|
|
15
|
+
*/
|
|
16
|
+
export function useFollowScroll(content, slack = 30) {
|
|
17
|
+
const box = useRef(null);
|
|
18
|
+
const observer = useRef(undefined);
|
|
19
|
+
const following = useRef(true);
|
|
20
|
+
const pin = useCallback(() => {
|
|
21
|
+
const el = box.current;
|
|
22
|
+
if (el && following.current)
|
|
23
|
+
el.scrollTop = el.scrollHeight;
|
|
24
|
+
}, []);
|
|
25
|
+
useIsomorphicLayoutEffect(pin, [content, pin]);
|
|
26
|
+
// A callback ref, so a box that mounts later or is replaced gets observed too.
|
|
27
|
+
const ref = useCallback((el) => {
|
|
28
|
+
box.current = el;
|
|
29
|
+
observer.current?.disconnect();
|
|
30
|
+
observer.current = undefined;
|
|
31
|
+
if (!el || typeof ResizeObserver === 'undefined')
|
|
32
|
+
return;
|
|
33
|
+
observer.current = new ResizeObserver(pin);
|
|
34
|
+
observer.current.observe(el);
|
|
35
|
+
}, [pin]);
|
|
36
|
+
const onScroll = useCallback(() => {
|
|
37
|
+
const el = box.current;
|
|
38
|
+
// A hidden box (no height) says nothing about where the user is.
|
|
39
|
+
if (el && el.clientHeight)
|
|
40
|
+
following.current = el.scrollTop + el.clientHeight >= el.scrollHeight - slack;
|
|
41
|
+
}, [slack]);
|
|
42
|
+
/** Follow again from now on, e.g. after the user sent a message. */
|
|
43
|
+
const follow = useCallback(() => {
|
|
44
|
+
following.current = true;
|
|
45
|
+
pin();
|
|
46
|
+
}, [pin]);
|
|
47
|
+
return { ref, onScroll, follow };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=follow-scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"follow-scroll.js","sourceRoot":"","sources":["../../src/react/follow-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAiC,MAAM,OAAO,CAAC;AAEvG,qEAAqE;AACrE,MAAM,yBAAyB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;AAE9F;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgB,EAChB,KAAK,GAAG,EAAE;IAEV,MAAM,GAAG,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAA6B,SAAS,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,IAAI,SAAS,CAAC,OAAO;YAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,yBAAyB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,+EAA+E;IAC/E,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,EAAY,EAAE,EAAE;QACf,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;QACjB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAC/B,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,EAAE,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QACzD,QAAQ,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IACF,MAAM,QAAQ,GAAsB,WAAW,CAAC,GAAG,EAAE;QACnD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,iEAAiE;QACjE,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY;YAAE,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3G,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,oEAAoE;IACpE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,GAAG,EAAE,CAAC;IACR,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACV,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A resize handle for a panel edge: drag it, or focus it and use the keys. No React here, so a
|
|
3
|
+
* page that builds its own DOM can use it as well as a component (through a ref).
|
|
4
|
+
*
|
|
5
|
+
* The handle owns no size. It asks `read()` for the current one and hands every change to
|
|
6
|
+
* `write()`, which applies it (usually a CSS variable) and stores it when `commit` is true: at
|
|
7
|
+
* the end of a drag and on every key press.
|
|
8
|
+
*/
|
|
9
|
+
export interface ResizeHandleOptions {
|
|
10
|
+
/** 'x' for a width (a vertical edge), 'y' for a height (a horizontal edge). */
|
|
11
|
+
axis: 'x' | 'y';
|
|
12
|
+
/**
|
|
13
|
+
* 1 when moving the pointer right (or down) makes the panel bigger, -1 when it makes it
|
|
14
|
+
* smaller: a panel docked on the right that grows to the left is -1. Read when a drag or key
|
|
15
|
+
* press starts, so it can follow the panel's current side. Default 1.
|
|
16
|
+
*/
|
|
17
|
+
direction?: () => number;
|
|
18
|
+
/** Smallest and largest size right now, e.g. from the window size. */
|
|
19
|
+
bounds: () => readonly [min: number, max: number];
|
|
20
|
+
/**
|
|
21
|
+
* The size shown now. It must return what `write` or `reset` just set, synchronously: keep
|
|
22
|
+
* the size in a variable or a ref, not only in React state that updates on the next render.
|
|
23
|
+
*/
|
|
24
|
+
read: () => number;
|
|
25
|
+
/** Apply `size` (already within bounds and rounded). `commit` is true when it should be kept. */
|
|
26
|
+
write: (size: number, commit: boolean) => void;
|
|
27
|
+
/** Back to the default size: double-click or Enter. Without it they do nothing. */
|
|
28
|
+
reset?: () => void;
|
|
29
|
+
/** Pixels per arrow key press; Shift doubles it. Default 24. */
|
|
30
|
+
step?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Element that gets `data-resizing="true"` and `data-resize-axis` during a drag, so the page
|
|
33
|
+
* can set the cursor everywhere and turn off pointer events on iframes. Default: document.body.
|
|
34
|
+
*/
|
|
35
|
+
root?: HTMLElement;
|
|
36
|
+
}
|
|
37
|
+
export interface ResizeHandle {
|
|
38
|
+
/**
|
|
39
|
+
* Update the ARIA range after the bounds or the size changed from outside (window resize,
|
|
40
|
+
* dock). It writes nothing: a saved size above a smaller window's maximum is kept, and shows
|
|
41
|
+
* clamped in `aria-valuenow`, so cap the shown size in CSS the same way (`min(...)`).
|
|
42
|
+
*/
|
|
43
|
+
sync(): void;
|
|
44
|
+
/** Remove the listeners. */
|
|
45
|
+
dispose(): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Make `handle` resize a panel. Give it `role="separator"`, `tabindex="0"` and an
|
|
49
|
+
* `aria-label`; this sets `aria-orientation` and `touch-action: none`, and keeps
|
|
50
|
+
* `aria-valuemin`, `aria-valuemax` and `aria-valuenow` current.
|
|
51
|
+
*
|
|
52
|
+
* Pointer: drag (the pointer is captured, so it may leave the handle). Keys: arrows by `step`
|
|
53
|
+
* (Shift: twice that), Home and End to the bounds, Escape during a drag to undo it, Enter (and
|
|
54
|
+
* double-click) to reset.
|
|
55
|
+
*/
|
|
56
|
+
export declare function installResizeHandle(handle: HTMLElement, options: ResizeHandleOptions): ResizeHandle;
|
|
57
|
+
/** A size kept in `localStorage`. Every method works, and does nothing, when storage is blocked. */
|
|
58
|
+
export interface StoredSize {
|
|
59
|
+
/** The saved size, clamped to the range given, or undefined when none (or nothing usable) is saved. */
|
|
60
|
+
get(): number | undefined;
|
|
61
|
+
set(size: number): void;
|
|
62
|
+
clear(): void;
|
|
63
|
+
}
|
|
64
|
+
/** `localStorage` under `key`, for `installResizeHandle`'s `write` and `reset`. */
|
|
65
|
+
export declare function storedSize(key: string, [min, max]: readonly [number, number]): StoredSize;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Make `handle` resize a panel. Give it `role="separator"`, `tabindex="0"` and an
|
|
3
|
+
* `aria-label`; this sets `aria-orientation` and `touch-action: none`, and keeps
|
|
4
|
+
* `aria-valuemin`, `aria-valuemax` and `aria-valuenow` current.
|
|
5
|
+
*
|
|
6
|
+
* Pointer: drag (the pointer is captured, so it may leave the handle). Keys: arrows by `step`
|
|
7
|
+
* (Shift: twice that), Home and End to the bounds, Escape during a drag to undo it, Enter (and
|
|
8
|
+
* double-click) to reset.
|
|
9
|
+
*/
|
|
10
|
+
export function installResizeHandle(handle, options) {
|
|
11
|
+
const root = () => options.root ?? handle.ownerDocument.body;
|
|
12
|
+
const direction = () => options.direction?.() ?? 1;
|
|
13
|
+
const step = options.step ?? 24;
|
|
14
|
+
// A window smaller than the minimum wins: the size never exceeds what fits, nor goes below 0.
|
|
15
|
+
const range = () => {
|
|
16
|
+
const [min, max] = options.bounds();
|
|
17
|
+
const top = Math.max(0, max);
|
|
18
|
+
return [Math.max(0, Math.min(min, top)), top];
|
|
19
|
+
};
|
|
20
|
+
const clamp = (size) => {
|
|
21
|
+
const [min, max] = range();
|
|
22
|
+
return Math.round(Math.max(min, Math.min(max, size)));
|
|
23
|
+
};
|
|
24
|
+
const sync = (now = options.read()) => {
|
|
25
|
+
const [min, max] = range();
|
|
26
|
+
handle.setAttribute('aria-valuemin', String(Math.round(min)));
|
|
27
|
+
handle.setAttribute('aria-valuemax', String(Math.round(max)));
|
|
28
|
+
handle.setAttribute('aria-valuenow', String(clamp(now)));
|
|
29
|
+
};
|
|
30
|
+
const write = (size, commit) => {
|
|
31
|
+
const next = clamp(size);
|
|
32
|
+
options.write(next, commit);
|
|
33
|
+
sync(next);
|
|
34
|
+
return next;
|
|
35
|
+
};
|
|
36
|
+
const along = (event) => (options.axis === 'x' ? event.clientX : event.clientY);
|
|
37
|
+
let drag;
|
|
38
|
+
const end = (commit = true) => {
|
|
39
|
+
if (!drag)
|
|
40
|
+
return;
|
|
41
|
+
const { last } = drag;
|
|
42
|
+
drag = undefined;
|
|
43
|
+
delete root().dataset.resizing;
|
|
44
|
+
delete root().dataset.resizeAxis;
|
|
45
|
+
if (commit)
|
|
46
|
+
write(last, true);
|
|
47
|
+
};
|
|
48
|
+
const onPointerDown = (event) => {
|
|
49
|
+
if (event.button !== 0 || drag)
|
|
50
|
+
return;
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
handle.focus({ preventScroll: true });
|
|
53
|
+
const size = clamp(options.read());
|
|
54
|
+
drag = { pointer: event.pointerId, start: along(event), size, direction: direction(), last: size };
|
|
55
|
+
handle.setPointerCapture?.(event.pointerId);
|
|
56
|
+
root().dataset.resizing = 'true';
|
|
57
|
+
root().dataset.resizeAxis = options.axis;
|
|
58
|
+
};
|
|
59
|
+
const onPointerMove = (event) => {
|
|
60
|
+
if (drag && event.pointerId === drag.pointer)
|
|
61
|
+
drag.last = write(drag.size + drag.direction * (along(event) - drag.start), false);
|
|
62
|
+
};
|
|
63
|
+
// Another finger lifting off the handle does not end this drag.
|
|
64
|
+
const onPointerEnd = (event) => {
|
|
65
|
+
if (drag && event.pointerId === drag.pointer)
|
|
66
|
+
end();
|
|
67
|
+
};
|
|
68
|
+
const onBlur = () => end();
|
|
69
|
+
const onDoubleClick = () => {
|
|
70
|
+
end(false);
|
|
71
|
+
options.reset?.();
|
|
72
|
+
sync();
|
|
73
|
+
};
|
|
74
|
+
const onKeyDown = (event) => {
|
|
75
|
+
const [min, max] = range();
|
|
76
|
+
const keys = options.axis === 'x' ? { less: 'ArrowLeft', more: 'ArrowRight' } : { less: 'ArrowUp', more: 'ArrowDown' };
|
|
77
|
+
if (event.key === 'Escape' && drag) {
|
|
78
|
+
const size = drag.size;
|
|
79
|
+
end(false);
|
|
80
|
+
write(size, true);
|
|
81
|
+
}
|
|
82
|
+
else if (event.key === 'Enter' && options.reset)
|
|
83
|
+
onDoubleClick();
|
|
84
|
+
else if (event.key === 'Home')
|
|
85
|
+
write(min, true);
|
|
86
|
+
else if (event.key === 'End')
|
|
87
|
+
write(max, true);
|
|
88
|
+
else if (event.key === keys.less || event.key === keys.more) {
|
|
89
|
+
const delta = (event.key === keys.more ? 1 : -1) * direction() * (event.shiftKey ? 2 * step : step);
|
|
90
|
+
write(clamp(options.read()) + delta, true);
|
|
91
|
+
}
|
|
92
|
+
else
|
|
93
|
+
return;
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
event.stopPropagation();
|
|
96
|
+
};
|
|
97
|
+
const view = handle.ownerDocument.defaultView;
|
|
98
|
+
// A width handle is a vertical bar; separators are horizontal unless they say otherwise.
|
|
99
|
+
handle.setAttribute('aria-orientation', options.axis === 'x' ? 'vertical' : 'horizontal');
|
|
100
|
+
// Otherwise a touch drag can turn into a page pan, which cancels the pointer.
|
|
101
|
+
handle.style.touchAction = 'none';
|
|
102
|
+
handle.addEventListener('pointerdown', onPointerDown);
|
|
103
|
+
handle.addEventListener('pointermove', onPointerMove);
|
|
104
|
+
handle.addEventListener('pointerup', onPointerEnd);
|
|
105
|
+
handle.addEventListener('pointercancel', onPointerEnd);
|
|
106
|
+
handle.addEventListener('lostpointercapture', onPointerEnd);
|
|
107
|
+
handle.addEventListener('dblclick', onDoubleClick);
|
|
108
|
+
handle.addEventListener('keydown', onKeyDown);
|
|
109
|
+
// Switching windows mid-drag may never deliver the pointerup.
|
|
110
|
+
view?.addEventListener('blur', onBlur);
|
|
111
|
+
sync();
|
|
112
|
+
return {
|
|
113
|
+
sync: () => sync(),
|
|
114
|
+
dispose() {
|
|
115
|
+
end();
|
|
116
|
+
handle.removeEventListener('pointerdown', onPointerDown);
|
|
117
|
+
handle.removeEventListener('pointermove', onPointerMove);
|
|
118
|
+
handle.removeEventListener('pointerup', onPointerEnd);
|
|
119
|
+
handle.removeEventListener('pointercancel', onPointerEnd);
|
|
120
|
+
handle.removeEventListener('lostpointercapture', onPointerEnd);
|
|
121
|
+
handle.removeEventListener('dblclick', onDoubleClick);
|
|
122
|
+
handle.removeEventListener('keydown', onKeyDown);
|
|
123
|
+
view?.removeEventListener('blur', onBlur);
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** `localStorage` under `key`, for `installResizeHandle`'s `write` and `reset`. */
|
|
128
|
+
export function storedSize(key, [min, max]) {
|
|
129
|
+
return {
|
|
130
|
+
get() {
|
|
131
|
+
try {
|
|
132
|
+
const raw = localStorage.getItem(key);
|
|
133
|
+
const value = raw === null ? NaN : Number(raw);
|
|
134
|
+
return Number.isFinite(value) && value > 0 ? Math.min(max, Math.max(min, value)) : undefined;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
set(size) {
|
|
141
|
+
try {
|
|
142
|
+
localStorage.setItem(key, String(size));
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// The size just isn't remembered.
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
clear() {
|
|
149
|
+
try {
|
|
150
|
+
localStorage.removeItem(key);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Nothing was remembered.
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=resize-handle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-handle.js","sourceRoot":"","sources":["../../src/react/resize-handle.ts"],"names":[],"mappings":"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"}
|
package/dist/react.d.ts
CHANGED
|
@@ -17,3 +17,6 @@ export { Markdown } from './react/markdown.js';
|
|
|
17
17
|
export { formatDuration, formatUsage, relativePath, shortId, toolLabel, toolSummary, turnFooter, } from './react/format.js';
|
|
18
18
|
export type { SessionEntry, SessionState, SessionTurn } from './agents/session.js';
|
|
19
19
|
export type { ApprovalDecision, ApprovalRequest } from './agents/types.js';
|
|
20
|
+
export { useFollowScroll } from './react/follow-scroll.js';
|
|
21
|
+
export { installResizeHandle, storedSize } from './react/resize-handle.js';
|
|
22
|
+
export type { ResizeHandle, ResizeHandleOptions, StoredSize } from './react/resize-handle.js';
|
package/dist/react.js
CHANGED
|
@@ -14,4 +14,6 @@
|
|
|
14
14
|
export { AgentChat } from './react/agent-chat.js';
|
|
15
15
|
export { Markdown } from './react/markdown.js';
|
|
16
16
|
export { formatDuration, formatUsage, relativePath, shortId, toolLabel, toolSummary, turnFooter, } from './react/format.js';
|
|
17
|
+
export { useFollowScroll } from './react/follow-scroll.js';
|
|
18
|
+
export { installResizeHandle, storedSize } from './react/resize-handle.js';
|
|
17
19
|
//# sourceMappingURL=react.js.map
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,GACX,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,GACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
|