From fce6dbf58470a2cf12c17f18454e48d4e625b2c3 Mon Sep 17 00:00:00 2001 From: kamiazya Date: Tue, 12 May 2020 20:51:49 +0900 Subject: [PATCH 1/2] use dynamic import wasm module --- rollup.build.ts | 1 + src/hooks/use-rendered.ts | 11 ++++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/rollup.build.ts b/rollup.build.ts index b60686e..1f2c8cc 100644 --- a/rollup.build.ts +++ b/rollup.build.ts @@ -22,6 +22,7 @@ async function build({ typescript({ tsconfigOverride: { compilerOptions: { + module: 'ESNext', declaration, }, }, diff --git a/src/hooks/use-rendered.ts b/src/hooks/use-rendered.ts index 083c086..ca1032d 100644 --- a/src/hooks/use-rendered.ts +++ b/src/hooks/use-rendered.ts @@ -1,5 +1,4 @@ -import { useState, useEffect } from 'react'; -import { graphviz } from '@hpcc-js/wasm'; +import { useState, useEffect, useMemo } from 'react'; export type Format = 'svg' | 'dot' | 'json' | 'dot_json' | 'xdot_json'; @@ -24,11 +23,9 @@ export const useRendered = ( }, ): string | undefined => { const [rendered, setRendered] = useState(); + const graphviz = useMemo(() => import('@hpcc-js/wasm').then(wasm => wasm.graphviz), []); useEffect(() => { - (async (): Promise => { - const result = await graphviz.layout(dot, format, engine, ext); - setRendered(result); - })(); - }, [dot, engine, format, ext, setRendered]); + graphviz.then(gv => gv.layout(dot, format, engine, ext)).then(setRendered); + }, [dot, engine, format, ext, setRendered, graphviz]); return rendered; }; From cbf2ad3410cf7ed35157c7c0a890198190f0b489 Mon Sep 17 00:00:00 2001 From: kamiazya Date: Tue, 12 May 2020 22:11:19 +0900 Subject: [PATCH 2/2] fix README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0671bf4..e35b8ff 100644 --- a/README.md +++ b/README.md @@ -17,15 +17,15 @@ $ npm install @ts-graphviz/react ### Peer Dependencies -- [React](https://github.com/facebook/react/)(>=16.8) +- [React and ReactDOM](https://github.com/facebook/react/)(>=16.8) - [ts-graphviz](https://github.com/ts-graphviz/ts-graphviz) - [@hpcc-js/wasm](https://www.npmjs.com/package/@hpcc-js/wasm) (Optional) ```bash # Peer Dependencies -$ yarn add react ts-graphviz +$ yarn add react react-dom ts-graphviz # Optional Peer Dependencies -$ yarn add @hpcc-js/wasm react-dom +$ yarn add @hpcc-js/wasm ``` ## DEMO