mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
The gutter width formula was calibrated for the diff pane's 12px font,
so 3-digit numbers wrapped to two lines in the file preview's 14px
gutter. Parameterize on font size and add numberOfLines={1} as a guard.
25 lines
921 B
TypeScript
25 lines
921 B
TypeScript
import type { Theme } from "@/styles/theme";
|
|
|
|
/**
|
|
* Compute the pixel width for a line-number gutter based on the highest
|
|
* line number that will be displayed and the gutter font size. Minimum
|
|
* width accommodates 2 digits. The 0.62 factor approximates monospace
|
|
* digit width as a fraction of font size.
|
|
*/
|
|
export function lineNumberGutterWidth(maxLineNumber: number, fontSize: number): number {
|
|
const digits = Math.max(2, String(maxLineNumber).length);
|
|
const digitWidth = Math.ceil(fontSize * 0.62);
|
|
return digits * digitWidth + 12;
|
|
}
|
|
|
|
export function getCodeInsets(theme: Theme) {
|
|
let padding: number;
|
|
if (typeof theme.spacing?.[3] === "number") padding = theme.spacing[3];
|
|
else if (typeof theme.spacing?.[4] === "number") padding = theme.spacing[4];
|
|
else padding = 12;
|
|
const extraRight = theme.spacing[4];
|
|
const extraBottom = theme.spacing[3];
|
|
|
|
return { padding, extraRight, extraBottom };
|
|
}
|