collab/mermaid/packages/examples/README.mdblame
View source
6dd74de1# @mermaid-js/examples
6dd74de2
6dd74de3The `@mermaid-js/examples` package contains a collection of examples used by tools like [mermaid.live](https://mermaid.live) to help users get started with new diagrams.
6dd74de4
6dd74de5You can duplicate an existing diagram example file, e.g., `packages/examples/src/examples/flowchart.ts`, and modify it with details specific to your diagram.
6dd74de6
6dd74de7Then, import the example in the `packages/examples/src/index.ts` file and add it to the `examples` array.
6dd74de8
6dd74de9Each diagram should have at least one example, which should be marked as the default. It's a good idea to add more examples to showcase different features of the diagram.
6dd74de10
6dd74de11## Usage
6dd74de12
6dd74de13```bash
6dd74de14pnpm add @mermaid-js/examples
6dd74de15```
6dd74de16
6dd74de17A sample usage of the package in mermaid.live, to get the default example for every diagram type:
6dd74de18
6dd74de19```ts
6dd74de20import { diagramData } from '@mermaid-js/examples';
6dd74de21
6dd74de22type DiagramDefinition = (typeof diagramData)[number];
6dd74de23
6dd74de24const isValidDiagram = (diagram: DiagramDefinition): diagram is Required<DiagramDefinition> => {
6dd74de25 return Boolean(diagram.name && diagram.examples && diagram.examples.length > 0);
6dd74de26};
6dd74de27
6dd74de28export const getSampleDiagrams = () => {
6dd74de29 const diagrams = diagramData
6dd74de30 .filter((d) => isValidDiagram(d))
6dd74de31 .map(({ examples, ...rest }) => ({
6dd74de32 ...rest,
6dd74de33 example: examples?.filter(({ isDefault }) => isDefault)[0],
6dd74de34 }));
6dd74de35 const examples: Record<string, string> = {};
6dd74de36 for (const diagram of diagrams) {
6dd74de37 examples[diagram.name.replace(/ (Diagram|Chart|Graph)/, '')] = diagram.example.code;
6dd74de38 }
6dd74de39 return examples;
6dd74de40};
6dd74de41```