Skip to content

Commit 53e3d9f

Browse files
authored
feat: add table auto resizer (#31)
1 parent f183cff commit 53e3d9f

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
lines changed

eslint.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default defineConfig([
3232
"react/react-in-jsx-scope": "off",
3333
"react-hooks/rules-of-hooks": "error",
3434
"react-hooks/exhaustive-deps": "error",
35+
"no-console": "error",
3536
},
3637
},
3738
{

src/markdown.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { defaultRenderers } from "./renderers";
1111
import { Renderers } from "./renderers/renderers";
1212
import { RootRenderer } from "./renderers/root";
1313
import { defaultTheme } from "./themes";
14-
import { Styles, Theme, mergeStyles } from "./themes/themes";
14+
import { Styles, mergeStyles } from "./themes/themes";
1515

1616
const parser = unified().use(remarkParse).use(remarkGfm);
1717

@@ -25,7 +25,6 @@ function extractDefinitions(tree: Root): Record<string, Definition> {
2525

2626
export type MarkdownProps = {
2727
markdown: string;
28-
theme?: Theme;
2928
customRenderers?: Partial<Renderers>;
3029
customStyles?: Partial<Styles>;
3130
onCodeCopy?: (code: string) => void;
@@ -34,7 +33,6 @@ export type MarkdownProps = {
3433

3534
export const Markdown = ({
3635
markdown,
37-
theme,
3836
customRenderers,
3937
customStyles,
4038
onCodeCopy,
@@ -59,10 +57,9 @@ export const Markdown = ({
5957

6058
const colorScheme = useColorScheme();
6159
const mode = colorScheme === "dark" ? "dark" : "light";
62-
const mergedTheme = theme ?? defaultTheme;
6360
const mergedStyles = mergeStyles(
64-
mergedTheme.global,
65-
mergedTheme[mode],
61+
defaultTheme.global,
62+
defaultTheme[mode],
6663
customStyles,
6764
);
6865

src/renderers/code.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ export const CodeRenderer = ({ node }: RendererArgs<Code>): ReactNode => {
158158
setCopied(true);
159159
setTimeout(() => setCopied(false), 2000);
160160
}}
161+
disabled={!onCodeCopy}
162+
style={{
163+
opacity: onCodeCopy ? 1 : 0,
164+
}}
161165
>
162166
<View style={{ flexDirection: "row", alignItems: "center", gap: 4 }}>
163167
{copied ? (

src/renderers/table.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
createContext,
55
useCallback,
66
useContext,
7+
useLayoutEffect,
78
useMemo,
89
useState,
910
} from "react";
@@ -60,7 +61,7 @@ const TableContextProvider = ({
6061
(index: number, width: number) => {
6162
setColumnWidths((prev) => {
6263
const minWidth = Math.max(contentSize.width / columnCount, 64);
63-
const maxWidth = Math.min(contentSize.width, 180);
64+
const maxWidth = 180;
6465
const old = prev[index] ?? 0;
6566
const newWidth = Math.min(
6667
Math.max(Math.max(old, width), minWidth),
@@ -79,6 +80,12 @@ const TableContextProvider = ({
7980
[contentSize, columnCount, setColumnWidths],
8081
);
8182

83+
useLayoutEffect(() => {
84+
for (let i = 0; i < columnWidths.length; i++) {
85+
setColumnWidth(i, columnWidths[i] ?? 0);
86+
}
87+
}, [columnWidths, setColumnWidth]);
88+
8289
return (
8390
<TableContext.Provider
8491
value={{ rowCount, columnCount, columnWidths, setColumnWidth }}

0 commit comments

Comments
 (0)