Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Title support via front matter for ER, state, class, git, and graph diagrams #3706

Merged
merged 5 commits into from Nov 21, 2022

Conversation

MasonM
Copy link
Contributor

@MasonM MasonM commented Oct 21, 2022

📑 Summary

This adds title support for all diagram types currently lacking support for titles (excluding "info" and "error") using Jekyll-style YAML frontmatter blocks. C4C diagrams, pie charts, gantt charts, requirement diagrams, sequence diagrams, and user journey diagrams already have title support.

Resolves #1433

📏 Design Decisions

  1. This increases the size of mermaid.min.js by 33KB and mermaid.esm.min.js by 42KB:
    Before:
    $ ls packages/mermaid/dist/mermaid*min*js -la
    -rw-rw-r-- 1 masonm masonm 1591427 Nov 19 10:27 packages/mermaid/dist/mermaid.esm.min.mjs
    -rw-rw-r-- 1 masonm masonm 1176130 Nov 19 10:27 packages/mermaid/dist/mermaid.min.js
    
    After:
    $ ls packages/mermaid/dist/mermaid*min*js -la
    -rw-rw-r-- 1 masonm masonm 1633782 Nov 19 10:25 packages/mermaid/dist/mermaid.esm.min.mjs
    -rw-rw-r-- 1 masonm masonm 1208723 Nov 19 10:25 packages/mermaid/dist/mermaid.min.js
    
    I avoided using gray-matter or similar packages to minimize the bundle size increase and avoid the maintenance hassles associated with new dependencies.
  2. The parser uses the failsafe schema to keep things simple and avoid the Norway problem.
  3. Only support for titles in frontmatter have been added. Support for other types of metadata should be done after this is merged IMO, since that will require more discussion (as noted by @sidharthv96).
  4. I didn't deprecate the existing title syntax for those diagram types that already support titles, since I'm not sure which docs to update, and that would make this PR too big IMO. I think that should be done in a follow-up PR.
  5. I added a titleTopMargin configuration option for every diagram type for consistency. Making it a global option might make more sense, but that could raise backwards-compatibility concerns (e.g. what if both gantt.titleTopMargin and the global titleTopMargin are set).

📋 Tasks

Make sure you

  • 📖 have read the contribution guidelines
  • 💻 have added unit/e2e tests (if appropriate)
  • 🔖 targeted develop branch

@MasonM
Copy link
Contributor Author

MasonM commented Oct 21, 2022

The failure in the "E2E / build (18.x, 1) (pull_request) " check appears unrelated:

Warning: Failed to download action 'https://api.github.com/repos/actions/setup-node/tarball/8c91899e586c5b171469028077307d293428b516'. Error: Response status code does not indicate success: 500 (Internal Server Error).

Copy link
Member

@aloisklink aloisklink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The failure in the "E2E / build (18.x, 1) (pull_request) " check appears unrelated

Yep! Just seems to be GitHub's servers being flakey.

This isn't a proper review (I'm not an expert on the rendering code, so will leave that to other reviewers), but from one I've seen, it all looks good! Thanks for adding tests and demo examples!

Potential improvements:

  • Can you add a title example to the packages/mermaid/src/docs/classDiagram.md?

packages/mermaid/src/diagrams/class/classRenderer-v2.js Outdated Show resolved Hide resolved
@MasonM
Copy link
Contributor Author

MasonM commented Oct 23, 2022

Thanks for the review @aloisklink! Extracting the rendering logic to a helper method sounds reasonable, so I went ahead and did that and added tests for it. I also updated the docs for packages/mermaid/src/docs/classDiagram.md

Copy link
Member

@aloisklink aloisklink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!

Again, I'm not super experienced with SVG/d3/rendering code, so another reviewer will need to double-check that.

As a quick example, this is what the new title in the http://localhost:9000/git.html demo looks like:

demos/git.html with title

@knsv
Copy link
Collaborator

knsv commented Oct 25, 2022

Wow Mason! A big job, I appreciate changes that align diagrams. One of the challenges going forward is keeping the diagrams in line. Will do a deep dive here as it affect many diagrams.

@knsv knsv self-requested a review October 25, 2022 12:53
Copy link
Collaborator

@knsv knsv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @MasonM!

Great job but we are not there yet! I have reviewed you changes and found some issues. When you introduced the title keyword you also unwittingly made it impossible to create a state named title, a flowchart with an id of title/usage of title in a subgraph title or an er diagram with an entity title.

We are very restrictive with changes that would break existing diagrams. It is one thing to introduce a change leading to a developer having update the integration of mermaid on a site but whole other thing with an update that is forcing authors to go in and update the already written documentation.

On possible fix for the issue would be, to be more restrictive with scoping out what a title is, in the lexer. The solutions will probably differ between the different diagrams though. Another avenue could be to use the different states in the parser to know if a title could be expected.

One example of a breaking diagram:

erDiagram
    title ||--o{ ORDER : places
    CUSTOMER {
        string title
        string custNumber
        string sector
    }
    ORDER ||--|{ LINE-ITEM : title
    ORDER {
        int orderNumber
        string deliveryAddress
    }
    LINE-ITEM {
        string productCode
        int quantity
        float pricePerUnit
    }

Good luck,
Knut

@MasonM
Copy link
Contributor Author

MasonM commented Oct 26, 2022

@knsv Thanks for the review! I understand the important of retaining backwards-compatibility, but I'd assumed there was some leeway here, since the changes that introduced accTitle in #3008 were also breaking changes, for the same reason as these changes (e.g. it broke state diagrams with a state named accTitle:). It's unlikely those changes affected anyone, since accTitle is an uncommon phrase, but it's still technically possible.

If the policy is that backwards-incompatible changes are strictly forbidden, then the only option I can see is using a directive, e.g.:

graph TD
    %%{ title: 'testing' }%%
    foo --> bar

That's cumbersome, but it's guaranteed to be backwards-compatible, and all the diagrams already support directives. I can go ahead and implement that if you want, but if there is some leeway here, then changing title to title: or using slightly different syntax would probably be preferable. Let me know what you'd like.

@knsv
Copy link
Collaborator

knsv commented Oct 26, 2022

Hi! Yeah, thats the price of an organically growing syntax. If I started today I would make the syntax a little different so that states in the parser can be applied easier but it is as it is.

I am thinking that restricting the lexer regarding the title could be a good place to start. Right now you use "title"\s[^#\n;]+ for flowcharts. So this makes the parser interpret title followed by space and anything except #, ; or new-line as being a title. Here you could be more strict and force a space and a quote. You could also require an end quote before new line before classifying the string a title.

Hope this helps!

@MasonM
Copy link
Contributor Author

MasonM commented Oct 26, 2022

I am thinking that restricting the lexer regarding the title could be a good place to start. Right now you use "title"\s[^#\n;]+ for flowcharts. So this makes the parser interpret title followed by space and anything except #, ; or new-line as being a title.

That's still a breaking change for some diagram types. Consider this state diagram, which currently renders as a diagram with the states title and "foo", but would instead just show the title "foo" after such a change.

It sounds like you're okay with "minor" breaking changes, but the definition of "minor" is quite subjective. That's perfectly reasonable, but I can't read your mind, and I'd prefer not to guess and spend a lot of time implementing a new syntax, only to be told it won't be accepted because it's too big of a breaking change. Could you please tell me the exact grammar you'd like to see for each diagram type?

@knsv
Copy link
Collaborator

knsv commented Oct 26, 2022

You are right, that solution will only work for flowcharts and er diagrams. We need a different solution for state diagrams.

I would to start with proposing to delay State diagrams a bit so that we can get this done in October as a part of Hacktoberfest.

@MasonM
Copy link
Contributor Author

MasonM commented Oct 27, 2022

@knsv It's going to break class diagrams too. Example.

As I see it, there's four options here:

  1. Accept there's going to be some breakage and stick with the current syntax, as was done with accTitle in 2732 accesible charts #3008
  2. Go with directives, as I suggested earlier. This has zero chance of breaking anything but it's cumbersome.
  3. Go with the the title "test" syntax you suggested, but only for flowcharts and ER diagrams, and revert all the changes in this PR for all the other diagram types. This means Mermaid will end up having at least three different syntaxes for defining titles: title test, title "test", and whatever ends up being chosen for the other diagram types. That seems awfully confusing to me.
  4. Close this PR and abandon the whole thing

Which of these 4 options would you prefer?

@knsv
Copy link
Collaborator

knsv commented Oct 27, 2022

Thanks for your analysis. Some feedback:
1: This would be nice but title is a much to common word. Many diagrams will break. I don't think this option is realistic. We cant do this.
2: I agree that this one is safe but I also agree with you that it is cumbersome. I think that no one will understand how to use it.
3. The point is to make the syntax standardised between the diagrams. Then this is not suitable either.
4. I can see that this is growing a bit larger then you perhaps knew when starting out on this journey. I understand if you think this is too complicated in all the wrong ways but the essence of this issue is sound and I think we should solve it. Your help would be appreciated.

Some broader ideas:

  • Let's deprecate the current way to set the title in the diagrams that can set the title. In practice, keep it in the parsers indefinitely in the old way but remove it from the documentation.
  • These standardised functions should use the common db instead of putting the same function in all diagrams databases.
  • Perhaps the syntax could be generic to be utilised for future properties as well, something like this perhaps:
    • _set: title "The title"
    • _set: otherProperty "value"

What do you think?

@MasonM
Copy link
Contributor Author

MasonM commented Oct 28, 2022

Perhaps the syntax could be generic to be utilised for future properties as well, something like this perhaps:

That's a good idea. Having special syntax for distinguishing metadata (like the title) from the actual diagram data is likely be useful in the future. Implementing it in a backwards-compatible way will be tricky, but it's only going to get more challenging as Mermaid continues to grow and adds more diagrams and syntax.

State diagrams are particularly challenging due to the lax grammar, and _set: title "foo" won't work since it's currently parsed as states _set and title (example). A possible alternative is just prefixing it with a hyphen (i.e. -title foo), since hyphens aren't allowed in state names. From a quick look, it doesn't appear that syntax breaks any of the other diagram types either, but I'll need to spend more time this weekend to check. If it does work, then it could be generalized to the grammar "-" metadataName "\s+" metadataValue for representing arbitrary metadata.

@aloisklink
Copy link
Member

That's a good idea. Having special syntax for distinguishing metadata (like the title) from the actual diagram data is likely be useful in the future. Implementing it in a backwards-compatible way will be tricky, but it's only going to get more challenging as Mermaid continues to grow and adds more diagrams and syntax.

Hmmmm, what about having an optional YAML header in a mermaid definition?

In many markdown software, you can optionally add a YAML header to add Markdown metadata, e.g. something like:

---
title: My title
date: 1970-01-01
author: FirstName LastName
---

# Hello world

The rules would be the same as in Markdown, it must be the first thing in a Mermaid definition, it might be valid YAML, and it must be between --- lines, e.g.

Here is my mermaid definition:

```mermaid
---
title: my graph
author: FirstName LastName
---
flowchart LR
    A[Hard] -->|Text| B(Round)
    B --> C{Decision}
```

Benefits:

  • YAML is well known to most people that write Markdown
  • YAML has a bunch of helpful features, e.g. the ability to write very long strings, comments, nested arrays/objects
  • If we stick it before the graph definition, we could have a separate pre-processor that runs before the graphs, which would be easier to code.

@weedySeaDragon
Copy link
Contributor

weedySeaDragon commented Oct 29, 2022

Jumping in (since I'm currently working with the state diagram parser) --

Why is title: not acceptable? I've read through the comments but have somehow missed why that isn't acceptable.

Is it only the problem with the state diagrams? If so, it's not hard to write a rule that looks for not just for : but for the entire string title: .

@aloisklink
Copy link
Member

Why is title: not acceptable? I've read through the comments but have somehow missed why that isn't acceptable.

I believe it's because of backwards compatibility, there's a pretty good chance somebody has already created a mermaid state diagram that uses title: in it, and so changing the behavior of title: might break their diagrams.

E.g. something like:

```mermaid
stateDiagram
  title: Example state diagram
  my2ndState: My second state
  title --> my2ndState
```
stateDiagram
  title
  title: Example state diagram
  my2ndState: My second state
  title --> my2ndState

Or

```mermaid
stateDiagram
  title
  description
  title --> description
```
stateDiagram
  title
  description
  title --> description

@weedySeaDragon
Copy link
Contributor

Ah Makes total sense. Thanks for spelling that out for me @aloisklink .

@MasonM
Copy link
Contributor Author

MasonM commented Oct 31, 2022

Okay, I couldn't find anything that would break with the -title foo syntax, so I went ahead and pushed a commit to switch to that, but I do like @aloisklink's suggestion of using a YAML front matter block. I believe that was pioneered by Jekyll, and is also supported by Pandoc. It has a few disadvantages, however:

  1. The syntax is significantly more verbose than the "-" metadataName "\s+" metadataValue syntax, but it's definitely more readable, which is more important IMO.

  2. We'd need an extra package to handle parsing the front matter block, which has both performance and security ramifications. There is an NPM module called front-matter, but it's 171KB minified according to Bundlephobia, which is probably unacceptable. The js-yaml package is ~40KB minified, and is already an indirect dev dependency of Mermaid:

    js-yaml: 4.1.0

    40KB is an upper-bound estimate for the bundle size increase. A good portion of js-yaml is devoted to the serialization logic, which we obviously don't need, and Vite should be able to tree-shake that out, reducing the final size significantly.

    There was an arbitrary code execution vulnerability in js-yaml v3 a few years ago (advisory), which is worrisome, but it appears v4 made a lot of changes to improve security.

  3. Directives are in JSON format, so having front matter in YAML could be a little confusing

Personally, I think YAML is probably the right way to go. If @knsv agrees, then I can go ahead and implement that using js-yaml.

@knsv
Copy link
Collaborator

knsv commented Nov 1, 2022

I am all for it!

Further down the line if things work out I could see directives pulled in to this syntax. The old syntax could remain for backwards compatibility, this would be the documented one. The size increase is worry-some as mermaid is on the heavy side already.

I am convinced that having a preprocessing step is the method to use. This will eliminate conflicts with the diagrams.

@AssassinLV
Copy link

AssassinLV commented Nov 4, 2022

Why not then just:

```mermaid
title: my graph
author: FirstName LastName
flowchart LR
    A[Hard] -->|Text| B(Round)
    B --> C{Decision}
```

without encapsulating in --- as it would still be above the actual diagram definition.
This would work even if you create diagram type 'title', because of the column. Also only requirement is for the properties to be above the diagram definition - so you could do formatting like:

```mermaid
%% properties
title: my graph
author: FirstName LastName

flowchart LR
    A[Hard] -->|Text| B(Round)
    B --> C{Decision}
```

@aloisklink
Copy link
Member

Directives are in JSON format, so having front matter in YAML could be a little confusing

JSON is valid YAML, so it should be easy to migrate directives to YAML, if we want to support that.

without encapsulating in --- as it would still be above the actual diagram definition

It makes sense if we're using YAML for a few reasons:

  • Everybody else does it for YAML headers (e.g. https://docusaurus.io/docs/markdown-features#front-matter)
  • --- is part of the YAML and RFC 2046 spec, and I believe you can tell a YAML parser to just scan the bit between ---s (not 100% sure).
  • It's easier to code that way, we can just say that if a mermaid definition starts with a ---, run the YAML pre-parser, else continue.
    • It will also make syntax highlighting for mermaid code easier!

Basically, using --- and YAML should hopefully mean less code to write!

@sidharthv96
Copy link
Member

+1 for yaml header.
We'll have to draft a spec for what goes into the yaml.

@aloisklink
Copy link
Member

We'll have to draft a spec for what goes into the yaml.

It might be worth specifying this using https://json-schema.org/, since YAML can almost always be converted to JSON (I think the only issue is with circular references, but those are very rare).

We could then use https://www.npmjs.com/package/json-schema-to-typescript to easily convert these into TypeScript types.

And we could use those JSON Schemas for input validation, and print good errors if something is invalid (e.g. what Webpack does).

If I have time, I'm considering moving the Mermaid config to JSON Schema too, since the way it is currently documented is incompatible with the new Vitepress website.

@MasonM MasonM force-pushed the feature/1433_title_support branch 2 times, most recently from e5ff2d4 to 7d5dc03 Compare November 19, 2022 04:10
Copy link
Member

@aloisklink aloisklink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks amazing! And you've made this PR pretty small too, which means it's a pretty good change!

Some minor nit-picks from me, but they're mostly just nit-picks.

The only required change is to add a test for a YAML that contains --- on it's own line, e.g.:

title: |
    My multi-line string
    ---
    ^^^ Has an end-document string in it in it's own line

It's a rare edge-case, but we might run into it if we make a flowchart mermaid and we want to add a YAML front-matter example to a description :)

We should also change the PR title to saying something about YAML frontmatters. E.g. something like: Add YAML frontmatter to set titles in diagrams. It might also be worth copying some of #3706 (comment) to the main PR description with a quick example.

Comment on lines +37 to +42
it('handles frontmatter with multiple delimiters', () => {
const db = dbMock();
const text = `---\ntitle: foo---bar\n---\ndiagram\n---\ntest`;
expect(extractFrontMatter(text, db)).toEqual('diagram\n---\ntest');
expect(db.setDiagramTitle).toHaveBeenCalledWith('foo---bar');
});
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a test for a string with a --- in it on it's own line, e.g like the following YAML:

title: |
    My multi-line string
    ---
    ^^^ Has an end-document string in it in it's own line
description: Some other junk here
# but what about a comment that has a --- in it?

It might be that the REGEX gets confused by it.

If it's too difficult to handle, it might just be easier to use a library to parse the front-matter like https://github.com/jonschlinkert/gray-matter, although that project hasn't been updated for a while, so 🤷

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see any way of supporting that syntax without serious compromises:

  1. Disallowing leading whitespace before the delimiters would work (that's what gray-matter does), but leading whitespace before a diagram is very common, and disallowing it means you can't indent a diagram. e.g.
    <pre class="mermaid">
    ---
    title: This is a complicated flow
    ---
    graph LR
    accTitle: This is a complicated flow
  2. Changing the (.*?) to (.*) isn't an option because that will break compatibility with diagrams containing ---
  3. Trying to match the indent level of the closing delimiter with that of the opening delimiter won't work because leading whitespace is stripped in
    // transforms the html to pure text
    txt = utils
    .entityDecode(txt)
    .trim()
    .replace(/<br\s*\/?>/gi, '<br/>');

Do you have any other ideas? If not, I think we should consider this an edge case and not support it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disallowing leading whitespace before the delimiters would work

My gut feeling is that this is the approach we should go for (as that's that is what YAML spec v1.0 section 4.3.1 says), but you are right that many people do indent the diagrams.

We could add a dedent to https://github.com/mermaid-js/mermaid/blob/70f024735b57ac5b29b5c339ac871078ab46fa5a/packages/mermaid/src/mermaid.ts#LL149-L153. It would only apply to HTML however.

We could also add dedent inside parse(str) somewhere (or other functions that takes the Mermaid string directly), e.g. right before:

const diagram = new Diagram(text, parseError);

But that's not super required. People calling the JavaScript API can use dedent themselves if they want to use indented strings and the YAML frontmatter, e.g.

import { dedent } from 'ts-dedent';
const myDiagram = dedent`
  ---
  title: This YAML is indented by two spaces.
  ---
  flowchart
    "This diagram is indented by two spaces."
`;

const svg = mermaid.render("mermaid-render-element", myDiagram);

Copy link
Contributor Author

@MasonM MasonM Nov 19, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, alright, if you're sure that's the way to go, I implemented that in a11ab3d

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you're sure that's the way to go

I'm not fully sure! But I'd rather have the parser be too strict at the the beginning, since we can always loosen things later without it being a breaking change. It's much harder to make something stricter later on, as that would be a breaking change.

But I'd be be happy for people to disagree or if they think there's a better way to do things!

I am slightly leaning towards also adding a dedent before parsing the Mermaid HTML in mermaid.init/mermaid.initThrowsErrors so that Mermaid diagrams indented in HTML work, but not for JS code in mermaid.parse. Edit PR created for this in #3859

But that could be a decision for a future PR :)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When adding diagrams in html you inherit the indentation from the tag. This looks better in HTML:

    <pre id="diagram" class="mermaid">
      ---
      title: Example Git diagram
      ---
      gitGraph
        commit
        commit
    </pre>

than:

    <pre id="diagram" class="mermaid">
---
title: Example Git diagram
---
gitGraph
  commit
  commit
    </pre>

Even though it is less compliant with the standard.

I don't see the multi-line issue as a big problem though. My guess is that the user impact of indenting will affect far, far more users then the lack of ability to use --- in the beginning of a a multiline row.

I lean towards the more loose application, better to let the very few users that wants to have the --- in the multiline comment fail instead of irritating the users that want to indent.

But Alois has a fair point. Once we let the cat out of the box, it is out. Lets start with this but I suspect that we need to discuss this more and that we might might want to reverse the a11ab3d commit. That can be outside this PR though. Good job @MasonM Solid!

const parsed: FrontMatterMetadata = yaml.load(matches[1], {
// To keep things simple, only allow strings, arrays, and plain objects.
// https://www.yaml.org/spec/1.2/spec.html#id2802346
schema: yaml.FAILSAFE_SCHEMA,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 This is a good idea!

packages/mermaid/src/diagram-api/frontmatter.ts Outdated Show resolved Hide resolved
packages/mermaid/src/diagram-api/frontmatter.ts Outdated Show resolved Hide resolved
packages/mermaid/src/diagram-api/frontmatter.ts Outdated Show resolved Hide resolved
@MasonM MasonM changed the title feat: Title support for ER, state, class, git, and graph diagrams feat: Title support via front matter for ER, state, class, git, and graph diagrams Nov 19, 2022
@MasonM MasonM requested review from aloisklink and knsv and removed request for knsv and aloisklink November 19, 2022 21:14
Copy link
Member

@aloisklink aloisklink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy with this!

For other reviewers, currently, the YAML must not be indented, e.g.:

<!-- This is fine, no indentation on the YAML --!>
<pre class="mermaid">
---
title: My title
---
flowchart
  my flowchart
</pre>

<!-- This is not fine, there is indentation on the YAML --!>
<pre class="mermaid">
    ---
    title: My title
    ---
    flowchart
        my flowchart
</pre>

It may be worth using dedent to automatically remove the indentation from Mermaid code in HTML, but I'm happy for that to be added in a different PR. See discussion in #3706 (comment) for more info.

@MasonM
Copy link
Contributor Author

MasonM commented Nov 21, 2022

@knsv Could you please review this? Unfortunately, I have very limited additional free time to spend on this, so if this isn't merged soon, I'll have to close it.

@knsv
Copy link
Collaborator

knsv commented Nov 21, 2022

Will review today

@knsv
Copy link
Collaborator

knsv commented Nov 21, 2022

Approving this but lets add dedent. I like that idea. Solves the indentation issue that will annoy some users!

@knsv knsv merged commit 050574f into mermaid-js:develop Nov 21, 2022
fuxingloh pushed a commit to fuxingloh/contented that referenced this pull request Dec 19, 2022
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [mermaid](https://togithub.com/mermaid-js/mermaid) | [`9.2.2` ->
`9.3.0`](https://renovatebot.com/diffs/npm/mermaid/9.2.2/9.3.0) |
[![age](https://badges.renovateapi.com/packages/npm/mermaid/9.3.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/mermaid/9.3.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/mermaid/9.3.0/compatibility-slim/9.2.2)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/mermaid/9.3.0/confidence-slim/9.2.2)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>mermaid-js/mermaid</summary>

###
[`v9.3.0`](https://togithub.com/mermaid-js/mermaid/releases/tag/v9.3.0)

[Compare
Source](https://togithub.com/mermaid-js/mermaid/compare/v9.2.2...v9.3.0)

### Significant Changes

-   25% Smaller
-   New docs
-   Replaces the deprecated and vulnerable `dagre-d3` with `dagre-es`

### Release Notes

- [#&#8203;3778](https://togithub.com/mermaid-js/mermaid/issues/3778)
Adding a hexgon shape
([#&#8203;3834](https://togithub.com/mermaid-js/mermaid/issues/3834))
[@&#8203;knsv](https://togithub.com/knsv)
- [#&#8203;3831](https://togithub.com/mermaid-js/mermaid/issues/3831)
Re-enabling themes for er diagrams
([#&#8203;3837](https://togithub.com/mermaid-js/mermaid/issues/3837))
[@&#8203;knsv](https://togithub.com/knsv)
- [#&#8203;3882](https://togithub.com/mermaid-js/mermaid/issues/3882)
fix for issues with mindmaps with only a single node
([#&#8203;3833](https://togithub.com/mermaid-js/mermaid/issues/3833))
[@&#8203;knsv](https://togithub.com/knsv)
- (chore) remove console stmt in pieDetector
([#&#8203;3840](https://togithub.com/mermaid-js/mermaid/issues/3840))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- (feat) state classDef documentation
([#&#8203;3841](https://togithub.com/mermaid-js/mermaid/issues/3841))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- 3882 edge labels
([#&#8203;3883](https://togithub.com/mermaid-js/mermaid/issues/3883))
[@&#8203;knsv](https://togithub.com/knsv)
- Add GHA that will check links + Fix broken links
([#&#8203;3765](https://togithub.com/mermaid-js/mermaid/issues/3765))
[@&#8203;spier](https://togithub.com/spier)
- Add official vim plugin to list in integrations
([#&#8203;3847](https://togithub.com/mermaid-js/mermaid/issues/3847))
[@&#8203;craigmac](https://togithub.com/craigmac)
- Add package visualizations
([#&#8203;3823](https://togithub.com/mermaid-js/mermaid/issues/3823))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Add support for [@&#8203;include](https://togithub.com/include) in
docs
([#&#8203;3863](https://togithub.com/mermaid-js/mermaid/issues/3863))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- CI: disable pinning dependencies
([#&#8203;3735](https://togithub.com/mermaid-js/mermaid/issues/3735))
[@&#8203;aloisklink](https://togithub.com/aloisklink)
- Defects/issue 3878
([#&#8203;3880](https://togithub.com/mermaid-js/mermaid/issues/3880))
[@&#8203;MrCoder](https://togithub.com/MrCoder)
- Feat: Add aria-describedby, aria-roledescription
([#&#8203;3808](https://togithub.com/mermaid-js/mermaid/issues/3808))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- Fix
[#&#8203;3799](https://togithub.com/mermaid-js/mermaid/issues/3799):
Remove `type` from package.json
([#&#8203;3802](https://togithub.com/mermaid-js/mermaid/issues/3802))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Fix for
[#&#8203;3835](https://togithub.com/mermaid-js/mermaid/issues/3835),
makes it possible to style path elements
([#&#8203;3836](https://togithub.com/mermaid-js/mermaid/issues/3836))
[@&#8203;knsv](https://togithub.com/knsv)
- Fix typos
([#&#8203;3820](https://togithub.com/mermaid-js/mermaid/issues/3820))
[@&#8203;endolith](https://togithub.com/endolith)
- Housekeeping with eslint-unicorn
([#&#8203;3845](https://togithub.com/mermaid-js/mermaid/issues/3845))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Integrations added - Visual Studio Code \[Polyglot Interactive
Notebooks]
([#&#8203;3821](https://togithub.com/mermaid-js/mermaid/issues/3821))
[@&#8203;dfinke](https://togithub.com/dfinke)
- Mindmap integration docs
([#&#8203;3810](https://togithub.com/mermaid-js/mermaid/issues/3810))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Reduce mermaid size by 31%
([#&#8203;3825](https://togithub.com/mermaid-js/mermaid/issues/3825))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Remove extra arrow and adjust cross position
([#&#8203;3641](https://togithub.com/mermaid-js/mermaid/issues/3641))
[@&#8203;ishuen](https://togithub.com/ishuen)
- Replace `dagre`/`dagre-d3` with `dagre-d3-es`
([#&#8203;3809](https://togithub.com/mermaid-js/mermaid/issues/3809))
[@&#8203;aloisklink](https://togithub.com/aloisklink)
- Revert "Added pie"
([#&#8203;3842](https://togithub.com/mermaid-js/mermaid/issues/3842))
[@&#8203;pbrolin47](https://togithub.com/pbrolin47)
- Switch CDN to unpkg.com
([#&#8203;3777](https://togithub.com/mermaid-js/mermaid/issues/3777))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Switch back to jsdelivr
([#&#8203;3873](https://togithub.com/mermaid-js/mermaid/issues/3873))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Use `github-dark` to highlight fence blocks in vitepress docs
([#&#8203;3807](https://togithub.com/mermaid-js/mermaid/issues/3807))
[@&#8203;aloisklink](https://togithub.com/aloisklink)
- Use current mermaid version in docs.
([#&#8203;3846](https://togithub.com/mermaid-js/mermaid/issues/3846))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- Use stylis to prepend idSelector
([#&#8203;3829](https://togithub.com/mermaid-js/mermaid/issues/3829))
[@&#8203;DanInProgress](https://togithub.com/DanInProgress)
- bug: State diagram fix classes type
([#&#8203;3798](https://togithub.com/mermaid-js/mermaid/issues/3798))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- bug: change shiki getHighlighter import
([#&#8203;3804](https://togithub.com/mermaid-js/mermaid/issues/3804))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- chore(deps): remove dependency on `graphlib`
([#&#8203;3861](https://togithub.com/mermaid-js/mermaid/issues/3861))
[@&#8203;aloisklink](https://togithub.com/aloisklink)
- chore(deps): update all non-major dependencies (minor)
([#&#8203;3905](https://togithub.com/mermaid-js/mermaid/issues/3905))
[@&#8203;renovate](https://togithub.com/renovate)
- chore(deps): update all non-major dependencies (minor)
([#&#8203;3791](https://togithub.com/mermaid-js/mermaid/issues/3791))
[@&#8203;renovate](https://togithub.com/renovate)
- chore(deps): update lycheeverse/lychee-action action to v1.5.4
([#&#8203;3827](https://togithub.com/mermaid-js/mermaid/issues/3827))
[@&#8203;renovate](https://togithub.com/renovate)
- chore(deps): update pnpm to v7.17.0
([#&#8203;3828](https://togithub.com/mermaid-js/mermaid/issues/3828))
[@&#8203;renovate](https://togithub.com/renovate)
- chore(deps): update pnpm to v7.17.1
([#&#8203;3862](https://togithub.com/mermaid-js/mermaid/issues/3862))
[@&#8203;renovate](https://togithub.com/renovate)
- chore(docs): Auto build docs
([#&#8203;3547](https://togithub.com/mermaid-js/mermaid/issues/3547))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- chore: Housekeeping
([#&#8203;3783](https://togithub.com/mermaid-js/mermaid/issues/3783))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- chore: Merge master to develop
([#&#8203;3780](https://togithub.com/mermaid-js/mermaid/issues/3780))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- chore: clean up code in mermaidAPI render() and write specs/tests
([#&#8203;3684](https://togithub.com/mermaid-js/mermaid/issues/3684))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- chore: delete functions not used in diagrams/c4 code (dead code)
([#&#8203;3871](https://togithub.com/mermaid-js/mermaid/issues/3871))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- comments in states are skipped now
([#&#8203;3762](https://togithub.com/mermaid-js/mermaid/issues/3762))
[@&#8203;avijit1258](https://togithub.com/avijit1258)
- doc: remove links from atom.io; add note Atom has been archived
([#&#8203;3899](https://togithub.com/mermaid-js/mermaid/issues/3899))
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon)
- docs: refactor Theming doc
([#&#8203;3889](https://togithub.com/mermaid-js/mermaid/issues/3889))
[@&#8203;huynhicode](https://togithub.com/huynhicode)
- feat: Redirect old documentation links.
([#&#8203;3797](https://togithub.com/mermaid-js/mermaid/issues/3797))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)
- feat: Title support via front matter for ER, state, class, git, and
graph diagrams
([#&#8203;3706](https://togithub.com/mermaid-js/mermaid/issues/3706))
[@&#8203;MasonM](https://togithub.com/MasonM)
- fix(deps): update all non-major dependencies (patch)
([#&#8203;3790](https://togithub.com/mermaid-js/mermaid/issues/3790))
[@&#8203;renovate](https://togithub.com/renovate)
- fix(deps): update dependency rollup to v3
([#&#8203;3674](https://togithub.com/mermaid-js/mermaid/issues/3674))
[@&#8203;renovate](https://togithub.com/renovate)
- fix: LintStaged
([#&#8203;3844](https://togithub.com/mermaid-js/mermaid/issues/3844))
[@&#8203;sidharthv96](https://togithub.com/sidharthv96)

🎉 **Thanks to all contributors helping with this release!** 🎉

#### What's Changed

- chore(deps): update actions/checkout action to v3 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3645
- chore(deps): update actions/setup-node action to v3 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3646
- Remove inconsistent and deprecated semicolons by
[@&#8203;revolter](https://togithub.com/revolter) in
[mermaid-js/mermaid#3657
- Fix windows paths for `docs:build` by
[@&#8203;arpansaha13](https://togithub.com/arpansaha13) in
[mermaid-js/mermaid#3605
- feat: make `parseError` function more type-safe by
[@&#8203;Some-Dood](https://togithub.com/Some-Dood) in
[mermaid-js/mermaid#3643
- chore(deps): update all non-major dependencies (minor) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3632
- chore(deps): update all non-major dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3671
- chore(deps): pin dependencies by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3685
- Added Open Graph meta tags by
[@&#8203;danangtomo](https://togithub.com/danangtomo) in
[mermaid-js/mermaid#3679
- add eslint-plugin-no-only-tests plugin by
[@&#8203;DKurilo](https://togithub.com/DKurilo) in
[mermaid-js/mermaid#3690
- Added and configured cspell plugin to eslint by
[@&#8203;devcer](https://togithub.com/devcer) in
[mermaid-js/mermaid#3604
- fix: gantt demo diagrams
([#&#8203;3655](https://togithub.com/mermaid-js/mermaid/issues/3655)) by
[@&#8203;isinek](https://togithub.com/isinek) in
[mermaid-js/mermaid#3688
- Chore/3697 eslint curly by
[@&#8203;jeroenekkelkamp](https://togithub.com/jeroenekkelkamp) in
[mermaid-js/mermaid#3698
- Update sequenceDiagram.md by
[@&#8203;imgss](https://togithub.com/imgss) in
[mermaid-js/mermaid#3707
- Use `eslint-plugin-tsdoc` for TypeScript files instead of
`eslint-plugin-jsdoc` by
[@&#8203;aloisklink](https://togithub.com/aloisklink) in
[mermaid-js/mermaid#3708
- chore(deps): pin dependencies by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3713
- chore(deps): update all non-major dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3714
- Order pie chart slices clockwise by order of entries by
[@&#8203;jasmaa](https://togithub.com/jasmaa) in
[mermaid-js/mermaid#3609
- fix: border attribute does not work in a certain writing style by
[@&#8203;maiermic](https://togithub.com/maiermic) in
[mermaid-js/mermaid#3636
- add the way to add notes to class diagram by
[@&#8203;DKurilo](https://togithub.com/DKurilo) in
[mermaid-js/mermaid#3647
- add statement aliases for ER diagram by
[@&#8203;DKurilo](https://togithub.com/DKurilo) in
[mermaid-js/mermaid#3649
- fix: Fix useMaxWidth option for git graph by
[@&#8203;uttk](https://togithub.com/uttk) in
[mermaid-js/mermaid#3652
- [#&#8203;3659](https://togithub.com/mermaid-js/mermaid/issues/3659)
Adding height when not using maxWidth by
[@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3668
- Change fill attribute to style by
[@&#8203;CalebUsadi](https://togithub.com/CalebUsadi) in
[mermaid-js/mermaid#3719
- feat: \[State diagram] Add classDefs and classes to states by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3644
- Fill inheritance arrow with background color by
[@&#8203;vallsv](https://togithub.com/vallsv) in
[mermaid-js/mermaid#3543
- Ensure example code and rendered output are synced by
[@&#8203;marcjansen](https://togithub.com/marcjansen) in
[mermaid-js/mermaid#3721
- fix(git): Support quoted branch names by
[@&#8203;gibson042](https://togithub.com/gibson042) in
[mermaid-js/mermaid#3726
- docs: Add link to docs source by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3612
- chore(deps): update all non-major dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3736
- chore(deps): update all non-major dependencies (minor) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3737
- feat(gantt): Add option 'tickInterval' for custom tick interval by
[@&#8203;DarkNami](https://togithub.com/DarkNami) in
[mermaid-js/mermaid#3729
- Fix/convert attr to style in er graph by
[@&#8203;CalebUsadi](https://togithub.com/CalebUsadi) in
[mermaid-js/mermaid#3722
- update user story link for
[#&#8203;3740](https://togithub.com/mermaid-js/mermaid/issues/3740) by
[@&#8203;6footGeek](https://togithub.com/6footGeek) in
[mermaid-js/mermaid#3741
- Improved New Documentation by
[@&#8203;emersonbottero](https://togithub.com/emersonbottero) in
[mermaid-js/mermaid#3678
- chore: fix cSpell word entry misspelling "mermiad" -> "mermaid" by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3751
- Fix link to CSS classes by
[@&#8203;hugovk](https://togithub.com/hugovk) in
[mermaid-js/mermaid#3752
- docs: Update references to default config in directives page by
[@&#8203;raptor0929](https://togithub.com/raptor0929) in
[mermaid-js/mermaid#3738
- Fix link relative links to documentation files by
[@&#8203;spier](https://togithub.com/spier) in
[mermaid-js/mermaid#3760
- chore(deps): update all non-major dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3769
- chore(deps): update all non-major dependencies (minor) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3770
- Fix CSpell by [@&#8203;sidharthv96](https://togithub.com/sidharthv96)
in
[mermaid-js/mermaid#3753
- Live edits for Docs by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3755
- Switch CDN to unpkg.com by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3777
- chore: Housekeeping by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3783
- Pnpm issue reproduction by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3784
- fix(deps): update all non-major dependencies (patch) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3790
- chore: clean up code in mermaidAPI render() and write specs/tests by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3684
- chore(deps): update all non-major dependencies (minor) by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3791
- fix(deps): update dependency rollup to v3 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3674
- Add GHA that will check links + Fix broken links by
[@&#8203;spier](https://togithub.com/spier) in
[mermaid-js/mermaid#3765
- chore: Merge master to develop by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3780
- bug: change shiki getHighlighter import by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3804
- Fix
[#&#8203;3799](https://togithub.com/mermaid-js/mermaid/issues/3799):
Remove `type` from package.json by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3802
- CI: disable pinning dependencies by
[@&#8203;aloisklink](https://togithub.com/aloisklink) in
[mermaid-js/mermaid#3735
- bug: State diagram fix classes type by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3798
- Remove extra arrow and adjust cross position by
[@&#8203;ishuen](https://togithub.com/ishuen) in
[mermaid-js/mermaid#3641
- comments in states are skipped now by
[@&#8203;avijit1258](https://togithub.com/avijit1258) in
[mermaid-js/mermaid#3762
- feat: Redirect old documentation links. by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3797
- Mindmap integration docs by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3810
- Use `github-dark` to highlight fence blocks in vitepress docs by
[@&#8203;aloisklink](https://togithub.com/aloisklink) in
[mermaid-js/mermaid#3807
- chore(deps): update lycheeverse/lychee-action action to v1.5.4 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3827
- chore(deps): update pnpm to v7.17.0 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3828
- feat: Title support via front matter for ER, state, class, git, and
graph diagrams by [@&#8203;MasonM](https://togithub.com/MasonM) in
[mermaid-js/mermaid#3706
- Replace `dagre`/`dagre-d3` with `dagre-d3-es` by
[@&#8203;aloisklink](https://togithub.com/aloisklink) in
[mermaid-js/mermaid#3809
- Add package visualizations by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3823
- [#&#8203;3882](https://togithub.com/mermaid-js/mermaid/issues/3882)
fix for issues with mindmaps with only a single node by
[@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3833
- [#&#8203;3778](https://togithub.com/mermaid-js/mermaid/issues/3778)
Adding a hexgon shape by [@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3834
- Fix for
[#&#8203;3835](https://togithub.com/mermaid-js/mermaid/issues/3835),
makes it possible to style path elements by
[@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3836
- [#&#8203;3831](https://togithub.com/mermaid-js/mermaid/issues/3831)
Re-enabling themes for er diagrams by
[@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3837
- (chore) remove console stmt in pieDetector by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3840
- Revert "Added pie" by
[@&#8203;pbrolin47](https://togithub.com/pbrolin47) in
[mermaid-js/mermaid#3842
- Fix typos by [@&#8203;endolith](https://togithub.com/endolith) in
[mermaid-js/mermaid#3820
- (feat) state classDef documentation by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3841
- Integrations added - Visual Studio Code \[Polyglot Interactive
Notebooks] by [@&#8203;dfinke](https://togithub.com/dfinke) in
[mermaid-js/mermaid#3821
- Reduce mermaid size by 31% by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3825
- fix: LintStaged by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3844
- Add official vim plugin to list in integrations by
[@&#8203;craigmac](https://togithub.com/craigmac) in
[mermaid-js/mermaid#3847
- chore(deps): remove dependency on `graphlib` by
[@&#8203;aloisklink](https://togithub.com/aloisklink) in
[mermaid-js/mermaid#3861
- chore(deps): update pnpm to v7.17.1 by
[@&#8203;renovate](https://togithub.com/renovate) in
[mermaid-js/mermaid#3862
- Make gitgraph snapshots consistent in E2E tests by
[@&#8203;aloisklink](https://togithub.com/aloisklink) in
[mermaid-js/mermaid#3860
- Use stylis to prepend idSelector by
[@&#8203;DanInProgress](https://togithub.com/DanInProgress) in
[mermaid-js/mermaid#3829
- Use current mermaid version in docs. by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3846
- Add support for [@&#8203;include](https://togithub.com/include) in
docs by [@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3863
- Housekeeping with eslint-unicorn by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3845
- chore: delete functions not used in diagrams/c4 code (dead code) by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3871
- Switch back to jsdelivr by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3873
- 3882 edge labels by [@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3883
- Small fix for issue
[#&#8203;3881](https://togithub.com/mermaid-js/mermaid/issues/3881) by
[@&#8203;knsv](https://togithub.com/knsv) in
[mermaid-js/mermaid#3884
- Defects/issue 3878 by [@&#8203;MrCoder](https://togithub.com/MrCoder)
in
[mermaid-js/mermaid#3880
- chore(docs): Auto build docs by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3547
- docs: refactor Theming doc by
[@&#8203;huynhicode](https://togithub.com/huynhicode) in
[mermaid-js/mermaid#3889
- Feat: Add aria-describedby, aria-roledescription by
[@&#8203;weedySeaDragon](https://togithub.com/weedySeaDragon) in
[mermaid-js/mermaid#3808
- Release/9.3.0 by
[@&#8203;sidharthv96](https://togithub.com/sidharthv96) in
[mermaid-js/mermaid#3911

#### New Contributors

- [@&#8203;revolter](https://togithub.com/revolter) made their first
contribution in
[mermaid-js/mermaid#3657
- [@&#8203;Some-Dood](https://togithub.com/Some-Dood) made their first
contribution in
[mermaid-js/mermaid#3643
- [@&#8203;danangtomo](https://togithub.com/danangtomo) made their first
contribution in
[mermaid-js/mermaid#3679
- [@&#8203;DKurilo](https://togithub.com/DKurilo) made their first
contribution in
[mermaid-js/mermaid#3690
- [@&#8203;devcer](https://togithub.com/devcer) made their first
contribution in
[mermaid-js/mermaid#3604
- [@&#8203;isinek](https://togithub.com/isinek) made their first
contribution in
[mermaid-js/mermaid#3688
- [@&#8203;jeroenekkelkamp](https://togithub.com/jeroenekkelkamp) made
their first contribution in
[mermaid-js/mermaid#3698
- [@&#8203;imgss](https://togithub.com/imgss) made their first
contribution in
[mermaid-js/mermaid#3707
- [@&#8203;jasmaa](https://togithub.com/jasmaa) made their first
contribution in
[mermaid-js/mermaid#3609
- [@&#8203;uttk](https://togithub.com/uttk) made their first
contribution in
[mermaid-js/mermaid#3652
- [@&#8203;CalebUsadi](https://togithub.com/CalebUsadi) made their first
contribution in
[mermaid-js/mermaid#3719
- [@&#8203;marcjansen](https://togithub.com/marcjansen) made their first
contribution in
[mermaid-js/mermaid#3721
- [@&#8203;DarkNami](https://togithub.com/DarkNami) made their first
contribution in
[mermaid-js/mermaid#3729
- [@&#8203;6footGeek](https://togithub.com/6footGeek) made their first
contribution in
[mermaid-js/mermaid#3741
- [@&#8203;hugovk](https://togithub.com/hugovk) made their first
contribution in
[mermaid-js/mermaid#3752
- [@&#8203;raptor0929](https://togithub.com/raptor0929) made their first
contribution in
[mermaid-js/mermaid#3738
- [@&#8203;spier](https://togithub.com/spier) made their first
contribution in
[mermaid-js/mermaid#3760
- [@&#8203;ishuen](https://togithub.com/ishuen) made their first
contribution in
[mermaid-js/mermaid#3641
- [@&#8203;avijit1258](https://togithub.com/avijit1258) made their first
contribution in
[mermaid-js/mermaid#3762
- [@&#8203;MasonM](https://togithub.com/MasonM) made their first
contribution in
[mermaid-js/mermaid#3706
- [@&#8203;endolith](https://togithub.com/endolith) made their first
contribution in
[mermaid-js/mermaid#3820
- [@&#8203;dfinke](https://togithub.com/dfinke) made their first
contribution in
[mermaid-js/mermaid#3821
- [@&#8203;craigmac](https://togithub.com/craigmac) made their first
contribution in
[mermaid-js/mermaid#3847
- [@&#8203;DanInProgress](https://togithub.com/DanInProgress) made their
first contribution in
[mermaid-js/mermaid#3829
- [@&#8203;MrCoder](https://togithub.com/MrCoder) made their first
contribution in
[mermaid-js/mermaid#3880
- [@&#8203;huynhicode](https://togithub.com/huynhicode) made their first
contribution in
[mermaid-js/mermaid#3889

**Full Changelog**:
mermaid-js/mermaid@v9.2.2...v9.3.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/BirthdayResearch/contented).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC41NC4yIiwidXBkYXRlZEluVmVyIjoiMzQuNjIuMSJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Title support for every diagram
6 participants