@floegence/floeterm-terminal-web 0.9.0 → 0.10.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.
@@ -0,0 +1,63 @@
1
+ import type { TerminalScrollbarOptions } from '../types.js';
2
+ export declare const TERMINAL_SCROLLBAR_AUTO_HIDE_DELAY_MS = 1200;
3
+ export declare const TERMINAL_SCROLLBAR_FADE_DURATION_MS = 160;
4
+ export declare const TERMINAL_SCROLLBAR_HIT_WIDTH_PX = 12;
5
+ export interface TerminalScrollbarRuntime {
6
+ readonly rows: number;
7
+ getScrollbackLength(): number;
8
+ getViewportY(): number;
9
+ isAlternateScreen(): boolean;
10
+ scrollToLine(line: number): void;
11
+ scrollToTop(): void;
12
+ scrollToBottom(): void;
13
+ scrollLines(amount: number): void;
14
+ scrollPages(amount: number): void;
15
+ focusTerminal(): void;
16
+ }
17
+ export declare function normalizeTerminalScrollbarOptions(value: TerminalScrollbarOptions | undefined): Required<TerminalScrollbarOptions>;
18
+ export declare class TerminalScrollbarOverlay {
19
+ private readonly host;
20
+ private readonly runtime;
21
+ private readonly root;
22
+ private readonly thumb;
23
+ private readonly styleElement;
24
+ private options;
25
+ private fadeTimer;
26
+ private autoVisible;
27
+ private hovered;
28
+ private focused;
29
+ private dragging;
30
+ private dragPointerId;
31
+ private dragCaptureElement;
32
+ private dragOffsetPx;
33
+ private disposed;
34
+ private readonly coarseQuery;
35
+ private readonly fineQuery;
36
+ private readonly onPointerMediaChange;
37
+ constructor(host: HTMLElement, runtime: TerminalScrollbarRuntime, options?: TerminalScrollbarOptions, controlledElementId?: string);
38
+ setOptions(options: Partial<TerminalScrollbarOptions>): void;
39
+ setBackgroundColor(background: string | undefined): void;
40
+ reveal(): void;
41
+ sync(): void;
42
+ dispose(): void;
43
+ private effectiveVisibility;
44
+ private isPureCoarsePointer;
45
+ private updateVisibility;
46
+ private updateThumbAppearance;
47
+ private scheduleAutoHide;
48
+ private clearFadeTimer;
49
+ private readonly onFocus;
50
+ private readonly onBlur;
51
+ private readonly onKeyDown;
52
+ private readonly onPointerDown;
53
+ private readonly onPointerMove;
54
+ private readonly onPointerEnd;
55
+ private readonly onPointerLeave;
56
+ private readonly onLostPointerCapture;
57
+ private cancelInteraction;
58
+ private releaseScrollbarFocus;
59
+ private isWithinHitRail;
60
+ private scrollFromPointer;
61
+ private readonly onWheelActivity;
62
+ }
63
+ //# sourceMappingURL=TerminalScrollbarOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalScrollbarOverlay.d.ts","sourceRoot":"","sources":["../../src/core/TerminalScrollbarOverlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,493 @@
1
+ import { deriveContrastingThemeColor, formatThemeColor, parseThemeColor, } from '../utils/themeColor.js';
2
+ export const TERMINAL_SCROLLBAR_AUTO_HIDE_DELAY_MS = 1200;
3
+ export const TERMINAL_SCROLLBAR_FADE_DURATION_MS = 160;
4
+ export const TERMINAL_SCROLLBAR_HIT_WIDTH_PX = 12;
5
+ const DEFAULT_SCROLLBAR_OPTIONS = {
6
+ visibility: 'auto',
7
+ minThumbPx: 24,
8
+ ariaLabel: 'Terminal scrollback',
9
+ };
10
+ function normalizeVisibility(value) {
11
+ if (value === 'auto' || value === 'persistent' || value === 'hidden') {
12
+ return value;
13
+ }
14
+ throw new Error('Terminal scrollbar visibility must be auto, persistent, or hidden');
15
+ }
16
+ function normalizeMinThumbPx(value) {
17
+ if (typeof value !== 'number' || !Number.isFinite(value) || value < 16) {
18
+ throw new Error('Terminal scrollbar minThumbPx must be a finite number of at least 16');
19
+ }
20
+ return value;
21
+ }
22
+ function normalizeAriaLabel(value) {
23
+ if (typeof value !== 'string' || value.trim().length === 0) {
24
+ throw new Error('Terminal scrollbar ariaLabel must be a non-empty string');
25
+ }
26
+ return value.trim();
27
+ }
28
+ export function normalizeTerminalScrollbarOptions(value) {
29
+ if (value !== undefined) {
30
+ const prototype = typeof value === 'object' && value !== null
31
+ ? Object.getPrototypeOf(value)
32
+ : null;
33
+ if (typeof value !== 'object'
34
+ || value === null
35
+ || Array.isArray(value)
36
+ || (prototype !== Object.prototype && prototype !== null)) {
37
+ throw new Error('Terminal scrollbar options must be a plain object');
38
+ }
39
+ }
40
+ const source = value ?? {};
41
+ return {
42
+ visibility: normalizeVisibility(source.visibility ?? DEFAULT_SCROLLBAR_OPTIONS.visibility),
43
+ minThumbPx: normalizeMinThumbPx(source.minThumbPx ?? DEFAULT_SCROLLBAR_OPTIONS.minThumbPx),
44
+ ariaLabel: normalizeAriaLabel(source.ariaLabel ?? DEFAULT_SCROLLBAR_OPTIONS.ariaLabel),
45
+ };
46
+ }
47
+ function readTrackHeight(host) {
48
+ const clientHeight = Number(host.clientHeight);
49
+ if (Number.isFinite(clientHeight) && clientHeight >= 0) {
50
+ return clientHeight;
51
+ }
52
+ const rectHeight = Number(host.getBoundingClientRect().height);
53
+ return Number.isFinite(rectHeight) && rectHeight > 0 ? rectHeight : 0;
54
+ }
55
+ function clientYToTrackY(host, clientY) {
56
+ const rect = host.getBoundingClientRect();
57
+ const trackHeight = readTrackHeight(host);
58
+ if (trackHeight <= 0 || !Number.isFinite(rect.height) || rect.height <= 0)
59
+ return 0;
60
+ return (clientY - rect.top) * (trackHeight / rect.height);
61
+ }
62
+ function clamp(value, min, max) {
63
+ return Math.max(min, Math.min(max, value));
64
+ }
65
+ function cssPx(value) {
66
+ return `${Number.isInteger(value) ? value : Number(value.toFixed(3))}px`;
67
+ }
68
+ function scrollbarThumbColors(background) {
69
+ const parsed = parseThemeColor(background) ?? { r: 17, g: 24, b: 39 };
70
+ return {
71
+ idle: formatThemeColor(deriveContrastingThemeColor(parsed, 3)),
72
+ hover: formatThemeColor(deriveContrastingThemeColor(parsed, 4.5)),
73
+ active: formatThemeColor(deriveContrastingThemeColor(parsed, 7)),
74
+ };
75
+ }
76
+ export class TerminalScrollbarOverlay {
77
+ constructor(host, runtime, options, controlledElementId) {
78
+ this.host = host;
79
+ this.runtime = runtime;
80
+ this.fadeTimer = null;
81
+ this.autoVisible = false;
82
+ this.hovered = false;
83
+ this.focused = false;
84
+ this.dragging = false;
85
+ this.dragPointerId = null;
86
+ this.dragCaptureElement = null;
87
+ this.dragOffsetPx = 0;
88
+ this.disposed = false;
89
+ this.onPointerMediaChange = () => {
90
+ this.cancelInteraction(false);
91
+ this.clearFadeTimer();
92
+ this.hovered = false;
93
+ this.autoVisible = false;
94
+ this.sync();
95
+ };
96
+ this.onFocus = () => {
97
+ this.focused = true;
98
+ this.clearFadeTimer();
99
+ this.updateVisibility();
100
+ };
101
+ this.onBlur = () => {
102
+ this.focused = false;
103
+ this.scheduleAutoHide();
104
+ this.updateVisibility();
105
+ };
106
+ this.onKeyDown = (event) => {
107
+ let handled = true;
108
+ switch (event.key) {
109
+ case 'ArrowUp':
110
+ this.runtime.scrollLines(-1);
111
+ break;
112
+ case 'ArrowDown':
113
+ this.runtime.scrollLines(1);
114
+ break;
115
+ case 'PageUp':
116
+ this.runtime.scrollPages(-1);
117
+ break;
118
+ case 'PageDown':
119
+ this.runtime.scrollPages(1);
120
+ break;
121
+ case 'Home':
122
+ this.runtime.scrollToTop();
123
+ break;
124
+ case 'End':
125
+ this.runtime.scrollToBottom();
126
+ break;
127
+ default:
128
+ handled = false;
129
+ }
130
+ if (!handled)
131
+ return;
132
+ event.preventDefault();
133
+ event.stopPropagation();
134
+ this.reveal();
135
+ this.sync();
136
+ };
137
+ this.onPointerDown = (event) => {
138
+ if (event.pointerType === 'touch'
139
+ || this.isPureCoarsePointer()
140
+ || this.root.hidden
141
+ || !this.isWithinHitRail(event.clientX, event.clientY))
142
+ return;
143
+ event.preventDefault();
144
+ event.stopPropagation();
145
+ this.dragging = true;
146
+ this.dragPointerId = event.pointerId;
147
+ const thumbTop = Number.parseFloat(this.thumb.style.transform.replace(/[^\d.-]/g, '')) || 0;
148
+ const thumbHeight = Number.parseFloat(this.thumb.style.height) || 0;
149
+ const localY = clientYToTrackY(this.host, event.clientY);
150
+ if (localY >= thumbTop && localY <= thumbTop + thumbHeight) {
151
+ this.dragOffsetPx = localY - thumbTop;
152
+ }
153
+ else {
154
+ this.dragOffsetPx = thumbHeight / 2;
155
+ this.scrollFromPointer(localY);
156
+ }
157
+ const captureElement = event.target instanceof Element ? event.target : this.host;
158
+ try {
159
+ captureElement.setPointerCapture?.(event.pointerId);
160
+ this.dragCaptureElement = captureElement;
161
+ }
162
+ catch {
163
+ // Synthetic pointer events do not always have an active browser pointer.
164
+ this.dragCaptureElement = null;
165
+ }
166
+ this.reveal();
167
+ };
168
+ this.onPointerMove = (event) => {
169
+ if (event.pointerType === 'touch' || this.isPureCoarsePointer())
170
+ return;
171
+ if (!this.dragging) {
172
+ const hovered = !this.root.hidden && this.isWithinHitRail(event.clientX, event.clientY);
173
+ if (hovered === this.hovered)
174
+ return;
175
+ this.hovered = hovered;
176
+ if (hovered) {
177
+ this.clearFadeTimer();
178
+ }
179
+ else {
180
+ this.scheduleAutoHide();
181
+ }
182
+ this.updateVisibility();
183
+ return;
184
+ }
185
+ if (event.pointerId !== this.dragPointerId)
186
+ return;
187
+ event.preventDefault();
188
+ event.stopPropagation();
189
+ const localY = clientYToTrackY(this.host, event.clientY);
190
+ this.scrollFromPointer(localY);
191
+ };
192
+ this.onPointerEnd = (event) => {
193
+ if (!this.dragging || (this.dragPointerId !== null && event.pointerId !== this.dragPointerId))
194
+ return;
195
+ event.preventDefault();
196
+ event.stopPropagation();
197
+ const hovered = event.type === 'pointerup'
198
+ && event.pointerType !== 'touch'
199
+ && !this.isPureCoarsePointer()
200
+ && !this.root.hidden
201
+ && this.isWithinHitRail(event.clientX, event.clientY);
202
+ this.cancelInteraction(true);
203
+ this.hovered = hovered;
204
+ this.scheduleAutoHide();
205
+ this.updateVisibility();
206
+ };
207
+ this.onPointerLeave = () => {
208
+ if (this.dragging || !this.hovered)
209
+ return;
210
+ this.hovered = false;
211
+ this.scheduleAutoHide();
212
+ this.updateVisibility();
213
+ };
214
+ this.onLostPointerCapture = (event) => {
215
+ if (!this.dragging || (this.dragPointerId !== null && event.pointerId !== this.dragPointerId))
216
+ return;
217
+ this.cancelInteraction(true);
218
+ this.hovered = false;
219
+ this.scheduleAutoHide();
220
+ this.updateVisibility();
221
+ };
222
+ this.onWheelActivity = () => {
223
+ if (this.root.hidden)
224
+ return;
225
+ this.reveal();
226
+ };
227
+ this.options = normalizeTerminalScrollbarOptions(options);
228
+ this.root = host.ownerDocument.createElement('div');
229
+ this.root.dataset.floetermScrollbar = '';
230
+ this.root.dataset.visible = 'false';
231
+ this.root.setAttribute('role', 'scrollbar');
232
+ this.root.setAttribute('aria-orientation', 'vertical');
233
+ this.root.setAttribute('aria-valuemin', '0');
234
+ this.root.setAttribute('aria-label', this.options.ariaLabel);
235
+ if (controlledElementId)
236
+ this.root.setAttribute('aria-controls', controlledElementId);
237
+ this.root.tabIndex = -1;
238
+ Object.assign(this.root.style, {
239
+ position: 'absolute',
240
+ top: '0',
241
+ right: '0',
242
+ bottom: '0',
243
+ width: `${TERMINAL_SCROLLBAR_HIT_WIDTH_PX}px`,
244
+ zIndex: '6',
245
+ outline: 'none',
246
+ pointerEvents: 'none',
247
+ opacity: '0',
248
+ transition: `opacity ${TERMINAL_SCROLLBAR_FADE_DURATION_MS}ms ease`,
249
+ });
250
+ this.thumb = host.ownerDocument.createElement('div');
251
+ this.thumb.dataset.floetermScrollbarThumb = '';
252
+ Object.assign(this.thumb.style, {
253
+ position: 'absolute',
254
+ top: '0',
255
+ right: '3px',
256
+ width: '5px',
257
+ minHeight: '0',
258
+ borderRadius: '3px',
259
+ background: 'var(--floeterm-scrollbar-thumb-idle, rgb(209, 213, 219))',
260
+ transform: 'translateY(0px)',
261
+ willChange: 'transform',
262
+ });
263
+ this.root.appendChild(this.thumb);
264
+ this.styleElement = host.ownerDocument.createElement('style');
265
+ this.styleElement.dataset.floetermScrollbarStyle = '';
266
+ this.styleElement.textContent = `
267
+ [data-floeterm-scrollbar]:focus-visible {
268
+ outline: 2px solid var(--floeterm-scrollbar-thumb-active, CanvasText) !important;
269
+ outline-offset: -2px;
270
+ }
271
+ [data-floeterm-scrollbar][data-hovered="true"] [data-floeterm-scrollbar-thumb],
272
+ [data-floeterm-scrollbar]:focus-visible [data-floeterm-scrollbar-thumb] {
273
+ background: var(--floeterm-scrollbar-thumb-hover, rgb(156, 163, 175));
274
+ }
275
+ [data-floeterm-scrollbar][data-dragging="true"] [data-floeterm-scrollbar-thumb] {
276
+ background: var(--floeterm-scrollbar-thumb-active, rgb(107, 114, 128));
277
+ }
278
+ @media (prefers-reduced-motion: reduce) {
279
+ [data-floeterm-scrollbar] { transition: none !important; }
280
+ }
281
+ @media (forced-colors: active) {
282
+ [data-floeterm-scrollbar] {
283
+ forced-color-adjust: auto;
284
+ outline-color: Highlight !important;
285
+ }
286
+ [data-floeterm-scrollbar-thumb] {
287
+ background: Highlight !important;
288
+ border: 1px solid ButtonText;
289
+ }
290
+ }`;
291
+ this.host.appendChild(this.styleElement);
292
+ this.host.appendChild(this.root);
293
+ const view = host.ownerDocument.defaultView;
294
+ this.coarseQuery = view?.matchMedia?.('(any-pointer: coarse)') ?? null;
295
+ this.fineQuery = view?.matchMedia?.('(any-pointer: fine)') ?? null;
296
+ this.coarseQuery?.addEventListener?.('change', this.onPointerMediaChange);
297
+ this.fineQuery?.addEventListener?.('change', this.onPointerMediaChange);
298
+ this.root.addEventListener('focus', this.onFocus);
299
+ this.root.addEventListener('blur', this.onBlur);
300
+ this.root.addEventListener('keydown', this.onKeyDown);
301
+ this.host.addEventListener('pointerdown', this.onPointerDown, true);
302
+ this.host.addEventListener('pointermove', this.onPointerMove, true);
303
+ this.host.addEventListener('pointerleave', this.onPointerLeave);
304
+ this.host.addEventListener('pointerup', this.onPointerEnd, true);
305
+ this.host.addEventListener('pointercancel', this.onPointerEnd, true);
306
+ this.host.addEventListener('lostpointercapture', this.onLostPointerCapture, true);
307
+ this.host.addEventListener('wheel', this.onWheelActivity, true);
308
+ this.sync();
309
+ }
310
+ setOptions(options) {
311
+ normalizeTerminalScrollbarOptions(options);
312
+ const next = normalizeTerminalScrollbarOptions({ ...this.options, ...options });
313
+ const visibilityChanged = next.visibility !== this.options.visibility;
314
+ this.options = next;
315
+ this.root.setAttribute('aria-label', next.ariaLabel);
316
+ if (visibilityChanged) {
317
+ this.cancelInteraction(false);
318
+ this.clearFadeTimer();
319
+ this.hovered = false;
320
+ this.autoVisible = false;
321
+ if (next.visibility === 'hidden')
322
+ this.releaseScrollbarFocus();
323
+ }
324
+ this.sync();
325
+ }
326
+ setBackgroundColor(background) {
327
+ const colors = scrollbarThumbColors(background);
328
+ this.root.style.setProperty('--floeterm-scrollbar-thumb-idle', colors.idle);
329
+ this.root.style.setProperty('--floeterm-scrollbar-thumb-hover', colors.hover);
330
+ this.root.style.setProperty('--floeterm-scrollbar-thumb-active', colors.active);
331
+ this.updateThumbAppearance();
332
+ }
333
+ reveal() {
334
+ if (this.disposed || this.effectiveVisibility() === 'hidden')
335
+ return;
336
+ this.autoVisible = true;
337
+ this.updateVisibility();
338
+ this.scheduleAutoHide();
339
+ }
340
+ sync() {
341
+ if (this.disposed)
342
+ return;
343
+ const scrollbackLength = Math.max(0, Math.floor(Number(this.runtime.getScrollbackLength()) || 0));
344
+ const alternate = this.runtime.isAlternateScreen();
345
+ const trackHeight = Math.max(0, readTrackHeight(this.host));
346
+ const unavailable = scrollbackLength === 0
347
+ || trackHeight === 0
348
+ || alternate
349
+ || this.effectiveVisibility() === 'hidden';
350
+ if (unavailable) {
351
+ this.cancelInteraction(false);
352
+ this.clearFadeTimer();
353
+ this.hovered = false;
354
+ this.autoVisible = false;
355
+ this.releaseScrollbarFocus();
356
+ this.thumb.style.height = '0px';
357
+ this.thumb.style.transform = 'translateY(0px)';
358
+ this.root.hidden = true;
359
+ this.root.tabIndex = -1;
360
+ this.root.setAttribute('aria-hidden', 'true');
361
+ this.root.dataset.visible = 'false';
362
+ this.root.dataset.hovered = 'false';
363
+ this.root.style.opacity = '0';
364
+ return;
365
+ }
366
+ const rows = Math.max(1, Math.floor(Number(this.runtime.rows) || 1));
367
+ const viewportY = clamp(Number(this.runtime.getViewportY()) || 0, 0, scrollbackLength);
368
+ const naturalValue = scrollbackLength - viewportY;
369
+ const proportionalHeight = trackHeight * (rows / (rows + scrollbackLength));
370
+ const thumbHeight = Math.min(trackHeight, Math.max(16, this.options.minThumbPx, proportionalHeight));
371
+ const travel = Math.max(0, trackHeight - thumbHeight);
372
+ const top = scrollbackLength === 0 ? 0 : travel * (naturalValue / scrollbackLength);
373
+ this.root.setAttribute('aria-valuemax', String(scrollbackLength));
374
+ this.root.setAttribute('aria-valuenow', String(Math.round(naturalValue)));
375
+ this.thumb.style.height = cssPx(thumbHeight);
376
+ this.thumb.style.transform = `translateY(${cssPx(top)})`;
377
+ this.root.hidden = false;
378
+ this.root.tabIndex = 0;
379
+ this.root.removeAttribute('aria-hidden');
380
+ this.updateVisibility();
381
+ }
382
+ dispose() {
383
+ if (this.disposed)
384
+ return;
385
+ this.disposed = true;
386
+ this.cancelInteraction(false);
387
+ this.clearFadeTimer();
388
+ this.coarseQuery?.removeEventListener?.('change', this.onPointerMediaChange);
389
+ this.fineQuery?.removeEventListener?.('change', this.onPointerMediaChange);
390
+ this.root.removeEventListener('focus', this.onFocus);
391
+ this.root.removeEventListener('blur', this.onBlur);
392
+ this.root.removeEventListener('keydown', this.onKeyDown);
393
+ this.host.removeEventListener('pointerdown', this.onPointerDown, true);
394
+ this.host.removeEventListener('pointermove', this.onPointerMove, true);
395
+ this.host.removeEventListener('pointerleave', this.onPointerLeave);
396
+ this.host.removeEventListener('pointerup', this.onPointerEnd, true);
397
+ this.host.removeEventListener('pointercancel', this.onPointerEnd, true);
398
+ this.host.removeEventListener('lostpointercapture', this.onLostPointerCapture, true);
399
+ this.host.removeEventListener('wheel', this.onWheelActivity, true);
400
+ this.root.remove();
401
+ this.styleElement.remove();
402
+ }
403
+ effectiveVisibility() {
404
+ if (this.options.visibility === 'persistent' && this.isPureCoarsePointer()) {
405
+ return 'auto';
406
+ }
407
+ return this.options.visibility;
408
+ }
409
+ isPureCoarsePointer() {
410
+ return Boolean(this.coarseQuery?.matches && !this.fineQuery?.matches);
411
+ }
412
+ updateVisibility() {
413
+ if (this.root.hidden)
414
+ return;
415
+ const persistent = this.effectiveVisibility() === 'persistent';
416
+ const visible = persistent || this.autoVisible || this.hovered || this.focused || this.dragging;
417
+ this.root.dataset.visible = String(visible);
418
+ this.root.dataset.hovered = String(this.hovered);
419
+ this.root.dataset.dragging = String(this.dragging);
420
+ this.root.style.opacity = visible ? '1' : '0';
421
+ this.updateThumbAppearance();
422
+ }
423
+ updateThumbAppearance() {
424
+ const variable = this.dragging
425
+ ? '--floeterm-scrollbar-thumb-active'
426
+ : this.hovered || this.focused
427
+ ? '--floeterm-scrollbar-thumb-hover'
428
+ : '--floeterm-scrollbar-thumb-idle';
429
+ this.thumb.style.background = `var(${variable}, rgb(209, 213, 219))`;
430
+ }
431
+ scheduleAutoHide() {
432
+ this.clearFadeTimer();
433
+ if (this.effectiveVisibility() !== 'auto' || this.hovered || this.focused || this.dragging)
434
+ return;
435
+ this.fadeTimer = setTimeout(() => {
436
+ this.fadeTimer = null;
437
+ this.autoVisible = false;
438
+ this.updateVisibility();
439
+ }, TERMINAL_SCROLLBAR_AUTO_HIDE_DELAY_MS);
440
+ }
441
+ clearFadeTimer() {
442
+ if (this.fadeTimer === null)
443
+ return;
444
+ clearTimeout(this.fadeTimer);
445
+ this.fadeTimer = null;
446
+ }
447
+ cancelInteraction(restoreFocus) {
448
+ const pointerId = this.dragPointerId;
449
+ const captureElement = this.dragCaptureElement;
450
+ this.dragging = false;
451
+ this.dragPointerId = null;
452
+ this.dragCaptureElement = null;
453
+ this.dragOffsetPx = 0;
454
+ this.root.dataset.dragging = 'false';
455
+ if (pointerId !== null) {
456
+ try {
457
+ if (captureElement?.hasPointerCapture?.(pointerId)) {
458
+ captureElement.releasePointerCapture?.(pointerId);
459
+ }
460
+ }
461
+ catch {
462
+ // The browser may already have released capture during lifecycle changes.
463
+ }
464
+ }
465
+ if (restoreFocus)
466
+ this.runtime.focusTerminal();
467
+ }
468
+ releaseScrollbarFocus() {
469
+ if (this.host.ownerDocument.activeElement === this.root) {
470
+ this.root.blur();
471
+ this.runtime.focusTerminal();
472
+ }
473
+ this.focused = false;
474
+ }
475
+ isWithinHitRail(clientX, clientY) {
476
+ const rect = this.host.getBoundingClientRect();
477
+ return clientX >= rect.right - TERMINAL_SCROLLBAR_HIT_WIDTH_PX
478
+ && clientX <= rect.right
479
+ && clientY >= rect.top
480
+ && clientY <= rect.bottom;
481
+ }
482
+ scrollFromPointer(localY) {
483
+ const max = Math.max(0, Math.floor(Number(this.runtime.getScrollbackLength()) || 0));
484
+ const trackHeight = Math.max(0, readTrackHeight(this.host));
485
+ const thumbHeight = Number.parseFloat(this.thumb.style.height) || 0;
486
+ const travel = Math.max(0, trackHeight - thumbHeight);
487
+ const thumbTop = clamp(localY - this.dragOffsetPx, 0, travel);
488
+ const naturalValue = travel === 0 ? max : Math.round((thumbTop / travel) * max);
489
+ this.runtime.scrollToLine(max - naturalValue);
490
+ this.sync();
491
+ }
492
+ }
493
+ //# sourceMappingURL=TerminalScrollbarOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalScrollbarOverlay.js","sourceRoot":"","sources":["../../src/core/TerminalScrollbarOverlay.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,7 +19,7 @@ export type { TerminalInitializationSchedulerSnapshot } from './internal/Termina
19
19
  export type { TerminalOutputPipelineCatchUpReason, TerminalOutputPipelineCatchUpRequest, TerminalOutputPipelineChunk, TerminalOutputPipelineDrainState, TerminalOutputPipelineHandle, TerminalOutputPipelineOptions, TerminalOutputPipelinePolicy, TerminalOutputPipelineResetOptions, TerminalOutputPipelineScheduler, TerminalOutputPipelineStats, } from './core/TerminalOutputPipeline.js';
20
20
  export type { AtomicPagedTerminalOutputCoordinatorHandle, PagedTerminalCompleteAttachOptions, PagedTerminalHistoryPage, PagedTerminalHistoryRequest, PagedTerminalHistoryTruncationReason, PagedTerminalOutputFailure, PagedTerminalOutputFailureCode, PagedTerminalOutputCoordinatorHandle, PagedTerminalOutputCoordinatorOptions, PagedTerminalOutputPolicy, PagedTerminalOutputScheduler, PagedTerminalOutputSnapshot, PagedTerminalOutputState, PagedTerminalPreparedHistoryOutcome, PagedTerminalPreparedHistoryStatus, PreparedPagedTerminalHistory, PreparePagedTerminalHistoryOptions, } from './core/PagedTerminalOutputCoordinator.js';
21
21
  export type { TerminalFabricBackend, TerminalFabricDiagnostics, TerminalFabricRenderPath, TerminalFabricStats, } from './fabric/types.js';
22
- export type { Logger, TerminalBufferCellPosition, TerminalBufferRange, TerminalClipboardConfig, TerminalAppearance, TerminalConfig, TerminalCopySelectionResult, TerminalCopySelectionSource, TerminalResponsiveConfig, TerminalRuntimeLineSnapshot, TerminalRestorableSnapshot, TerminalRestorableSnapshotOptions, TerminalResourceEstimate, TerminalResourcePreloadOptions, TerminalEventHandlers, TerminalFocusOptions, TerminalInitializationOptions, TerminalInitializationPriority, TerminalInstanceController, TerminalInstanceListener, TerminalInstanceMutableOptions, TerminalInstanceOptions, TerminalInstanceScheduler, TerminalInstanceSnapshot, TerminalLoadingState, TerminalID, TerminalSessionInfo, TerminalForegroundCommandInfo, TerminalForegroundCommandPhase, TerminalForegroundCommandUpdateEvent, TerminalOutputActivityInfo, TerminalOutputActivityPhase, TerminalOutputActivityUpdateEvent, TerminalDataChunk, TerminalDataEvent, TerminalHistoryPage, TerminalAtomicAttachResult, TerminalAtomicTransport, TerminalNameUpdateEvent, TerminalTransport, TerminalEventSource, TerminalManagerOptions, TerminalManagerReturn, TerminalManagerActions, TerminalManagerAppearance, TerminalManagerState, TerminalError, TerminalLink, TerminalLinkProvider, TerminalSelectionSnapshot, TerminalTouchScrollRuntime, TerminalVisualSuspendHandle, TerminalVisualSuspendOptions, TerminalVisualSuspendReason, TerminalThemeName, TerminalThemeAppearance, TerminalThemeDefinition, TerminalThemeColors } from './types.js';
22
+ export type { Logger, TerminalBufferCellPosition, TerminalBufferRange, TerminalClipboardConfig, TerminalAppearance, TerminalConfig, TerminalCopySelectionResult, TerminalCopySelectionSource, TerminalResponsiveConfig, TerminalScrollbarOptions, TerminalScrollbarVisibility, TerminalRuntimeLineSnapshot, TerminalRestorableSnapshot, TerminalRestorableSnapshotOptions, TerminalResourceEstimate, TerminalResourcePreloadOptions, TerminalEventHandlers, TerminalFocusOptions, TerminalInitializationOptions, TerminalInitializationPriority, TerminalInstanceController, TerminalInstanceListener, TerminalInstanceMutableOptions, TerminalInstanceOptions, TerminalInstanceScheduler, TerminalInstanceSnapshot, TerminalLoadingState, TerminalID, TerminalSessionInfo, TerminalForegroundCommandInfo, TerminalForegroundCommandPhase, TerminalForegroundCommandUpdateEvent, TerminalOutputActivityInfo, TerminalOutputActivityPhase, TerminalOutputActivityUpdateEvent, TerminalDataChunk, TerminalDataEvent, TerminalHistoryPage, TerminalAtomicAttachResult, TerminalAtomicTransport, TerminalNameUpdateEvent, TerminalTransport, TerminalEventSource, TerminalManagerOptions, TerminalManagerReturn, TerminalManagerActions, TerminalManagerAppearance, TerminalManagerState, TerminalError, TerminalLink, TerminalLinkProvider, TerminalSelectionSnapshot, TerminalTouchScrollRuntime, TerminalVisualSuspendHandle, TerminalVisualSuspendOptions, TerminalVisualSuspendReason, TerminalThemeName, TerminalThemeAppearance, TerminalThemeDefinition, TerminalThemeColors } from './types.js';
23
23
  export { getThemeColors, getDefaultTerminalConfig, getTerminalThemeDefinition, isTerminalThemeName, normalizeTerminalThemeName, TERMINAL_THEME_DEFINITIONS, TERMINAL_THEME_NAMES, } from './utils/config.js';
24
24
  export { filterXtermAutoResponses } from './utils/xtermAutoResponseFilter.js';
25
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0CAA0C,GAC3C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACL,oCAAoC,EACpC,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,6CAA6C,EAAE,MAAM,iDAAiD,CAAC;AAChH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AA8G3F,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0CAA0C,GAC3C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACL,oCAAoC,EACpC,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,6CAA6C,EAAE,MAAM,iDAAiD,CAAC;AAChH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAgH3F,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,10 @@
1
+ type pinned_ghostty_scrollbar_terminal = Record<string, unknown>;
2
+ type pinned_ghostty_renderer = {
3
+ render?: (...args: unknown[]) => unknown;
4
+ __floetermScrollbarSuppressed?: boolean;
5
+ };
6
+ export declare function suppressPinnedGhosttyScrollbarBeforeOpen(terminal: pinned_ghostty_scrollbar_terminal): void;
7
+ export declare function suppressPinnedGhosttyScrollbarRenderer(renderer: pinned_ghostty_renderer): void;
8
+ export declare function installPinnedGhosttyAlternateScreenProjection(terminal: pinned_ghostty_scrollbar_terminal): void;
9
+ export {};
10
+ //# sourceMappingURL=GhosttyScrollbarCompat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GhosttyScrollbarCompat.d.ts","sourceRoot":"","sources":["../../src/internal/GhosttyScrollbarCompat.ts"],"names":[],"mappings":"AAEA,KAAK,iCAAiC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjE,KAAK,uBAAuB,GAAG;IAC7B,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAgDF,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,iCAAiC,GAC1C,IAAI,CA2BN;AAED,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAa9F;AAED,wBAAgB,6CAA6C,CAC3D,QAAQ,EAAE,iCAAiC,GAC1C,IAAI,CAWN"}