taxonium-component
Version:
React component for exploring large phylogenetic trees in the browser
129 lines (94 loc) • 3.65 kB
Markdown
`taxonium-component` provides the tree viewer used by [Taxonium](https://taxonium.org) as a reusable React component.
Install the package from npm:
```bash
npm install taxonium-component
```
```jsx
import Taxonium from "taxonium-component";
function App() {
return <Taxonium backendUrl="https://api.cov2tree.org" />;
}
export default App;
```
The Taxonium component now supports event handlers for node interactions:
```jsx
import Taxonium from "taxonium-component";
function App() {
const handleNodeSelect = (nodeId) => {
console.log("Node selected:", nodeId);
};
const handleNodeDetailsLoaded = (nodeId, nodeDetails) => {
console.log("Node details loaded:", nodeId, nodeDetails);
};
return (
<Taxonium
backendUrl="https://api.cov2tree.org"
onNodeSelect={handleNodeSelect}
onNodeDetailsLoaded={handleNodeDetailsLoaded}
/>
);
}
export default App;
```
- **`onNodeSelect`**: Fired when a node is clicked in the tree
- Parameters: `nodeId` (string | number | null) - The ID of the selected node, or null if selection is cleared
- **`onNodeDetailsLoaded`**: Fired when details for a selected node have been loaded from the backend
- Parameters:
- `nodeId` (string | number | null) - The ID of the node
- `nodeDetails` (NodeDetails | null) - The complete node details object containing metadata, mutations, and other information
The Taxonium component accepts the following props:
| Prop | Type | Description |
|------|------|-------------|
| `sourceData` | `SourceData` | Local tree data object with status, filename, filetype, and data |
| `backendUrl` | `string` | URL of the Taxonium backend server |
| `configDict` | `Record<string, unknown>` | Configuration object for customizing the tree |
| `configUrl` | `string` | URL to fetch configuration from |
| `query` | `Query` | Current query/state object |
| `updateQuery` | `(q: Partial<Query>) => void` | Function to update the query state |
| `overlayContent` | `React.ReactNode` | Custom content to overlay on the tree |
| `setAboutEnabled` | `(val: boolean) => void` | Control the about panel visibility |
| `setOverlayContent` | `(content: React.ReactNode) => void` | Dynamically set overlay content |
| `setTitle` | `(title: string) => void` | Set the tree title |
| `onNodeSelect` | `(nodeId: string \| number \| null) => void` | Handle node selection events |
| `onNodeDetailsLoaded` | `(nodeId: string \| number \| null, nodeDetails: NodeDetails \| null) => void` | Handle node details loaded events |
```html
<div id="root"></div>
<!-- Peer dependencies -->
<script src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>
<!-- Taxonium component -->
<script src="https://unpkg.com/taxonium-component"></script>
<script>
const sourceData = {
status: "loaded",
filename: "test.nwk",
data: "((A:0.1,B:0.2):0.3,(C:0.4,D:0.5):0.6);",
filetype: "nwk",
};
ReactDOM.render(
React.createElement(Taxonium, { sourceData }),
document.getElementById("root")
);
</script>
```
To build the component from source:
```bash
cd taxonium_component
npm install
npm run build
```
The compiled files will appear in the `dist` directory.
A Storybook demo can be started locally with:
```bash
npm run storybook
```
This will launch an example at [http://localhost:6006](http://localhost:6006).