genaicode 2.13.3 → 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 CHANGED
@@ -4,6 +4,27 @@
4
4
 
5
5
  ### Added
6
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
+
13
+ ### Fixed
14
+
15
+ - Anthropic structured outputs: the converter drops the schema keywords the API rejects with a
16
+ 400 (`minimum`, `maximum`, `exclusiveMinimum`, `exclusiveMaximum`, `multipleOf`, `maxItems`,
17
+ `uniqueItems`) and lowers `minItems` above 1 to 1, the largest value accepted. It walks only
18
+ real subschemas, so a property that happens to be named `maximum` is kept. Callers still
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`.
23
+
24
+ ## 2.13.3 — 2026-10-17
25
+
26
+ ### Added
27
+
7
28
  - The Anthropic provider honors `responseFormat: { type: 'json_schema' }`: it sends the schema as
8
29
  `output_config.format` (structured outputs), next to any `effort`, so the answer is decoded
9
30
  against the schema instead of only asked for in the prompt. Anthropic requires
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.
@@ -131,13 +131,43 @@ function forcedToolInstruction(choice) {
131
131
  return 'Respond by calling one of the provided tools.';
132
132
  return `Respond by calling the \`${choice.name}\` tool.`;
133
133
  }
134
- // Structured outputs reject an object that may grow keys, so close every one.
135
- function closeObjects(schema) {
136
- if (Array.isArray(schema))
137
- return schema.map(closeObjects);
138
- if (!schema || typeof schema !== 'object')
134
+ // Keywords structured outputs answer with a 400 (checked live, October 2026).
135
+ const UNSUPPORTED_KEYWORDS = new Set([
136
+ 'minimum',
137
+ 'maximum',
138
+ 'exclusiveMinimum',
139
+ 'exclusiveMaximum',
140
+ 'multipleOf',
141
+ 'maxItems',
142
+ 'uniqueItems',
143
+ ]);
144
+ const SCHEMA_MAPS = new Set(['properties', '$defs', 'definitions', 'patternProperties']);
145
+ const SCHEMA_LISTS = new Set(['anyOf', 'allOf', 'oneOf', 'prefixItems']);
146
+ // Rewrites one schema node for structured outputs, walking only real subschemas.
147
+ function toAnthropicSchema(schema) {
148
+ if (!schema || typeof schema !== 'object' || Array.isArray(schema))
139
149
  return schema;
140
- const node = Object.fromEntries(Object.entries(schema).map(([key, value]) => [key, closeObjects(value)]));
150
+ const node = {};
151
+ for (const [key, value] of Object.entries(schema)) {
152
+ if (UNSUPPORTED_KEYWORDS.has(key))
153
+ continue;
154
+ if (SCHEMA_MAPS.has(key) && value && typeof value === 'object' && !Array.isArray(value)) {
155
+ node[key] = Object.fromEntries(Object.entries(value).map(([name, sub]) => [name, toAnthropicSchema(sub)]));
156
+ }
157
+ else if (SCHEMA_LISTS.has(key) && Array.isArray(value)) {
158
+ node[key] = value.map(toAnthropicSchema);
159
+ }
160
+ else if (key === 'items' || key === 'not' || key === 'additionalProperties') {
161
+ node[key] = Array.isArray(value) ? value.map(toAnthropicSchema) : toAnthropicSchema(value);
162
+ }
163
+ else {
164
+ node[key] = value;
165
+ }
166
+ }
167
+ // Only 0 and 1 are accepted; 1 keeps "not empty".
168
+ if (typeof node.minItems === 'number' && node.minItems > 1)
169
+ node.minItems = 1;
170
+ // An object that may grow keys is rejected, so close every one.
141
171
  if (node.type === 'object' && node.additionalProperties === undefined)
142
172
  node.additionalProperties = false;
143
173
  return node;
@@ -146,7 +176,7 @@ function closeObjects(schema) {
146
176
  export function toAnthropicFormat(format) {
147
177
  if (format?.type !== 'json_schema')
148
178
  return undefined;
149
- return { type: 'json_schema', schema: closeObjects(format.schema) };
179
+ return { type: 'json_schema', schema: toAnthropicSchema(format.schema) };
150
180
  }
151
181
  export function toAnthropicRequest(request, defaults) {
152
182
  const model = request.model ?? defaults.model;
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-converter.js","sourceRoot":"","sources":["../../src/providers/anthropic-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic-converter.js","sourceRoot":"","sources":["../../src/providers/anthropic-converter.ts"],"names":[],"mappings":"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"}
@@ -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
- pinned.current = true;
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: (event) => {
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":";AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GAIT,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA4DzC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAE5B,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;IAC1D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC;IAE7C,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO;QAC5C,MAAM,EAAE,CAAC;QACT,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,KAA8C,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAC/E,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,EAAE,CAAC;QACT,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM;YAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxE,CAAC,CAAC;IAEF,kEAAkE;IAClE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAG,CAAC;YAChC,KAAK,CAAC,IAAI,CACR,cAA2B,SAAS,EAAE,YAAY,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,YACzF,MAAM,CAAC,IAAI,IADJ,IAAI,MAAM,CAAC,EAAE,EAAE,CAEnB,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAClC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,KAAK,CAAC,IAAI,CACR,KAAC,IAAI,IAEH,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,MAAM,EAAE,KAAK,CAAC,YAAY,EAC1B,QAAQ,EAAE,KAAK,CAAC,cAAc,IAAI,SAAS,IAPtC,IAAI,CAAC,EAAE,CAQZ,CACH,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CACR,cAAyB,SAAS,EAAC,eAAe,YAC/C,KAAK,IADE,IAAI,IAAI,CAAC,EAAE,EAAE,CAEjB,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC/B,6FAA6F;IAC7F,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEvE,MAAM,WAAW,GACf,KAAK,CAAC,WAAW;QACjB,CAAC,OAAO;YACN,CAAC,CAAC,KAAK,CAAC,QAAQ;gBACd,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,wBAAwB;YAC5B,CAAC,CAAC,OAAO,SAAS,uBAAuB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;IAEtC,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,gBAAc,KAAK,iBAAe,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,aACxF,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5B,KAAK,CAAC,MAAM,CACb,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,WAAW,aACvB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACb,eAAM,SAAS,EAAC,WAAW,iBAAa,MAAM,YAC3C,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB,CACR,CAAC,CAAC,CAAC,IAAI,EACR,YAAG,SAAS,EAAC,UAAU,YAAE,KAAK,CAAC,KAAK,IAAI,OAAO,GAAK,EACnD,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,UAAU,YAAE,KAAK,CAAC,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,EACpE,OAAO,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,gBAAY,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EACjF,eAAM,SAAS,EAAC,WAAW,GAAG,EAC7B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAM,SAAS,EAAC,SAAS,yBAAU,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAQ,CAAC,CAAC,CAAC,IAAI,EAC5F,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,SAAS,YAAE,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,EACvD,KAAK,CAAC,YAAY,IACf,CACP,EACD,cAAK,SAAS,EAAC,WAAW,EAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,YAC1D,eAAK,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,KAAK,eAAW,QAAQ,aACrD,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;4BACvB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CACnB,cAAK,SAAS,EAAC,UAAU,YACvB,eAAK,SAAS,EAAC,gBAAgB,6BAAc,SAAS,iBAAgB,GAClE,CACP,CAAC;4BACJ,CAAC,CAAC,IAAI,EACP,KAAK,EACL,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAC7D,cAAK,SAAS,EAAC,gBAAgB,YAAE,MAAM,GAAO,CAC/C,CAAC,CAAC,CAAC,IAAI,IACJ,GACF,EACN,eAAK,SAAS,EAAC,aAAa,aACzB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CACrB,cAAK,SAAS,EAAC,WAAW,YACvB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;4BACvE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAiB,KAAK,KAAX,CAAC,CAAkB,CAAC;wBAC1G,CAAC,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACR,eAAK,SAAS,EAAC,QAAQ,aACrB,mBACE,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,gBACb,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACjD,SAAS,EAAE,SAAS,GACpB,EACD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CACzB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,kBAAkB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,qBAEzE,CACV,CAAC,CAAC,CAAC,IAAI,EACR,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,mBAAmB,EAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,YACzG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GACjD,IACL,EACL,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAC,SAAS,YACrB,KAAK,CAAC,IAAI,IAAI,6CAA6C,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GAC5F,CACP,IACG,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAiB;IAC/B,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,SAAS,MAAM,CAAC,MAAe;IAC7B,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,EACZ,IAAI,EACJ,GAAG,EACH,GAAG,EACH,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,GAST;IACC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/D,OAAO,CACL,mBAAS,SAAS,EAAC,SAAS,aACzB,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,WAAW,YAAE,KAAK,GAAO,EAC1G,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CACrB,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAK,SAAS,EAAC,WAAW,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,iBAAc,MAAM,YAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB,EACN,cAAK,SAAS,EAAC,UAAU,YACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,KAAK,IAEJ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,IAPb,CAAC,CAQN,CACH,CAAC,GACE,IACF,CACP,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,CAAC,CAAC,CACT,eAAK,SAAS,EAAC,YAAY,aACzB,eAAM,SAAS,EAAC,SAAS,GAAG,OAAE,IAAI,CAAC,KAAK,iBAExC,+BAAkB,MAAM,wBAAI,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAQ,IACpE,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,aACpD,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,cAAK,IAAI,CAAC,KAAK,IACjC,CACP,IACO,CACX,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EACb,KAAK,EACL,KAAK,EACL,GAAG,EACH,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,GAST;IACC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,CAAC;QACpE,KAAK,MAAM;YACT,OAAO,CACL,mBAAS,SAAS,EAAC,SAAS,aAC1B,8BACE,eAAM,SAAS,EAAE,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,YACnF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,SAAS,GAAG,GACjE,EACP,eAAM,SAAS,EAAC,cAAc,YAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAQ,EAC5D,eAAM,SAAS,EAAC,aAAa,YAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAQ,IACjE,EACV,wBAAM,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,GAAO,IACrE,CACX,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,2CAAqB,EACpB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,yBAAkB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,IAA9B,IAAI,CAAkC,CAClD,CAAC,IACE,CACP,CAAC;QACJ,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GACR,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC/B,iFAAiF;gBACjF,MAAM,KAAK,GACT,KAAK,CAAC,QAAQ,KAAK,SAAS;oBAC1B,CAAC,CAAC,KAAK,CAAC,SAAS;wBACf,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,YAAY;oBAChB,CAAC,CAAC,KAAK,CAAC,QAAQ;wBACd,CAAC,CAAC,KAAK,CAAC,SAAS;4BACf,CAAC,CAAC,oBAAoB;4BACtB,CAAC,CAAC,UAAU;wBACd,CAAC,CAAC,gBAAgB,CAAC;gBACzB,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,KAAK,QAAI,IAAI,YACd,eAAM,SAAS,EAAC,SAAS,YAAE,OAAO,GAAQ,IACtC,CACP,CAAC;YACJ,CAAC;YACD,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aAC1B,0BACE,2BAAS,KAAK,GAAU,gBAAW,IAAI,SACnC,EACN,cAAK,SAAS,EAAC,SAAS,YAAE,OAAO,GAAO,EACvC,SAAS,CAAC,CAAC,CAAC,CACX,eAAK,SAAS,EAAC,YAAY,aACzB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,YAEpD,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,GAC9D,EACT,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,kBAAkB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,qBAE5F,IACL,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,YAAY,2CAA4B,CACxD,IACG,CACP,CAAC;QACJ,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YAC1E,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,iDAAiC,EAChC,KAAK,IACF,CACP,CAAC;QACJ,CAAC;QACD,KAAK,OAAO;YACV,OAAO,cAAK,SAAS,EAAC,UAAU,YAAE,KAAK,CAAC,OAAO,GAAO,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -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"}