Skip to content

Commit fe20d6c

Browse files
committed
feat: direct ref
1 parent a26f503 commit fe20d6c

3 files changed

Lines changed: 14 additions & 29 deletions

File tree

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
},
1919
"homepage": "https://github.com/malloydata/malloy-render-react#readme",
2020
"dependencies": {
21-
"@malloydata/db-duckdb": "^0.0.144",
22-
"@malloydata/render": "^0.0.144"
21+
"@malloydata/db-duckdb": "^0.0.145",
22+
"@malloydata/render": "^0.0.145"
2323
},
2424
"devDependencies": {
2525
"@types/emscripten": "^1.39.11",

src/malloy-render.tsx

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,32 @@
11
import "@malloydata/render";
2-
import { Result, QueryResult, ModelDef } from "@malloydata/malloy";
2+
import type { MalloyRenderProps } from "@malloydata/render";
33
import React, { useEffect, useRef } from "react";
44

5+
type MalloyRenderElement = HTMLElement & MalloyRenderProps;
6+
57
declare global {
68
namespace JSX {
79
interface IntrinsicElements {
810
"malloy-render": React.DetailedHTMLProps<
911
React.HTMLAttributes<HTMLElement>,
10-
HTMLElement
11-
> & {
12-
result?: Result;
13-
queryResult?: QueryResult;
14-
modelDef?: ModelDef;
15-
}; // todo: malloy render props exports
12+
MalloyRenderElement
13+
>;
1614
}
1715
}
1816
}
1917

20-
type MalloyRenderProps = {
21-
result?: Result;
22-
queryResult?: QueryResult;
23-
modelDef?: ModelDef;
24-
};
25-
2618
export function MalloyRender({
2719
result,
2820
queryResult,
2921
modelDef,
3022
}: MalloyRenderProps) {
31-
const ref = useRef<HTMLDivElement>(null);
23+
const ref = useRef<MalloyRenderElement>(null);
3224
useEffect(() => {
3325
if (ref.current) {
34-
let render = ref.current.querySelector("malloy-render");
35-
if (!render) {
36-
render = document.createElement("malloy-render");
37-
render.result = result;
38-
render.queryResult = queryResult;
39-
render.modelDef = modelDef;
40-
ref.current.appendChild(render);
41-
}
42-
render.result = result;
43-
render.queryResult = queryResult;
44-
render.modelDef = modelDef;
26+
ref.current.result = result;
27+
ref.current.queryResult = queryResult;
28+
ref.current.modelDef = modelDef;
4529
}
4630
}, [result, queryResult, modelDef]);
47-
return <div ref={ref} />;
31+
return <malloy-render ref={ref} />;
4832
}

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"lib": ["es6", "dom"],
1616
"declaration": true,
1717
"isolatedModules": true,
18-
"noEmit": true
18+
"noEmit": true,
19+
"skipLibCheck": true
1920
},
2021
"include": ["./src"],
2122
"exclude": ["node_modules", "dist"]

0 commit comments

Comments
 (0)