@tooee/renderers 0.1.7 → 0.1.9

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.
@@ -1,6 +1,7 @@
1
1
  import { type ReactNode, type RefObject } from "react";
2
2
  import type { RowDocumentRenderable } from "./RowDocumentRenderable.js";
3
3
  import "./row-document.js";
4
+ import "./text-table.js";
4
5
  interface MarkdownViewProps {
5
6
  content: string;
6
7
  showLineNumbers?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../src/MarkdownView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKzE,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,4BAA4B,CAAA;AACnH,OAAO,mBAAmB,CAAA;AAE1B,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;CACjD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,eAAsB,EACtB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,MAAM,GACP,EAAE,iBAAiB,aA+CnB"}
1
+ {"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../src/MarkdownView.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIlF,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,4BAA4B,CAAA;AACnH,OAAO,mBAAmB,CAAA;AAC1B,OAAO,iBAAiB,CAAA;AAExB,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;CACjD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,eAAsB,EACtB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,MAAM,GACP,EAAE,iBAAiB,aA+CnB"}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@opentui/react/jsx-runtime";
2
2
  import { marked } from "marked";
3
- import { useEffect, useRef } from "react";
4
- import { useTerminalDimensions } from "@opentui/react";
3
+ import { useEffect, useMemo, useRef } from "react";
5
4
  import { useTheme } from "@tooee/themes";
6
- import { computeColumnWidths, buildBorderLine, buildDataLine, isNumeric } from "./Table.js";
5
+ import { bold as boldChunk } from "@opentui/core";
7
6
  import "./row-document.js";
7
+ import "./text-table.js";
8
8
  export function MarkdownView({ content, showLineNumbers = true, activeBlock, selectedBlocks, matchingBlocks, currentMatchBlock, toggledBlocks, docRef, }) {
9
9
  const { theme, syntax } = useTheme();
10
10
  const internalRef = useRef(null);
@@ -138,27 +138,16 @@ function ListItemRenderer({ item, ordered, index, theme, }) {
138
138
  }
139
139
  function MarkdownTableRenderer({ token }) {
140
140
  const { theme } = useTheme();
141
- const { width: terminalWidth } = useTerminalDimensions();
142
- const headers = token.header.map((cell) => getPlainText(cell.tokens).trim());
143
- const rowData = token.rows.map((row) => row.map((cell) => getPlainText(cell.tokens)));
144
- // Account for gutter + margins when computing available width
145
- const effectiveMaxWidth = terminalWidth - 4;
146
- const colWidths = computeColumnWidths(headers, rowData, effectiveMaxWidth, {
147
- minColumnWidth: 4,
148
- maxColumnWidth: 50,
149
- sampleSize: 100,
150
- });
151
- const alignments = headers.map((_header, colIdx) => {
152
- const sampleValues = rowData.slice(0, 10).map((row) => row[colIdx] ?? "");
153
- const numericCount = sampleValues.filter(isNumeric).length;
154
- return numericCount > sampleValues.length / 2;
155
- });
156
- const topBorder = buildBorderLine(colWidths, "\u250c", "\u252c", "\u2510", "\u2500");
157
- const headerSep = buildBorderLine(colWidths, "\u251c", "\u253c", "\u2524", "\u2500");
158
- const bottomBorder = buildBorderLine(colWidths, "\u2514", "\u2534", "\u2518", "\u2500");
159
- const headerLine = buildDataLine(headers, colWidths, alignments);
160
- const dataLines = rowData.map((row) => buildDataLine(row, colWidths, alignments));
161
- return (_jsxs("box", { style: { marginLeft: 1, marginRight: 1, marginBottom: 1, flexDirection: "column" }, children: [_jsx("text", { content: topBorder, style: { fg: theme.border } }), _jsx("text", { content: headerLine, style: { fg: theme.primary } }), _jsx("text", { content: headerSep, style: { fg: theme.border } }), dataLines.map((line, i) => (_jsx("text", { content: line, style: { fg: theme.text } }, i))), _jsx("text", { content: bottomBorder, style: { fg: theme.border } })] }));
141
+ const content = useMemo(() => {
142
+ const headerRow = token.header.map(cell => [
143
+ boldChunk(getPlainText(cell.tokens).trim())
144
+ ]);
145
+ const dataRows = token.rows.map(row => row.map(cell => [
146
+ { __isChunk: true, text: getPlainText(cell.tokens) }
147
+ ]));
148
+ return [headerRow, ...dataRows];
149
+ }, [token]);
150
+ return (_jsx("box", { style: { marginLeft: 1, marginRight: 1, marginBottom: 1 }, children: _jsx("text-table", { content: content, wrapMode: "word", columnWidthMode: "content", cellPadding: 0, border: true, borderStyle: "single", borderColor: theme.border, fg: theme.text }) }));
162
151
  }
163
152
  function HorizontalRule({ theme }) {
164
153
  return (_jsx("box", { style: { marginTop: 0, marginBottom: 1, marginLeft: 1, marginRight: 1 }, children: _jsx("text", { style: { fg: theme.markdownHorizontalRule }, content: "─".repeat(40) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../src/MarkdownView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../src/MarkdownView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAkC,MAAM,OAAO,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,mBAAmB,CAAA;AAC1B,OAAO,iBAAiB,CAAA;AAaxB,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,eAAe,GAAG,IAAI,EACtB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,MAAM,GACY;IAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACpC,MAAM,WAAW,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,MAAM,IAAI,WAAW,CAAA;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAuB;QAClC,QAAQ,EAAE,KAAK,CAAC,SAAS;QACzB,QAAQ,EAAE,KAAK,CAAC,iBAAiB;QACjC,QAAQ,EAAE,KAAK,CAAC,UAAU;QAC1B,WAAW,EAAE,KAAK,CAAC,SAAS;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,cAAc,EAAE,KAAK,CAAC,OAAO;QAC7B,SAAS,EAAE,KAAK,CAAC,eAAe;QAChC,YAAY,EAAE,KAAK,CAAC,OAAO;QAC3B,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,kBAAkB,EAAE,KAAK,CAAC,OAAO;KAClC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAA2B;YAC1C,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;YAC3F,YAAY,EAAE,cAAc;YAC5B,eAAe,EAAE,iBAAiB;YAClC,WAAW,EAAE,aAAa;SAC3B,CAAA;QACD,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAA;IAEnF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACjD,KAAC,aAAa,IAAa,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,IAAjD,KAAK,CAAgD,CAC1E,CAAC,CAAA;IAEF,OAAO,CACL,uBACE,GAAG,EAAE,YAAY,EAEjB,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,CAAC,EAClB,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,YAErB,aAAa,IANT,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAOjC,CAChB,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,KAAK,EACL,KAAK,EACL,MAAM,GAKP;IACC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,KAAC,eAAe,IAAC,KAAK,EAAE,KAAuB,EAAE,KAAK,EAAE,KAAK,GAAI,CAAA;QAC1E,KAAK,WAAW;YACd,OAAO,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAyB,EAAE,KAAK,EAAE,KAAK,GAAI,CAAA;QAC9E,KAAK,MAAM;YACT,OAAO,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAAA;QACzF,KAAK,YAAY;YACf,OAAO,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAA0B,EAAE,KAAK,EAAE,KAAK,GAAI,CAAA;QAChF,KAAK,MAAM;YACT,OAAO,KAAC,YAAY,IAAC,KAAK,EAAE,KAAoB,EAAE,KAAK,EAAE,KAAK,GAAI,CAAA;QACpE,KAAK,OAAO;YACV,OAAO,KAAC,qBAAqB,IAAC,KAAK,EAAE,KAAqB,GAAI,CAAA;QAChE,KAAK,IAAI;YACP,OAAO,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,GAAI,CAAA;QACzC,KAAK,OAAO;YACV,OAAO,IAAI,CAAA;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAA;QACb;YACE,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,CACL,eACE,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,KAAK,EAAE;wBACL,EAAE,EAAE,KAAK,CAAC,YAAY;wBACtB,YAAY,EAAE,CAAC;wBACf,SAAS,EAAE,CAAC;wBACZ,UAAU,EAAE,CAAC;wBACb,WAAW,EAAE,CAAC;qBACf,GACD,CACH,CAAA;YACH,CAAC;YACD,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAmD;IACxF,MAAM,aAAa,GAA2B;QAC5C,CAAC,EAAE,KAAK,CAAC,eAAe;QACxB,CAAC,EAAE,KAAK,CAAC,SAAS;QAClB,CAAC,EAAE,KAAK,CAAC,MAAM;QACf,CAAC,EAAE,KAAK,CAAC,IAAI;QACb,CAAC,EAAE,KAAK,CAAC,SAAS;QAClB,CAAC,EAAE,KAAK,CAAC,SAAS;KACnB,CAAA;IAED,MAAM,QAAQ,GAA2B;QACvC,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,QAAQ;QACX,CAAC,EAAE,SAAS;KACb,CAAA;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAEpD,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAC3C,gBAAM,KAAK,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,aAC3D,eAAM,EAAE,EAAE,KAAK,CAAC,SAAS,YAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAQ,EACzD,2BAAS,WAAW,GAAU,IACzB,GACH,CACP,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAqD;IAC5F,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAC5D,eAAM,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,YACrC,KAAC,YAAY,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,GAAI,GACrD,GACH,CACP,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,KAAK,EACL,MAAM,GAKP;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;IAC/C,OAAO,CACL,cACE,KAAK,EAAE;YACL,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,eAAe,EAAE,KAAK,CAAC,iBAAiB;YACxC,aAAa,EAAE,QAAQ;SACxB,YAED,eACE,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,QAAQ,EAAE,KAAK,CAAC,IAAI,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAC5B,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAsD;IAC9F,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;QAC5B,CAAC,CAAC,KAAK,CAAC,MAAM;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAE,CAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YAClF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAE,CAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YACpE,OAAO,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,WAAW,IAAI,EAAE,CAAA;QAC7D,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,aAC1F,eAAM,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAC,SAAI,GAAG,EAC9D,eAAM,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,GAAI,IACxD,CACP,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAgD;IAClF,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,YACpF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,KAAC,gBAAgB,IAEf,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EACjC,KAAK,EAAE,KAAK,IAJP,KAAK,CAKV,CACH,CAAC,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,GAMN;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;IAErC,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,aAClC,eAAM,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAI,EAChE,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,YACnD,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC/D,OAAO,CACL,eAAgB,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,YAC/C,KAAC,YAAY,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,GAAI,IAD3C,GAAG,CAEP,CACR,CAAA;oBACH,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC/C,OAAO,CACL,eAAgB,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,YAC/C,KAAC,YAAY,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,GAAI,IAD3C,GAAG,CAEP,CACR,CAAA;oBACH,CAAC;oBACD,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACtD,OAAO,eAAgB,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,IAA3D,GAAG,CAA4D,CAAA;oBACnF,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC,CAAC,GACE,IACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAE,KAAK,EAA2B;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE5B,MAAM,OAAO,GAAqB,OAAO,CAAC,GAAG,EAAE;QAC7C,MAAM,SAAS,GAA2B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5C,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACpC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACd,EAAE,SAAS,EAAE,IAAa,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;SACtC,CAAC,CAC3B,CAAA;QACD,OAAO,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAC5D,qBACE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAC,MAAM,EACf,eAAe,EAAC,SAAS,EACzB,WAAW,EAAE,CAAC,EACd,MAAM,EAAE,IAAI,EACZ,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,KAAK,CAAC,MAAM,EACzB,EAAE,EAAE,KAAK,CAAC,IAAI,GACd,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,KAAK,EAA4B;IACzD,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAC1E,eAAM,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAI,GAC1E,CACP,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAe;IACnC,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC,IAAI,CAAA;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,OAAQ,KAAyB,CAAC,IAAI,CAAA;QACrE,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC,KAAK,CAAC,MAAiB,CAAC,CAAA;QACnF,IAAI,MAAM,IAAI,KAAK;YAAE,OAAQ,KAA0B,CAAC,IAAI,CAAA;QAC5D,OAAO,EAAE,CAAA;IACX,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAA6C;IAChF,MAAM,MAAM,GAAgB,EAAE,CAAA;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,MAAM,GAAG,GAAG,CAAC,CAAA;QAEb,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,CAAE,KAAqB,CAAC,IAAI,CAAC,CAAA;gBACxC,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,CACT,2BAAmB,YAAY,CAAE,KAAuB,CAAC,MAAM,IAAI,EAAE,CAAC,IAAzD,GAAG,CAAgE,CACjF,CAAA;gBACD,MAAK;YACP,KAAK,IAAI;gBACP,MAAM,CAAC,IAAI,CAAC,uBAAe,YAAY,CAAE,KAAmB,CAAC,MAAM,IAAI,EAAE,CAAC,IAArD,GAAG,CAAwD,CAAC,CAAA;gBACjF,MAAK;YACP,KAAK,UAAU;gBACb,MAAM,CAAC,IAAI,CACT,eAAgB,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,YAC9D,IAAK,KAAyB,CAAC,IAAI,GAAG,IAD9B,GAAG,CAEP,CACR,CAAA;gBACD,MAAK;YACP,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GAAG,KAAoB,CAAA;gBACtC,MAAM,CAAC,IAAI,CACT,sBACE,YAAG,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,YAC5C,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,GACnC,IAHE,GAAG,CAIP,CACL,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,IAAI;gBACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACjB,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,CAAC,IAAI,CAAE,KAAuB,CAAC,IAAI,CAAC,CAAA;gBAC1C,MAAK;YACP,KAAK,OAAO;gBACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAChB,MAAK;YACP;gBACE,IAAI,MAAM,IAAI,KAAK,IAAI,OAAQ,KAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7E,MAAM,CAAC,IAAI,CAAE,KAA0B,CAAC,IAAI,CAAC,CAAA;gBAC/C,CAAC;gBACD,MAAK;QACT,CAAC;IACH,CAAC;IAED,OAAO,4BAAG,MAAM,GAAI,CAAA;AACtB,CAAC"}
package/dist/Table.d.ts CHANGED
@@ -13,6 +13,8 @@ export interface TableProps {
13
13
  maxColumnWidth?: number;
14
14
  /** Number of rows to sample for width calculation (default: 100) */
15
15
  sampleSize?: number;
16
+ /** Show line numbers in the gutter (default: true) */
17
+ showLineNumbers?: boolean;
16
18
  cursor?: number;
17
19
  selectionStart?: number;
18
20
  selectionEnd?: number;
@@ -20,20 +22,19 @@ export interface TableProps {
20
22
  currentMatchRow?: number;
21
23
  toggledRows?: Set<number>;
22
24
  docRef?: RefObject<RowDocumentRenderable | null>;
25
+ /** Column width mode: "content" sizes to content (default), "fill" expands to fill available width */
26
+ columnWidthMode?: "content" | "fill";
23
27
  }
24
28
  declare function isNumeric(value: string): boolean;
25
29
  interface ColumnWidthOptions {
26
30
  minColumnWidth: number;
27
31
  maxColumnWidth: number;
28
32
  sampleSize: number;
33
+ columnWidthMode?: "content" | "fill";
29
34
  }
30
35
  declare function sampleRows(rows: string[][], sampleSize: number): string[][];
31
36
  declare function computeColumnWidths(headers: string[], rows: string[][], maxWidth: number, options: ColumnWidthOptions): number[];
32
- declare function truncate(text: string, width: number): string;
33
- declare function padCell(text: string, width: number, rightAlign: boolean): string;
34
- declare function buildBorderLine(widths: number[], left: string, mid: string, right: string, fill: string): string;
35
- declare function buildDataLine(cells: string[], widths: number[], alignments: boolean[]): string;
36
- export declare function Table({ columns, rows, maxWidth, minColumnWidth, maxColumnWidth, sampleSize, cursor, selectionStart, selectionEnd, matchingRows, currentMatchRow, toggledRows, docRef, }: TableProps): import("react").ReactNode;
37
- export { computeColumnWidths, truncate, padCell, isNumeric, buildBorderLine, buildDataLine, sampleRows, };
37
+ export declare function Table({ columns, rows, maxWidth, minColumnWidth, maxColumnWidth, sampleSize, showLineNumbers, cursor, selectionStart, selectionEnd, matchingRows, currentMatchRow, toggledRows, docRef, columnWidthMode, }: TableProps): import("react").ReactNode;
38
+ export { computeColumnWidths, isNumeric, sampleRows, };
38
39
  export type { ColumnWidthOptions };
39
40
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../src/Table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,4BAA4B,CAAA;AACnH,OAAO,mBAAmB,CAAA;AAE1B,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;CACjD;AASD,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzC;AAED,UAAU,kBAAkB;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CASpE;AAED,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,MAAM,EAAE,CAsDV;AAED,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,iBAAS,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAWzE;AAED,iBAAS,eAAe,CACtB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAGvF;AAcD,wBAAgB,KAAK,CAAC,EACpB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,cAAsC,EACtC,cAAsC,EACtC,UAAgC,EAChC,MAAM,EACN,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,MAAM,GACP,EAAE,UAAU,6BA0EZ;AAGD,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,GACX,CAAA;AACD,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../src/Table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,4BAA4B,CAAA;AACnH,OAAO,mBAAmB,CAAA;AAE1B,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sDAAsD;IACtD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;IAChD,sGAAsG;IACtG,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;CACrC;AAQD,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzC;AAED,UAAU,kBAAkB;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;CACrC;AAED,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CASpE;AAED,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,MAAM,EAAE,CA4DV;AA8BD,wBAAgB,KAAK,CAAC,EACpB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,cAAsC,EACtC,cAAsC,EACtC,UAAgC,EAChC,eAAsB,EACtB,MAAM,EACN,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,MAAM,EACN,eAA2B,GAC5B,EAAE,UAAU,6BA0HZ;AAGD,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,UAAU,GACX,CAAA;AACD,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
package/dist/Table.js CHANGED
@@ -4,10 +4,9 @@ import { useTheme } from "@tooee/themes";
4
4
  import { useEffect, useRef } from "react";
5
5
  import "./row-document.js";
6
6
  const PADDING = 1;
7
- const THRESHOLD = 20;
8
- const ELLIPSIS = "…";
7
+ const MARGIN = 1; // horizontal margin on each side of the table
9
8
  const DEFAULT_MIN_COL_WIDTH = 4;
10
- const DEFAULT_MAX_COL_WIDTH = 50;
9
+ const DEFAULT_MAX_COL_WIDTH = 80;
11
10
  const DEFAULT_SAMPLE_SIZE = 100;
12
11
  function isNumeric(value) {
13
12
  return /^\s*-?[\d,]+\.?\d*\s*$/.test(value);
@@ -29,34 +28,40 @@ function computeColumnWidths(headers, rows, maxWidth, options) {
29
28
  // Sample rows for performance on large tables
30
29
  const sampledRows = sampleRows(rows, sampleSize);
31
30
  // Calculate natural width for each column (header + content + padding)
31
+ // Use Bun.stringWidth for correct display width with CJK/emoji
32
32
  const naturalWidths = headers.map((header, col) => {
33
- const headerLen = header.length;
34
- const maxRowLen = sampledRows.reduce((max, row) => Math.max(max, (row[col] ?? "").length), 0);
33
+ const headerLen = Bun.stringWidth(header);
34
+ const maxRowLen = sampledRows.reduce((max, row) => Math.max(max, Bun.stringWidth(row[col] ?? "")), 0);
35
35
  const contentWidth = Math.max(headerLen, maxRowLen);
36
36
  // Apply min/max constraints before adding padding
37
37
  const constrainedWidth = Math.min(maxColumnWidth, Math.max(minColumnWidth, contentWidth));
38
38
  return constrainedWidth + PADDING * 2;
39
39
  });
40
- // 1 for each column border + 1 for trailing border
41
- const borderOverhead = colCount + 1;
42
- const totalNatural = naturalWidths.reduce((a, b) => a + b, 0) + borderOverhead;
43
- // If everything fits, use natural widths
40
+ // No border overhead -- flexbox rows don't have border characters
41
+ const totalNatural = naturalWidths.reduce((a, b) => a + b, 0);
42
+ // If everything fits, use natural widths (or distribute extra space in fill mode)
44
43
  if (totalNatural <= maxWidth) {
44
+ if (options.columnWidthMode === "fill" && totalNatural < maxWidth) {
45
+ const extra = maxWidth - totalNatural;
46
+ const perCol = Math.floor(extra / colCount);
47
+ const remainder = extra - perCol * colCount;
48
+ return naturalWidths.map((w, i) => w + perCol + (i < remainder ? 1 : 0));
49
+ }
45
50
  return naturalWidths;
46
51
  }
47
- const available = maxWidth - borderOverhead;
52
+ const available = maxWidth;
48
53
  const minColWidthWithPadding = minColumnWidth + PADDING * 2;
49
54
  // Extreme case: not even minimum widths fit
50
- if (available <= colCount * minColWidthWithPadding) {
55
+ if (maxWidth <= colCount * minColWidthWithPadding) {
51
56
  return naturalWidths.map(() => Math.max(minColWidthWithPadding, Math.floor(available / colCount)));
52
57
  }
53
58
  // Give compact columns their natural width, distribute rest proportionally
54
- const compact = naturalWidths.map((w) => w <= THRESHOLD);
59
+ const compact = naturalWidths.map((w) => w <= 20);
55
60
  const compactTotal = naturalWidths.reduce((sum, w, i) => sum + (compact[i] ? w : 0), 0);
56
61
  const remaining = available - compactTotal;
57
62
  const longTotal = naturalWidths.reduce((sum, w, i) => sum + (compact[i] ? 0 : w), 0);
58
63
  if (longTotal === 0 || remaining <= 0) {
59
- // All compact or no space left distribute evenly
64
+ // All compact or no space left -- distribute evenly
60
65
  const total = naturalWidths.reduce((a, b) => a + b, 0);
61
66
  return naturalWidths.map((w) => Math.max(minColWidthWithPadding, Math.floor((w / total) * available)));
62
67
  }
@@ -66,34 +71,20 @@ function computeColumnWidths(headers, rows, maxWidth, options) {
66
71
  return Math.max(minColWidthWithPadding, Math.floor((w / longTotal) * remaining));
67
72
  });
68
73
  }
69
- function truncate(text, width) {
70
- const contentWidth = width - PADDING * 2;
71
- if (contentWidth <= 0)
72
- return "";
73
- if (text.length <= contentWidth)
74
- return text;
75
- if (contentWidth <= 1)
76
- return ELLIPSIS.slice(0, contentWidth);
77
- return text.slice(0, contentWidth - 1) + ELLIPSIS;
78
- }
79
- function padCell(text, width, rightAlign) {
80
- const contentWidth = width - PADDING * 2;
81
- const truncated = truncate(text, width);
82
- const padLeft = " ".repeat(PADDING);
83
- const padRight = " ".repeat(PADDING);
84
- if (rightAlign) {
85
- const space = contentWidth - truncated.length;
86
- return padLeft + " ".repeat(Math.max(0, space)) + truncated + padRight;
74
+ /**
75
+ * Pre-compute gutter width to subtract from available column space.
76
+ * Mirrors RowDocumentRenderable._computeGutterWidth logic.
77
+ */
78
+ function computeGutterWidth(rowCount, showLineNumbers) {
79
+ let width = 0;
80
+ if (showLineNumbers) {
81
+ // lineNumberStart defaults to 1, so max line number = rowCount
82
+ const maxLineNum = rowCount;
83
+ width += Math.max(String(maxLineNum).length, 1);
87
84
  }
88
- const space = contentWidth - truncated.length;
89
- return padLeft + truncated + " ".repeat(Math.max(0, space)) + padRight;
90
- }
91
- function buildBorderLine(widths, left, mid, right, fill) {
92
- return left + widths.map((w) => fill.repeat(w)).join(mid) + right;
93
- }
94
- function buildDataLine(cells, widths, alignments) {
95
- const parts = cells.map((cell, i) => padCell(cell, widths[i], alignments[i]));
96
- return "│" + parts.join("│") + "│";
85
+ width += 1; // signColumnWidth
86
+ width += 1; // gutterPaddingRight (default)
87
+ return width;
97
88
  }
98
89
  function formatCellValue(value) {
99
90
  if (value == null)
@@ -111,18 +102,21 @@ function formatCellValue(value) {
111
102
  return String(value);
112
103
  }
113
104
  }
114
- export function Table({ columns, rows, maxWidth, minColumnWidth = DEFAULT_MIN_COL_WIDTH, maxColumnWidth = DEFAULT_MAX_COL_WIDTH, sampleSize = DEFAULT_SAMPLE_SIZE, cursor, selectionStart, selectionEnd, matchingRows, currentMatchRow, toggledRows, docRef, }) {
105
+ export function Table({ columns, rows, maxWidth, minColumnWidth = DEFAULT_MIN_COL_WIDTH, maxColumnWidth = DEFAULT_MAX_COL_WIDTH, sampleSize = DEFAULT_SAMPLE_SIZE, showLineNumbers = true, cursor, selectionStart, selectionEnd, matchingRows, currentMatchRow, toggledRows, docRef, columnWidthMode = "content", }) {
115
106
  const { theme } = useTheme();
116
107
  const { width: terminalWidth } = useTerminalDimensions();
117
- // Use terminal width minus margins (1 on each side) if maxWidth not provided
118
- const effectiveMaxWidth = maxWidth ?? terminalWidth - 2;
108
+ // Compute available content width: start with total space, subtract margins and gutter
109
+ const gutterWidth = computeGutterWidth(rows.length, showLineNumbers);
110
+ const effectiveMaxWidth = Math.max(0, (maxWidth ?? terminalWidth) - MARGIN * 2 - gutterWidth);
119
111
  const headers = columns.map((column) => column.header ?? column.key);
120
112
  const normalizedRows = rows.map((row) => columns.map((column) => formatCellValue(row[column.key])));
121
113
  const colWidths = computeColumnWidths(headers, normalizedRows, effectiveMaxWidth, {
122
114
  minColumnWidth,
123
115
  maxColumnWidth,
124
116
  sampleSize,
117
+ columnWidthMode,
125
118
  });
119
+ // Detect right-aligned columns: explicit align prop or auto-detect numeric
126
120
  const alignments = columns.map((column, colIdx) => {
127
121
  if (column.align === "right")
128
122
  return true;
@@ -132,14 +126,14 @@ export function Table({ columns, rows, maxWidth, minColumnWidth = DEFAULT_MIN_CO
132
126
  const numericCount = sampleValues.filter(isNumeric).length;
133
127
  return numericCount > sampleValues.length / 2;
134
128
  });
135
- const topBorder = buildBorderLine(colWidths, "┌", "┬", "┐", "─");
136
- const headerSep = buildBorderLine(colWidths, "├", "┼", "┤", "─");
137
- const bottomBorder = buildBorderLine(colWidths, "└", "┴", "┘", "─");
138
- const headerLine = buildDataLine(headers, colWidths, alignments);
139
- const dataLines = normalizedRows.map((row) => buildDataLine(row, colWidths, alignments));
140
129
  const internalRef = useRef(null);
141
130
  const effectiveRef = docRef ?? internalRef;
142
131
  const palette = {
132
+ gutterFg: theme.textMuted,
133
+ gutterBg: theme.backgroundElement,
134
+ cursorSignFg: theme.primary,
135
+ matchSignFg: theme.warning,
136
+ currentMatchSignFg: theme.primary,
143
137
  cursorBg: theme.cursorLine,
144
138
  selectionBg: theme.selection,
145
139
  matchBg: theme.warning,
@@ -158,8 +152,19 @@ export function Table({ columns, rows, maxWidth, minColumnWidth = DEFAULT_MIN_CO
158
152
  };
159
153
  effectiveRef.current?.setDecorations(decorations);
160
154
  }, [cursor, selectionStart, selectionEnd, matchingRows, currentMatchRow, toggledRows]);
161
- return (_jsxs("row-document", { ref: effectiveRef, mode: "multi", rowChildOffset: 3, showGutter: false, palette: palette, style: { flexGrow: 1, marginLeft: 1, marginRight: 1, marginBottom: 1 }, children: [_jsx("text", { content: topBorder, fg: theme.border }), _jsx("text", { content: headerLine, fg: theme.primary }), _jsx("text", { content: headerSep, fg: theme.border }), dataLines.map((line, i) => (_jsx("text", { content: line, fg: theme.text }, i))), _jsx("text", { content: bottomBorder, fg: theme.border })] }));
155
+ return (_jsxs("box", { style: { flexDirection: "column", flexGrow: 1, marginLeft: MARGIN, marginRight: MARGIN, marginBottom: MARGIN }, children: [_jsx("box", { style: { flexDirection: "row", flexShrink: 0, paddingLeft: gutterWidth }, children: headers.map((h, i) => (_jsx("text", { content: h, style: { width: colWidths[i], paddingLeft: PADDING, paddingRight: PADDING }, fg: theme.primary }, i))) }), _jsx("box", { style: { flexDirection: "row", flexShrink: 0, paddingLeft: gutterWidth }, children: colWidths.map((w, i) => (_jsx("text", { content: "\u2500".repeat(w - PADDING * 2), style: { width: w, paddingLeft: PADDING, paddingRight: PADDING }, fg: theme.border }, i))) }), _jsx("row-document", { ref: effectiveRef, mode: "multi", rowChildOffset: 0, showGutter: true, showLineNumbers: showLineNumbers, signColumnWidth: 1, palette: palette, style: { flexGrow: 1 }, children: normalizedRows.map((row, i) => (_jsx("box", { style: { flexDirection: "row" }, children: row.map((cell, j) => {
156
+ const contentWidth = colWidths[j] - PADDING * 2;
157
+ const cellWidth = Bun.stringWidth(cell);
158
+ const displayCell = alignments[j] && cellWidth <= contentWidth
159
+ ? " ".repeat(contentWidth - cellWidth) + cell
160
+ : cell;
161
+ return (_jsx("text", { content: displayCell, wrapMode: "word", style: {
162
+ width: colWidths[j],
163
+ paddingLeft: PADDING,
164
+ paddingRight: PADDING,
165
+ }, fg: theme.text }, j));
166
+ }) }, i))) })] }));
162
167
  }
163
- // Exported for testing
164
- export { computeColumnWidths, truncate, padCell, isNumeric, buildBorderLine, buildDataLine, sampleRows, };
168
+ // Exported for testing and MarkdownView
169
+ export { computeColumnWidths, isNumeric, sampleRows, };
165
170
  //# sourceMappingURL=Table.js.map
package/dist/Table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sourceRoot":"","sources":["../src/Table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sourceRoot":"","sources":["../src/Table.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { MarkdownView } from "./MarkdownView.js";
2
2
  export { CodeView } from "./CodeView.js";
3
3
  export { ImageView } from "./ImageView.js";
4
- export { Table, computeColumnWidths, truncate, padCell, isNumeric, buildBorderLine, buildDataLine, sampleRows, } from "./Table.js";
4
+ export { Table, computeColumnWidths, isNumeric, sampleRows, } from "./Table.js";
5
5
  export type { TableProps, ColumnWidthOptions } from "./Table.js";
6
6
  export type { ColumnDef, TableRow } from "./table-types.js";
7
7
  export { CommandPalette } from "./CommandPalette.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAChE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACrF,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAChE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACrF,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { MarkdownView } from "./MarkdownView.js";
2
2
  export { CodeView } from "./CodeView.js";
3
3
  export { ImageView } from "./ImageView.js";
4
- export { Table, computeColumnWidths, truncate, padCell, isNumeric, buildBorderLine, buildDataLine, sampleRows, } from "./Table.js";
4
+ export { Table, computeColumnWidths, isNumeric, sampleRows, } from "./Table.js";
5
5
  export { CommandPalette } from "./CommandPalette.js";
6
6
  export { parseCSV, parseTSV, parseJSON, parseAuto, detectFormat } from "./parsers.js";
7
7
  export { RowDocumentRenderable } from "./RowDocumentRenderable.js";
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,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,GACX,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAErF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { TextTableRenderable } from "@opentui/core";
2
+ declare module "@opentui/react" {
3
+ interface OpenTUIComponents {
4
+ "text-table": typeof TextTableRenderable;
5
+ }
6
+ }
7
+ //# sourceMappingURL=text-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-table.d.ts","sourceRoot":"","sources":["../src/text-table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAInD,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,iBAAiB;QACzB,YAAY,EAAE,OAAO,mBAAmB,CAAA;KACzC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { extend } from "@opentui/react";
2
+ import { TextTableRenderable } from "@opentui/core";
3
+ extend({ "text-table": TextTableRenderable });
4
+ //# sourceMappingURL=text-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-table.js","sourceRoot":"","sources":["../src/text-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tooee/renderers",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Content renderers (markdown, code, image, table) for Tooee",
5
5
  "license": "MIT",
6
6
  "author": "Gareth Andrew",
@@ -37,20 +37,20 @@
37
37
  "typecheck": "tsc --noEmit"
38
38
  },
39
39
  "dependencies": {
40
- "@tooee/themes": "0.1.7",
41
- "marked": "^16.3.0"
40
+ "@tooee/themes": "0.1.9",
41
+ "marked": "^17.0.4"
42
42
  },
43
43
  "devDependencies": {
44
- "@opentui/core": "^0.1.67",
45
- "@opentui/react": "^0.1.67",
46
- "@types/bun": "^1.3.5",
47
- "@types/react": "^19.1.10",
44
+ "@opentui/core": "^0.1.86",
45
+ "@opentui/react": "^0.1.86",
46
+ "@types/bun": "^1.3.10",
47
+ "@types/react": "^19.2.14",
48
48
  "jimp": "^1.6.0",
49
- "typescript": "^5.8.3"
49
+ "typescript": "^5.9.3"
50
50
  },
51
51
  "peerDependencies": {
52
- "@opentui/core": "^0.1.67",
53
- "@opentui/react": "^0.1.67",
52
+ "@opentui/core": "^0.1.86",
53
+ "@opentui/react": "^0.1.86",
54
54
  "react": "^18.0.0 || ^19.0.0"
55
55
  }
56
56
  }
@@ -1,11 +1,11 @@
1
1
  import { marked, type Token, type Tokens } from "marked"
2
- import { useEffect, useRef, type ReactNode, type RefObject } from "react"
3
- import { useTerminalDimensions } from "@opentui/react"
2
+ import { useEffect, useMemo, useRef, type ReactNode, type RefObject } from "react"
4
3
  import { useTheme, type ResolvedTheme } from "@tooee/themes"
5
- import type { SyntaxStyle } from "@opentui/core"
6
- import { computeColumnWidths, buildBorderLine, buildDataLine, isNumeric } from "./Table.js"
4
+ import { bold as boldChunk } from "@opentui/core"
5
+ import type { SyntaxStyle, TextTableContent, TextTableCellContent } from "@opentui/core"
7
6
  import type { RowDocumentRenderable, RowDocumentPalette, RowDocumentDecorations } from "./RowDocumentRenderable.js"
8
7
  import "./row-document.js"
8
+ import "./text-table.js"
9
9
 
10
10
  interface MarkdownViewProps {
11
11
  content: string
@@ -277,43 +277,31 @@ function ListItemRenderer({
277
277
 
278
278
  function MarkdownTableRenderer({ token }: { token: Tokens.Table }) {
279
279
  const { theme } = useTheme()
280
- const { width: terminalWidth } = useTerminalDimensions()
281
280
 
282
- const headers = token.header.map((cell) => getPlainText(cell.tokens).trim())
283
- const rowData = token.rows.map((row) =>
284
- row.map((cell) => getPlainText(cell.tokens)),
285
- )
286
-
287
- // Account for gutter + margins when computing available width
288
- const effectiveMaxWidth = terminalWidth - 4
289
-
290
- const colWidths = computeColumnWidths(headers, rowData, effectiveMaxWidth, {
291
- minColumnWidth: 4,
292
- maxColumnWidth: 50,
293
- sampleSize: 100,
294
- })
295
-
296
- const alignments = headers.map((_header, colIdx) => {
297
- const sampleValues = rowData.slice(0, 10).map((row) => row[colIdx] ?? "")
298
- const numericCount = sampleValues.filter(isNumeric).length
299
- return numericCount > sampleValues.length / 2
300
- })
301
-
302
- const topBorder = buildBorderLine(colWidths, "\u250c", "\u252c", "\u2510", "\u2500")
303
- const headerSep = buildBorderLine(colWidths, "\u251c", "\u253c", "\u2524", "\u2500")
304
- const bottomBorder = buildBorderLine(colWidths, "\u2514", "\u2534", "\u2518", "\u2500")
305
- const headerLine = buildDataLine(headers, colWidths, alignments)
306
- const dataLines = rowData.map((row) => buildDataLine(row, colWidths, alignments))
281
+ const content: TextTableContent = useMemo(() => {
282
+ const headerRow: TextTableCellContent[] = token.header.map(cell => [
283
+ boldChunk(getPlainText(cell.tokens).trim())
284
+ ])
285
+ const dataRows = token.rows.map(row =>
286
+ row.map(cell => [
287
+ { __isChunk: true as const, text: getPlainText(cell.tokens) }
288
+ ] as TextTableCellContent)
289
+ )
290
+ return [headerRow, ...dataRows]
291
+ }, [token])
307
292
 
308
293
  return (
309
- <box style={{ marginLeft: 1, marginRight: 1, marginBottom: 1, flexDirection: "column" }}>
310
- <text content={topBorder} style={{ fg: theme.border }} />
311
- <text content={headerLine} style={{ fg: theme.primary }} />
312
- <text content={headerSep} style={{ fg: theme.border }} />
313
- {dataLines.map((line, i) => (
314
- <text key={i} content={line} style={{ fg: theme.text }} />
315
- ))}
316
- <text content={bottomBorder} style={{ fg: theme.border }} />
294
+ <box style={{ marginLeft: 1, marginRight: 1, marginBottom: 1 }}>
295
+ <text-table
296
+ content={content}
297
+ wrapMode="word"
298
+ columnWidthMode="content"
299
+ cellPadding={0}
300
+ border={true}
301
+ borderStyle="single"
302
+ borderColor={theme.border}
303
+ fg={theme.text}
304
+ />
317
305
  </box>
318
306
  )
319
307
  }
package/src/Table.tsx CHANGED
@@ -16,6 +16,8 @@ export interface TableProps {
16
16
  maxColumnWidth?: number
17
17
  /** Number of rows to sample for width calculation (default: 100) */
18
18
  sampleSize?: number
19
+ /** Show line numbers in the gutter (default: true) */
20
+ showLineNumbers?: boolean
19
21
  cursor?: number
20
22
  selectionStart?: number
21
23
  selectionEnd?: number
@@ -23,13 +25,14 @@ export interface TableProps {
23
25
  currentMatchRow?: number
24
26
  toggledRows?: Set<number>
25
27
  docRef?: RefObject<RowDocumentRenderable | null>
28
+ /** Column width mode: "content" sizes to content (default), "fill" expands to fill available width */
29
+ columnWidthMode?: "content" | "fill"
26
30
  }
27
31
 
28
32
  const PADDING = 1
29
- const THRESHOLD = 20
30
- const ELLIPSIS = "…"
33
+ const MARGIN = 1 // horizontal margin on each side of the table
31
34
  const DEFAULT_MIN_COL_WIDTH = 4
32
- const DEFAULT_MAX_COL_WIDTH = 50
35
+ const DEFAULT_MAX_COL_WIDTH = 80
33
36
  const DEFAULT_SAMPLE_SIZE = 100
34
37
 
35
38
  function isNumeric(value: string): boolean {
@@ -40,6 +43,7 @@ interface ColumnWidthOptions {
40
43
  minColumnWidth: number
41
44
  maxColumnWidth: number
42
45
  sampleSize: number
46
+ columnWidthMode?: "content" | "fill"
43
47
  }
44
48
 
45
49
  function sampleRows(rows: string[][], sampleSize: number): string[][] {
@@ -66,42 +70,48 @@ function computeColumnWidths(
66
70
  const sampledRows = sampleRows(rows, sampleSize)
67
71
 
68
72
  // Calculate natural width for each column (header + content + padding)
73
+ // Use Bun.stringWidth for correct display width with CJK/emoji
69
74
  const naturalWidths = headers.map((header, col) => {
70
- const headerLen = header.length
71
- const maxRowLen = sampledRows.reduce((max, row) => Math.max(max, (row[col] ?? "").length), 0)
75
+ const headerLen = Bun.stringWidth(header)
76
+ const maxRowLen = sampledRows.reduce((max, row) => Math.max(max, Bun.stringWidth(row[col] ?? "")), 0)
72
77
  const contentWidth = Math.max(headerLen, maxRowLen)
73
78
  // Apply min/max constraints before adding padding
74
79
  const constrainedWidth = Math.min(maxColumnWidth, Math.max(minColumnWidth, contentWidth))
75
80
  return constrainedWidth + PADDING * 2
76
81
  })
77
82
 
78
- // 1 for each column border + 1 for trailing border
79
- const borderOverhead = colCount + 1
80
- const totalNatural = naturalWidths.reduce((a, b) => a + b, 0) + borderOverhead
83
+ // No border overhead -- flexbox rows don't have border characters
84
+ const totalNatural = naturalWidths.reduce((a, b) => a + b, 0)
81
85
 
82
- // If everything fits, use natural widths
86
+ // If everything fits, use natural widths (or distribute extra space in fill mode)
83
87
  if (totalNatural <= maxWidth) {
88
+ if (options.columnWidthMode === "fill" && totalNatural < maxWidth) {
89
+ const extra = maxWidth - totalNatural
90
+ const perCol = Math.floor(extra / colCount)
91
+ const remainder = extra - perCol * colCount
92
+ return naturalWidths.map((w, i) => w + perCol + (i < remainder ? 1 : 0))
93
+ }
84
94
  return naturalWidths
85
95
  }
86
96
 
87
- const available = maxWidth - borderOverhead
97
+ const available = maxWidth
88
98
  const minColWidthWithPadding = minColumnWidth + PADDING * 2
89
99
 
90
100
  // Extreme case: not even minimum widths fit
91
- if (available <= colCount * minColWidthWithPadding) {
101
+ if (maxWidth <= colCount * minColWidthWithPadding) {
92
102
  return naturalWidths.map(() =>
93
103
  Math.max(minColWidthWithPadding, Math.floor(available / colCount)),
94
104
  )
95
105
  }
96
106
 
97
107
  // Give compact columns their natural width, distribute rest proportionally
98
- const compact: boolean[] = naturalWidths.map((w) => w <= THRESHOLD)
108
+ const compact: boolean[] = naturalWidths.map((w) => w <= 20)
99
109
  const compactTotal = naturalWidths.reduce((sum, w, i) => sum + (compact[i] ? w : 0), 0)
100
110
  const remaining = available - compactTotal
101
111
  const longTotal = naturalWidths.reduce((sum, w, i) => sum + (compact[i] ? 0 : w), 0)
102
112
 
103
113
  if (longTotal === 0 || remaining <= 0) {
104
- // All compact or no space left distribute evenly
114
+ // All compact or no space left -- distribute evenly
105
115
  const total = naturalWidths.reduce((a, b) => a + b, 0)
106
116
  return naturalWidths.map((w) =>
107
117
  Math.max(minColWidthWithPadding, Math.floor((w / total) * available)),
@@ -114,40 +124,20 @@ function computeColumnWidths(
114
124
  })
115
125
  }
116
126
 
117
- function truncate(text: string, width: number): string {
118
- const contentWidth = width - PADDING * 2
119
- if (contentWidth <= 0) return ""
120
- if (text.length <= contentWidth) return text
121
- if (contentWidth <= 1) return ELLIPSIS.slice(0, contentWidth)
122
- return text.slice(0, contentWidth - 1) + ELLIPSIS
123
- }
124
-
125
- function padCell(text: string, width: number, rightAlign: boolean): string {
126
- const contentWidth = width - PADDING * 2
127
- const truncated = truncate(text, width)
128
- const padLeft = " ".repeat(PADDING)
129
- const padRight = " ".repeat(PADDING)
130
- if (rightAlign) {
131
- const space = contentWidth - truncated.length
132
- return padLeft + " ".repeat(Math.max(0, space)) + truncated + padRight
127
+ /**
128
+ * Pre-compute gutter width to subtract from available column space.
129
+ * Mirrors RowDocumentRenderable._computeGutterWidth logic.
130
+ */
131
+ function computeGutterWidth(rowCount: number, showLineNumbers: boolean): number {
132
+ let width = 0
133
+ if (showLineNumbers) {
134
+ // lineNumberStart defaults to 1, so max line number = rowCount
135
+ const maxLineNum = rowCount
136
+ width += Math.max(String(maxLineNum).length, 1)
133
137
  }
134
- const space = contentWidth - truncated.length
135
- return padLeft + truncated + " ".repeat(Math.max(0, space)) + padRight
136
- }
137
-
138
- function buildBorderLine(
139
- widths: number[],
140
- left: string,
141
- mid: string,
142
- right: string,
143
- fill: string,
144
- ): string {
145
- return left + widths.map((w) => fill.repeat(w)).join(mid) + right
146
- }
147
-
148
- function buildDataLine(cells: string[], widths: number[], alignments: boolean[]): string {
149
- const parts = cells.map((cell, i) => padCell(cell, widths[i], alignments[i]))
150
- return "│" + parts.join("│") + "│"
138
+ width += 1 // signColumnWidth
139
+ width += 1 // gutterPaddingRight (default)
140
+ return width
151
141
  }
152
142
 
153
143
  function formatCellValue(value: unknown): string {
@@ -169,6 +159,7 @@ export function Table({
169
159
  minColumnWidth = DEFAULT_MIN_COL_WIDTH,
170
160
  maxColumnWidth = DEFAULT_MAX_COL_WIDTH,
171
161
  sampleSize = DEFAULT_SAMPLE_SIZE,
162
+ showLineNumbers = true,
172
163
  cursor,
173
164
  selectionStart,
174
165
  selectionEnd,
@@ -176,12 +167,14 @@ export function Table({
176
167
  currentMatchRow,
177
168
  toggledRows,
178
169
  docRef,
170
+ columnWidthMode = "content",
179
171
  }: TableProps) {
180
172
  const { theme } = useTheme()
181
173
  const { width: terminalWidth } = useTerminalDimensions()
182
174
 
183
- // Use terminal width minus margins (1 on each side) if maxWidth not provided
184
- const effectiveMaxWidth = maxWidth ?? terminalWidth - 2
175
+ // Compute available content width: start with total space, subtract margins and gutter
176
+ const gutterWidth = computeGutterWidth(rows.length, showLineNumbers)
177
+ const effectiveMaxWidth = Math.max(0, (maxWidth ?? terminalWidth) - MARGIN * 2 - gutterWidth)
185
178
 
186
179
  const headers = columns.map((column) => column.header ?? column.key)
187
180
  const normalizedRows = rows.map((row) =>
@@ -192,7 +185,10 @@ export function Table({
192
185
  minColumnWidth,
193
186
  maxColumnWidth,
194
187
  sampleSize,
188
+ columnWidthMode,
195
189
  })
190
+
191
+ // Detect right-aligned columns: explicit align prop or auto-detect numeric
196
192
  const alignments = columns.map((column, colIdx) => {
197
193
  if (column.align === "right") return true
198
194
  if (column.align === "left") return false
@@ -201,17 +197,15 @@ export function Table({
201
197
  return numericCount > sampleValues.length / 2
202
198
  })
203
199
 
204
- const topBorder = buildBorderLine(colWidths, "┌", "┬", "┐", "─")
205
- const headerSep = buildBorderLine(colWidths, "├", "┼", "┤", "─")
206
- const bottomBorder = buildBorderLine(colWidths, "└", "┴", "┘", "─")
207
-
208
- const headerLine = buildDataLine(headers, colWidths, alignments)
209
- const dataLines = normalizedRows.map((row) => buildDataLine(row, colWidths, alignments))
210
-
211
200
  const internalRef = useRef<RowDocumentRenderable>(null)
212
201
  const effectiveRef = docRef ?? internalRef
213
202
 
214
203
  const palette: RowDocumentPalette = {
204
+ gutterFg: theme.textMuted,
205
+ gutterBg: theme.backgroundElement,
206
+ cursorSignFg: theme.primary,
207
+ matchSignFg: theme.warning,
208
+ currentMatchSignFg: theme.primary,
215
209
  cursorBg: theme.cursorLine,
216
210
  selectionBg: theme.selection,
217
211
  matchBg: theme.warning,
@@ -233,33 +227,75 @@ export function Table({
233
227
  }, [cursor, selectionStart, selectionEnd, matchingRows, currentMatchRow, toggledRows])
234
228
 
235
229
  return (
236
- <row-document
237
- ref={effectiveRef}
238
- mode="multi"
239
- rowChildOffset={3}
240
- showGutter={false}
241
- palette={palette}
242
- style={{ flexGrow: 1, marginLeft: 1, marginRight: 1, marginBottom: 1 }}
243
- >
244
- <text content={topBorder} fg={theme.border} />
245
- <text content={headerLine} fg={theme.primary} />
246
- <text content={headerSep} fg={theme.border} />
247
- {dataLines.map((line, i) => (
248
- <text key={i} content={line} fg={theme.text} />
249
- ))}
250
- <text content={bottomBorder} fg={theme.border} />
251
- </row-document>
230
+ <box style={{ flexDirection: "column", flexGrow: 1, marginLeft: MARGIN, marginRight: MARGIN, marginBottom: MARGIN }}>
231
+ {/* Fixed header row — outside row-document so it stays visible */}
232
+ <box style={{ flexDirection: "row", flexShrink: 0, paddingLeft: gutterWidth }}>
233
+ {headers.map((h, i) => (
234
+ <text
235
+ key={i}
236
+ content={h}
237
+ style={{ width: colWidths[i], paddingLeft: PADDING, paddingRight: PADDING }}
238
+ fg={theme.primary}
239
+ />
240
+ ))}
241
+ </box>
242
+
243
+ {/* Fixed header underline */}
244
+ <box style={{ flexDirection: "row", flexShrink: 0, paddingLeft: gutterWidth }}>
245
+ {colWidths.map((w, i) => (
246
+ <text
247
+ key={i}
248
+ content={"\u2500".repeat(w - PADDING * 2)}
249
+ style={{ width: w, paddingLeft: PADDING, paddingRight: PADDING }}
250
+ fg={theme.border}
251
+ />
252
+ ))}
253
+ </box>
254
+
255
+ {/* Scrollable data rows */}
256
+ <row-document
257
+ ref={effectiveRef}
258
+ mode="multi"
259
+ rowChildOffset={0}
260
+ showGutter={true}
261
+ showLineNumbers={showLineNumbers}
262
+ signColumnWidth={1}
263
+ palette={palette}
264
+ style={{ flexGrow: 1 }}
265
+ >
266
+ {normalizedRows.map((row, i) => (
267
+ <box key={i} style={{ flexDirection: "row" }}>
268
+ {row.map((cell, j) => {
269
+ const contentWidth = colWidths[j] - PADDING * 2
270
+ const cellWidth = Bun.stringWidth(cell)
271
+ const displayCell = alignments[j] && cellWidth <= contentWidth
272
+ ? " ".repeat(contentWidth - cellWidth) + cell
273
+ : cell
274
+ return (
275
+ <text
276
+ key={j}
277
+ content={displayCell}
278
+ wrapMode="word"
279
+ style={{
280
+ width: colWidths[j],
281
+ paddingLeft: PADDING,
282
+ paddingRight: PADDING,
283
+ }}
284
+ fg={theme.text}
285
+ />
286
+ )
287
+ })}
288
+ </box>
289
+ ))}
290
+ </row-document>
291
+ </box>
252
292
  )
253
293
  }
254
294
 
255
- // Exported for testing
295
+ // Exported for testing and MarkdownView
256
296
  export {
257
297
  computeColumnWidths,
258
- truncate,
259
- padCell,
260
298
  isNumeric,
261
- buildBorderLine,
262
- buildDataLine,
263
299
  sampleRows,
264
300
  }
265
301
  export type { ColumnWidthOptions }
package/src/index.ts CHANGED
@@ -4,11 +4,7 @@ export { ImageView } from "./ImageView.js"
4
4
  export {
5
5
  Table,
6
6
  computeColumnWidths,
7
- truncate,
8
- padCell,
9
7
  isNumeric,
10
- buildBorderLine,
11
- buildDataLine,
12
8
  sampleRows,
13
9
  } from "./Table.js"
14
10
  export type { TableProps, ColumnWidthOptions } from "./Table.js"
@@ -0,0 +1,10 @@
1
+ import { extend } from "@opentui/react"
2
+ import { TextTableRenderable } from "@opentui/core"
3
+
4
+ extend({ "text-table": TextTableRenderable })
5
+
6
+ declare module "@opentui/react" {
7
+ interface OpenTUIComponents {
8
+ "text-table": typeof TextTableRenderable
9
+ }
10
+ }