mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
#3358 Second set of changes after review
This commit is contained in:
parent
1629a91a25
commit
37d7c7e2dd
@ -64,14 +64,14 @@
|
||||
</head>
|
||||
<body>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 3
|
||||
a:3
|
||||
block:e:3
|
||||
f
|
||||
end
|
||||
g
|
||||
|
||||
block-beta
|
||||
blockArrowId<["Label"]>(right)
|
||||
blockArrowId2<["Label"]>(left)
|
||||
blockArrowId3<["Label"]>(up)
|
||||
blockArrowId4<["Label"]>(down)
|
||||
blockArrowId5<["Label"]>(x)
|
||||
blockArrowId6<["Label"]>(y)
|
||||
blockArrowId6<["Label"]>(x, down)
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
|
126
demos/block.html
126
demos/block.html
@ -3,23 +3,125 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>States Mermaid Quick Test Page</title>
|
||||
<title>Mermaid Block diagram demo page</title>
|
||||
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
|
||||
<style>
|
||||
div.mermaid {
|
||||
font-family: 'Courier New', Courier, monospace !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Block diagram demos</h1>
|
||||
<h2>TCI IP</h2>
|
||||
<pre class="mermaid">
|
||||
block-beta
|
||||
A>"rect_left_inv_arrow"]
|
||||
B{"diamond"}
|
||||
C{{"hexagon"}}
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 1
|
||||
db(("DB"))
|
||||
blockArrowId6<[" "]>(down)
|
||||
block:ID
|
||||
A
|
||||
B["A wide one in the middle"]
|
||||
C
|
||||
end
|
||||
space
|
||||
D
|
||||
ID --> D
|
||||
C --> D
|
||||
style B fill:#f9F,stroke:#333,stroke-width:4px
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
A1["square"]
|
||||
B1("rounded")
|
||||
C1(("circle"))
|
||||
A2>"rect_left_inv_arrow"]
|
||||
B2{"diamond"}
|
||||
C2{{"hexagon"}}
|
||||
</pre>
|
||||
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
A1(["stadium"])
|
||||
A2[["subroutine"]]
|
||||
B1[("cylinder")]
|
||||
C1>"surprise"]
|
||||
A3[/"lean right"/]
|
||||
B2[\"lean left"\]
|
||||
C2[/"trapezoid"\]
|
||||
D2[\"trapezoid"/]
|
||||
</pre>
|
||||
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
block:e:4
|
||||
columns 2
|
||||
f
|
||||
g
|
||||
end
|
||||
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
block:e:4
|
||||
columns 2
|
||||
f
|
||||
g
|
||||
h
|
||||
end
|
||||
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 3
|
||||
a:3
|
||||
block:e:3
|
||||
f
|
||||
g
|
||||
end
|
||||
h
|
||||
i
|
||||
j
|
||||
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 4
|
||||
a b c d
|
||||
block:e:4
|
||||
columns 2
|
||||
f
|
||||
g
|
||||
h
|
||||
end
|
||||
i:4
|
||||
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
flowchart LR
|
||||
X-- "a label" -->z
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 5
|
||||
A space B
|
||||
A --x B
|
||||
</pre>
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 3
|
||||
a["A wide one"] b:2 c:2 d
|
||||
</pre>
|
||||
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
columns 3
|
||||
a b c
|
||||
e:3
|
||||
f g h
|
||||
</pre>
|
||||
|
||||
<pre id="diagram" class="mermaid">
|
||||
block-beta
|
||||
|
||||
A1:3
|
||||
A2:1
|
||||
A3
|
||||
</pre>
|
||||
|
||||
<script type="module">
|
||||
|
@ -91,7 +91,7 @@ block-beta
|
||||
|
||||
This example will produce a horizontal sequence of three blocks. Each block is automatically spaced and aligned for optimal readability.
|
||||
|
||||
### Diagrams with Multiple Columns
|
||||
### Defining the number of columns to use
|
||||
|
||||
#### Column Usage
|
||||
|
||||
@ -132,13 +132,13 @@ To create a block diagram where one block spans across two columns, you can spec
|
||||
```mermaid-example
|
||||
block-beta
|
||||
columns 3
|
||||
a["A wide one"] b:2 c:2 d
|
||||
a["A label"] b:2 c:2 d
|
||||
```
|
||||
|
||||
```mermaid
|
||||
block-beta
|
||||
columns 3
|
||||
a["A wide one"] b:2 c:2 d
|
||||
a["A label"] b:2 c:2 d
|
||||
```
|
||||
|
||||
In this example, the block labeled "A wide one" spans two columns, while blocks 'b', 'c', and 'd' are allocated their own columns. This flexibility in block sizing is crucial for accurately representing systems with components of varying significance or size.
|
||||
@ -183,20 +183,30 @@ In diagrams with varying block sizes, Mermaid automatically adjusts the column w
|
||||
block-beta
|
||||
columns 3
|
||||
a:3
|
||||
block:e:3
|
||||
f
|
||||
block:group1:2
|
||||
columns 2
|
||||
h i j k
|
||||
end
|
||||
g
|
||||
block:group2:3
|
||||
%% columns auto (default)
|
||||
l m n o p q r
|
||||
end
|
||||
```
|
||||
|
||||
```mermaid
|
||||
block-beta
|
||||
columns 3
|
||||
a:3
|
||||
block:e:3
|
||||
f
|
||||
block:group1:2
|
||||
columns 2
|
||||
h i j k
|
||||
end
|
||||
g
|
||||
block:group2:3
|
||||
%% columns auto (default)
|
||||
l m n o p q r
|
||||
end
|
||||
```
|
||||
|
||||
This example demonstrates how Mermaid dynamically adjusts the width of the columns to accommodate the widest block, in this case, 'a' and the composite block 'e'. This dynamic adjustment is essential for creating visually balanced and easy-to-understand diagrams.
|
||||
@ -407,14 +417,12 @@ or
|
||||
|
||||
```mermaid-example
|
||||
block-beta
|
||||
space:3
|
||||
ida idb idc
|
||||
ida space:3 idb idc
|
||||
```
|
||||
|
||||
```mermaid
|
||||
block-beta
|
||||
space:3
|
||||
ida idb idc
|
||||
ida space:3 idb idc
|
||||
```
|
||||
|
||||
Note that you can set how many columns the spece block occupied using the number notaion `space:num` where num is a number indicating the num columns width. You can alsio use `space` which defaults to one column.
|
||||
@ -597,7 +605,6 @@ block-beta
|
||||
|
||||
style Start fill:#969;
|
||||
style End fill:#696;
|
||||
|
||||
```
|
||||
|
||||
```mermaid
|
||||
@ -611,19 +618,8 @@ block-beta
|
||||
|
||||
style Start fill:#969;
|
||||
style End fill:#696;
|
||||
|
||||
```
|
||||
|
||||
This diagram depicts a simple decision-making process with two possible paths leading to an endpoint, demonstrating the use of different shapes and directional arrows.
|
||||
|
||||
### Real world Scenarios
|
||||
|
||||
Block diagrams can be employed in a variety of real-world scenarios. Here are a few examples:
|
||||
|
||||
- **IT Network Layouts**: Visualize the structure of IT networks, showing how different devices and services are connected.
|
||||
- **Educational Diagrams**: Explain complex scientific concepts, engineering systems, or historical timelines.
|
||||
- **Organizational Charts**: Represent the hierarchy and relationships within an organization or department.
|
||||
|
||||
These practical examples and scenarios underscore the utility of Mermaid block diagrams in simplifying and effectively communicating complex information across various domains.
|
||||
|
||||
The next section, 'Troubleshooting and Common Issues', will provide insights into resolving common challenges encountered when working with Mermaid block diagrams, ensuring a smooth diagramming experience.
|
||||
@ -705,6 +701,6 @@ Use classes to maintain consistent styling across similar elements. This not onl
|
||||
|
||||
#### Comments and Documentation
|
||||
|
||||
Use comments within the Mermaid syntax to document the purpose of various parts of the diagram. This practice is invaluable for maintaining clarity, especially when working in teams or returning to a diagram after some time.
|
||||
Use comments with `%%` within the Mermaid syntax to document the purpose of various parts of the diagram. This practice is invaluable for maintaining clarity, especially when working in teams or returning to a diagram after some time.
|
||||
|
||||
With these troubleshooting tips and best practices, you can effectively manage and resolve common issues in Mermaid block diagrams. The final section, 'Conclusion', will summarize the key points covered in this documentation and invite user feedback for continuous improvement.
|
||||
|
@ -19,200 +19,224 @@ const expandAndDeduplicateDirections = (directions) => {
|
||||
|
||||
return uniqueDirections;
|
||||
};
|
||||
export const getArrowPoints = (directions, bbox, node) => {
|
||||
const ud = expandAndDeduplicateDirections(directions);
|
||||
|
||||
// console.log('block_arrow abc123', node.id, node.directions, ud);
|
||||
export const getArrowPoints = (duplicatedDirections, bbox, node) => {
|
||||
// Expand and deduplicate the provided directions.
|
||||
// for instance: x, right => right, left
|
||||
const directions = expandAndDeduplicateDirections(duplicatedDirections);
|
||||
|
||||
// Factor to divide height for some calculations.
|
||||
const f = 2;
|
||||
const h = bbox.height + 2 * node.padding;
|
||||
const m = h / f;
|
||||
const w = bbox.width + 2 * m + node.padding;
|
||||
const p = node.padding / 2;
|
||||
|
||||
// Calculated height of the bounding box, accounting for node padding.
|
||||
const height = bbox.height + 2 * node.padding;
|
||||
// Midpoint calculation based on height.
|
||||
const midpoint = height / f;
|
||||
// Calculated width of the bounding box, accounting for additional width and node padding.
|
||||
const width = bbox.width + 2 * midpoint + node.padding;
|
||||
// Padding to use, half of the node padding.
|
||||
const padding = node.padding / 2;
|
||||
|
||||
// Initialize an empty array to store points for the arrow.
|
||||
let points = [];
|
||||
|
||||
if (ud.has('right') && ud.has('left') && ud.has('up') && ud.has('down')) {
|
||||
if (
|
||||
directions.has('right') &&
|
||||
directions.has('left') &&
|
||||
directions.has('up') &&
|
||||
directions.has('down')
|
||||
) {
|
||||
// SQUARE
|
||||
points = [
|
||||
return [
|
||||
// Bottom
|
||||
{ x: 0, y: 0 },
|
||||
{ x: m, y: 0 },
|
||||
{ x: w / 2, y: 2 * p },
|
||||
{ x: w - m, y: 0 },
|
||||
{ x: w, y: 0 },
|
||||
{ x: midpoint, y: 0 },
|
||||
{ x: width / 2, y: 2 * padding },
|
||||
{ x: width - midpoint, y: 0 },
|
||||
{ x: width, y: 0 },
|
||||
|
||||
// Right
|
||||
{ x: w, y: -h / 3 },
|
||||
{ x: w + 2 * p, y: -h / 2 },
|
||||
{ x: w, y: (-2 * h) / 3 },
|
||||
{ x: w, y: -h },
|
||||
{ x: width, y: -height / 3 },
|
||||
{ x: width + 2 * padding, y: -height / 2 },
|
||||
{ x: width, y: (-2 * height) / 3 },
|
||||
{ x: width, y: -height },
|
||||
|
||||
// Top
|
||||
{ x: w - m, y: -h },
|
||||
{ x: w / 2, y: -h - 2 * p },
|
||||
{ x: m, y: -h },
|
||||
{ x: width - midpoint, y: -height },
|
||||
{ x: width / 2, y: -height - 2 * padding },
|
||||
{ x: midpoint, y: -height },
|
||||
|
||||
// Left
|
||||
{ x: 0, y: -h },
|
||||
{ x: 0, y: (-2 * h) / 3 },
|
||||
{ x: -2 * p, y: -h / 2 },
|
||||
{ x: 0, y: -h / 3 },
|
||||
{ x: 0, y: -height },
|
||||
{ x: 0, y: (-2 * height) / 3 },
|
||||
{ x: -2 * padding, y: -height / 2 },
|
||||
{ x: 0, y: -height / 3 },
|
||||
];
|
||||
} else if (ud.has('right') && ud.has('left') && ud.has('up')) {
|
||||
}
|
||||
if (directions.has('right') && directions.has('left') && directions.has('up')) {
|
||||
// RECTANGLE_VERTICAL (Top Open)
|
||||
points = [
|
||||
{ x: m, y: 0 },
|
||||
{ x: w - m, y: 0 },
|
||||
{ x: w, y: -h / 2 },
|
||||
{ x: w - m, y: -h },
|
||||
{ x: m, y: -h },
|
||||
{ x: 0, y: -h / 2 },
|
||||
return [
|
||||
{ x: midpoint, y: 0 },
|
||||
{ x: width - midpoint, y: 0 },
|
||||
{ x: width, y: -height / 2 },
|
||||
{ x: width - midpoint, y: -height },
|
||||
{ x: midpoint, y: -height },
|
||||
{ x: 0, y: -height / 2 },
|
||||
];
|
||||
} else if (ud.has('right') && ud.has('left') && ud.has('down')) {
|
||||
}
|
||||
if (directions.has('right') && directions.has('left') && directions.has('down')) {
|
||||
// RECTANGLE_VERTICAL (Bottom Open)
|
||||
points = [
|
||||
return [
|
||||
{ x: 0, y: 0 },
|
||||
{ x: m, y: -h },
|
||||
{ x: w - m, y: -h },
|
||||
{ x: w, y: 0 },
|
||||
{ x: midpoint, y: -height },
|
||||
{ x: width - midpoint, y: -height },
|
||||
{ x: width, y: 0 },
|
||||
];
|
||||
} else if (ud.has('right') && ud.has('up') && ud.has('down')) {
|
||||
}
|
||||
if (directions.has('right') && directions.has('up') && directions.has('down')) {
|
||||
// RECTANGLE_HORIZONTAL (Right Open)
|
||||
points = [
|
||||
return [
|
||||
{ x: 0, y: 0 },
|
||||
{ x: w, y: -m },
|
||||
{ x: w, y: -h + m },
|
||||
{ x: 0, y: -h },
|
||||
{ x: width, y: -midpoint },
|
||||
{ x: width, y: -height + midpoint },
|
||||
{ x: 0, y: -height },
|
||||
];
|
||||
} else if (ud.has('left') && ud.has('up') && ud.has('down')) {
|
||||
}
|
||||
if (directions.has('left') && directions.has('up') && directions.has('down')) {
|
||||
// RECTANGLE_HORIZONTAL (Left Open)
|
||||
points = [
|
||||
{ x: w, y: 0 },
|
||||
{ x: 0, y: -m },
|
||||
{ x: 0, y: -h + m },
|
||||
{ x: w, y: -h },
|
||||
return [
|
||||
{ x: width, y: 0 },
|
||||
{ x: 0, y: -midpoint },
|
||||
{ x: 0, y: -height + midpoint },
|
||||
{ x: width, y: -height },
|
||||
];
|
||||
} else if (ud.has('right') && ud.has('left')) {
|
||||
}
|
||||
if (directions.has('right') && directions.has('left')) {
|
||||
// HORIZONTAL_LINE
|
||||
points = [
|
||||
{ x: m, y: 0 },
|
||||
{ x: m, y: -p },
|
||||
{ x: w - m, y: -p },
|
||||
{ x: w - m, y: 0 },
|
||||
{ x: w, y: -h / 2 },
|
||||
{ x: w - m, y: -h },
|
||||
{ x: w - m, y: -h + p },
|
||||
{ x: m, y: -h + p },
|
||||
{ x: m, y: -h },
|
||||
{ x: 0, y: -h / 2 },
|
||||
return [
|
||||
{ x: midpoint, y: 0 },
|
||||
{ x: midpoint, y: -padding },
|
||||
{ x: width - midpoint, y: -padding },
|
||||
{ x: width - midpoint, y: 0 },
|
||||
{ x: width, y: -height / 2 },
|
||||
{ x: width - midpoint, y: -height },
|
||||
{ x: width - midpoint, y: -height + padding },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
{ x: midpoint, y: -height },
|
||||
{ x: 0, y: -height / 2 },
|
||||
];
|
||||
} else if (ud.has('up') && ud.has('down')) {
|
||||
}
|
||||
if (directions.has('up') && directions.has('down')) {
|
||||
// VERTICAL_LINE
|
||||
points = [
|
||||
return [
|
||||
// Bottom center
|
||||
{ x: w / 2, y: 0 },
|
||||
{ x: width / 2, y: 0 },
|
||||
// Left pont of bottom arrow
|
||||
{ x: 0, y: -p },
|
||||
{ x: m, y: -p },
|
||||
{ x: 0, y: -padding },
|
||||
{ x: midpoint, y: -padding },
|
||||
// Left top over vertical section
|
||||
{ x: m, y: -h + p },
|
||||
{ x: 0, y: -h + p },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
{ x: 0, y: -height + padding },
|
||||
// Top of arrow
|
||||
{ x: w / 2, y: -h },
|
||||
{ x: w, y: -h + p },
|
||||
{ x: width / 2, y: -height },
|
||||
{ x: width, y: -height + padding },
|
||||
// Top of right vertical bar
|
||||
{ x: w - m, y: -h + p },
|
||||
{ x: w - m, y: -p },
|
||||
{ x: w, y: -p },
|
||||
{ x: width - midpoint, y: -height + padding },
|
||||
{ x: width - midpoint, y: -padding },
|
||||
{ x: width, y: -padding },
|
||||
];
|
||||
} else if (ud.has('right') && ud.has('up')) {
|
||||
}
|
||||
if (directions.has('right') && directions.has('up')) {
|
||||
// ANGLE_RT
|
||||
points = [
|
||||
return [
|
||||
{ x: 0, y: 0 },
|
||||
{ x: w, y: -m },
|
||||
{ x: 0, y: -h },
|
||||
{ x: width, y: -midpoint },
|
||||
{ x: 0, y: -height },
|
||||
];
|
||||
} else if (ud.has('right') && ud.has('down')) {
|
||||
}
|
||||
if (directions.has('right') && directions.has('down')) {
|
||||
// ANGLE_RB
|
||||
points = [
|
||||
return [
|
||||
{ x: 0, y: 0 },
|
||||
{ x: w, y: 0 },
|
||||
{ x: 0, y: -h },
|
||||
{ x: width, y: 0 },
|
||||
{ x: 0, y: -height },
|
||||
];
|
||||
} else if (ud.has('left') && ud.has('up')) {
|
||||
}
|
||||
if (directions.has('left') && directions.has('up')) {
|
||||
// ANGLE_LT
|
||||
points = [
|
||||
{ x: w, y: 0 },
|
||||
{ x: 0, y: -m },
|
||||
{ x: w, y: -h },
|
||||
return [
|
||||
{ x: width, y: 0 },
|
||||
{ x: 0, y: -midpoint },
|
||||
{ x: width, y: -height },
|
||||
];
|
||||
} else if (ud.has('left') && ud.has('down')) {
|
||||
}
|
||||
if (directions.has('left') && directions.has('down')) {
|
||||
// ANGLE_LB
|
||||
points = [
|
||||
{ x: w, y: 0 },
|
||||
return [
|
||||
{ x: width, y: 0 },
|
||||
{ x: 0, y: 0 },
|
||||
{ x: w, y: -h },
|
||||
{ x: width, y: -height },
|
||||
];
|
||||
} else if (ud.has('right')) {
|
||||
}
|
||||
if (directions.has('right')) {
|
||||
// ARROW_RIGHT
|
||||
points = [
|
||||
{ x: m, y: -p },
|
||||
{ x: m, y: -p },
|
||||
{ x: w - m, y: -p },
|
||||
{ x: w - m, y: 0 },
|
||||
{ x: w, y: -h / 2 },
|
||||
{ x: w - m, y: -h },
|
||||
{ x: w - m, y: -h + p },
|
||||
return [
|
||||
{ x: midpoint, y: -padding },
|
||||
{ x: midpoint, y: -padding },
|
||||
{ x: width - midpoint, y: -padding },
|
||||
{ x: width - midpoint, y: 0 },
|
||||
{ x: width, y: -height / 2 },
|
||||
{ x: width - midpoint, y: -height },
|
||||
{ x: width - midpoint, y: -height + padding },
|
||||
// top left corner of arrow
|
||||
{ x: m, y: -h + p },
|
||||
{ x: m, y: -h + p },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
];
|
||||
} else if (ud.has('left')) {
|
||||
}
|
||||
if (directions.has('left')) {
|
||||
// ARROW_LEFT
|
||||
points = [
|
||||
{ x: m, y: 0 },
|
||||
{ x: m, y: -p },
|
||||
return [
|
||||
{ x: midpoint, y: 0 },
|
||||
{ x: midpoint, y: -padding },
|
||||
// Two points, the right corners
|
||||
{ x: w - m, y: -p },
|
||||
{ x: w - m, y: -h + p },
|
||||
{ x: m, y: -h + p },
|
||||
{ x: m, y: -h },
|
||||
{ x: 0, y: -h / 2 },
|
||||
{ x: width - midpoint, y: -padding },
|
||||
{ x: width - midpoint, y: -height + padding },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
{ x: midpoint, y: -height },
|
||||
{ x: 0, y: -height / 2 },
|
||||
];
|
||||
} else if (ud.has('up')) {
|
||||
}
|
||||
if (directions.has('up')) {
|
||||
// ARROW_TOP
|
||||
points = [
|
||||
return [
|
||||
// Bottom center
|
||||
{ x: m, y: -p },
|
||||
{ x: midpoint, y: -padding },
|
||||
// Left top over vertical section
|
||||
{ x: m, y: -h + p },
|
||||
{ x: 0, y: -h + p },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
{ x: 0, y: -height + padding },
|
||||
// Top of arrow
|
||||
{ x: w / 2, y: -h },
|
||||
{ x: w, y: -h + p },
|
||||
{ x: width / 2, y: -height },
|
||||
{ x: width, y: -height + padding },
|
||||
// Top of right vertical bar
|
||||
{ x: w - m, y: -h + p },
|
||||
{ x: w - m, y: -p },
|
||||
{ x: width - midpoint, y: -height + padding },
|
||||
{ x: width - midpoint, y: -padding },
|
||||
];
|
||||
} else if (ud.has('down')) {
|
||||
}
|
||||
if (directions.has('down')) {
|
||||
// ARROW_BOTTOM
|
||||
points = [
|
||||
return [
|
||||
// Bottom center
|
||||
{ x: w / 2, y: 0 },
|
||||
{ x: width / 2, y: 0 },
|
||||
// Left pont of bottom arrow
|
||||
{ x: 0, y: -p },
|
||||
{ x: m, y: -p },
|
||||
{ x: 0, y: -padding },
|
||||
{ x: midpoint, y: -padding },
|
||||
// Left top over vertical section
|
||||
{ x: m, y: -h + p },
|
||||
{ x: w - m, y: -h + p },
|
||||
{ x: w - m, y: -p },
|
||||
{ x: w, y: -p },
|
||||
{ x: midpoint, y: -height + padding },
|
||||
{ x: width - midpoint, y: -height + padding },
|
||||
{ x: width - midpoint, y: -padding },
|
||||
{ x: width, y: -padding },
|
||||
];
|
||||
} else {
|
||||
// POINT
|
||||
points = [{ x: 0, y: 0 }];
|
||||
}
|
||||
|
||||
return points;
|
||||
// POINT
|
||||
return [{ x: 0, y: 0 }];
|
||||
};
|
||||
|
@ -28,7 +28,6 @@ export const insertEdgeLabel = (elem, edge) => {
|
||||
addSvgBackground: true,
|
||||
})
|
||||
: createLabel(edge.label, edge.labelStyle);
|
||||
log.info('abc82', edge, edge.labelType);
|
||||
|
||||
// Create outer g, edgeLabel, this will be positioned after graph layout
|
||||
const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');
|
||||
@ -135,7 +134,7 @@ function setTerminalWidth(fo, value) {
|
||||
}
|
||||
|
||||
export const positionEdgeLabel = (edge, paths) => {
|
||||
log.info('Moving label abc88 ', edge.id, edge.label, edgeLabels[edge.id], paths);
|
||||
log.debug('Moving label abc88 ', edge.id, edge.label, edgeLabels[edge.id], paths);
|
||||
let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
|
||||
const siteConfig = getConfig();
|
||||
const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
|
||||
@ -146,7 +145,7 @@ export const positionEdgeLabel = (edge, paths) => {
|
||||
if (path) {
|
||||
// // debugger;
|
||||
const pos = utils.calcLabelPosition(path);
|
||||
log.info(
|
||||
log.debug(
|
||||
'Moving label ' + edge.label + ' from (',
|
||||
x,
|
||||
',',
|
||||
@ -221,7 +220,6 @@ export const positionEdgeLabel = (edge, paths) => {
|
||||
};
|
||||
|
||||
const outsideNode = (node, point) => {
|
||||
// log.warn('Checking bounds ', node, point);
|
||||
const x = node.x;
|
||||
const y = node.y;
|
||||
const dx = Math.abs(point.x - x);
|
||||
@ -235,7 +233,7 @@ const outsideNode = (node, point) => {
|
||||
};
|
||||
|
||||
export const intersection = (node, outsidePoint, insidePoint) => {
|
||||
log.warn(`intersection calc abc89:
|
||||
log.debug(`intersection calc abc89:
|
||||
outsidePoint: ${JSON.stringify(outsidePoint)}
|
||||
insidePoint : ${JSON.stringify(insidePoint)}
|
||||
node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);
|
||||
@ -248,29 +246,11 @@ export const intersection = (node, outsidePoint, insidePoint) => {
|
||||
let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;
|
||||
const h = node.height / 2;
|
||||
|
||||
// const edges = {
|
||||
// x1: x - w,
|
||||
// x2: x + w,
|
||||
// y1: y - h,
|
||||
// y2: y + h
|
||||
// };
|
||||
|
||||
// if (
|
||||
// outsidePoint.x === edges.x1 ||
|
||||
// outsidePoint.x === edges.x2 ||
|
||||
// outsidePoint.y === edges.y1 ||
|
||||
// outsidePoint.y === edges.y2
|
||||
// ) {
|
||||
// log.warn('abc89 calc equals on edge', outsidePoint, edges);
|
||||
// return outsidePoint;
|
||||
// }
|
||||
|
||||
const Q = Math.abs(outsidePoint.y - insidePoint.y);
|
||||
const R = Math.abs(outsidePoint.x - insidePoint.x);
|
||||
// log.warn();
|
||||
|
||||
if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {
|
||||
// Intersection is top or bottom of rect.
|
||||
// let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
|
||||
let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
|
||||
r = (R * q) / Q;
|
||||
const res = {
|
||||
@ -289,7 +269,7 @@ export const intersection = (node, outsidePoint, insidePoint) => {
|
||||
res.y = outsidePoint.y;
|
||||
}
|
||||
|
||||
log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);
|
||||
log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);
|
||||
|
||||
return res;
|
||||
} else {
|
||||
@ -306,7 +286,7 @@ export const intersection = (node, outsidePoint, insidePoint) => {
|
||||
let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;
|
||||
// let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;
|
||||
let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;
|
||||
log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });
|
||||
log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });
|
||||
if (r === 0) {
|
||||
_x = outsidePoint.x;
|
||||
_y = outsidePoint.y;
|
||||
@ -330,21 +310,16 @@ export const intersection = (node, outsidePoint, insidePoint) => {
|
||||
* @returns {Array} Points
|
||||
*/
|
||||
const cutPathAtIntersect = (_points, boundryNode) => {
|
||||
log.warn('abc88 cutPathAtIntersect', _points, boundryNode);
|
||||
log.debug('abc88 cutPathAtIntersect', _points, boundryNode);
|
||||
let points = [];
|
||||
let lastPointOutside = _points[0];
|
||||
let isInside = false;
|
||||
_points.forEach((point) => {
|
||||
// const node = clusterDb[edge.toCluster].node;
|
||||
log.info('abc88 checking point', point, boundryNode);
|
||||
|
||||
// check if point is inside the boundary rect
|
||||
if (!outsideNode(boundryNode, point) && !isInside) {
|
||||
// First point inside the rect found
|
||||
// Calc the intersection coord between the point anf the last point outside the rect
|
||||
const inter = intersection(boundryNode, lastPointOutside, point);
|
||||
log.warn('abc88 inside', point, lastPointOutside, inter);
|
||||
log.warn('abc88 intersection', inter);
|
||||
|
||||
// // Check case where the intersection is the same as the last point
|
||||
let pointPresent = false;
|
||||
@ -354,14 +329,11 @@ const cutPathAtIntersect = (_points, boundryNode) => {
|
||||
// // if (!pointPresent) {
|
||||
if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {
|
||||
points.push(inter);
|
||||
} else {
|
||||
log.warn('abc88 no intersect', inter, points);
|
||||
}
|
||||
// points.push(inter);
|
||||
|
||||
isInside = true;
|
||||
} else {
|
||||
// Outside
|
||||
log.warn('abc88 outside', point, lastPointOutside);
|
||||
lastPointOutside = point;
|
||||
// points.push(point);
|
||||
if (!isInside) {
|
||||
@ -369,70 +341,31 @@ const cutPathAtIntersect = (_points, boundryNode) => {
|
||||
}
|
||||
}
|
||||
});
|
||||
log.warn('abc88 returning points', points);
|
||||
return points;
|
||||
};
|
||||
|
||||
export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph, id) {
|
||||
let points = edge.points;
|
||||
log.info('abc88 InsertEdge: edge=', edge, 'e=', e);
|
||||
log.debug('abc88 InsertEdge: edge=', edge, 'e=', e);
|
||||
let pointsHasChanged = false;
|
||||
const tail = graph.node(e.v);
|
||||
var head = graph.node(e.w);
|
||||
log.info('abc88 InsertEdge (head & tail) fin: ', e.v, head, ' --- ', e.w, tail);
|
||||
|
||||
if (head?.intersect && tail?.intersect) {
|
||||
points = points.slice(1, edge.points.length - 1);
|
||||
points.unshift(tail.intersect(points[0]));
|
||||
log.info(
|
||||
'Last point',
|
||||
points[points.length - 1],
|
||||
head,
|
||||
head.intersect(points[points.length - 1])
|
||||
);
|
||||
points.push(head.intersect(points[points.length - 1]));
|
||||
} else {
|
||||
log.info('abc88 No intersect');
|
||||
}
|
||||
|
||||
if (edge.toCluster) {
|
||||
log.info('to cluster abc88', clusterDb[edge.toCluster]);
|
||||
log.debug('to cluster abc88', clusterDb[edge.toCluster]);
|
||||
points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);
|
||||
// log.trace('edge', edge);
|
||||
// points = [];
|
||||
// let lastPointOutside; // = edge.points[0];
|
||||
// let isInside = false;
|
||||
// edge.points.forEach(point => {
|
||||
// const node = clusterDb[edge.toCluster].node;
|
||||
// log.warn('checking from', edge.fromCluster, point, node);
|
||||
|
||||
// if (!outsideNode(node, point) && !isInside) {
|
||||
// log.trace('inside', edge.toCluster, point, lastPointOutside);
|
||||
|
||||
// // First point inside the rect
|
||||
// const inter = intersection(node, lastPointOutside, point);
|
||||
|
||||
// let pointPresent = false;
|
||||
// points.forEach(p => {
|
||||
// pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);
|
||||
// });
|
||||
// // if (!pointPresent) {
|
||||
// if (!points.find(e => e.x === inter.x && e.y === inter.y)) {
|
||||
// points.push(inter);
|
||||
// } else {
|
||||
// log.warn('no intersect', inter, points);
|
||||
// }
|
||||
// isInside = true;
|
||||
// } else {
|
||||
// // outside
|
||||
// lastPointOutside = point;
|
||||
// if (!isInside) points.push(point);
|
||||
// }
|
||||
// });
|
||||
pointsHasChanged = true;
|
||||
}
|
||||
|
||||
if (edge.fromCluster) {
|
||||
log.info('from cluster abc88', clusterDb[edge.fromCluster]);
|
||||
log.debug('from cluster abc88', clusterDb[edge.fromCluster]);
|
||||
points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();
|
||||
|
||||
pointsHasChanged = true;
|
||||
@ -510,8 +443,6 @@ export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph
|
||||
url = url.replace(/\(/g, '\\(');
|
||||
url = url.replace(/\)/g, '\\)');
|
||||
}
|
||||
log.info('arrowTypeStart', edge.arrowTypeStart);
|
||||
log.info('arrowTypeEnd', edge.arrowTypeEnd);
|
||||
|
||||
addEdgeMarkers(svgPath, edge, url, id, diagramType);
|
||||
|
||||
|
@ -127,28 +127,11 @@ const block_arrow = async (parent, node) => {
|
||||
const m = h / f;
|
||||
const w = bbox.width + 2 * m + node.padding;
|
||||
|
||||
const p = node.padding / 2;
|
||||
//
|
||||
// const points = [
|
||||
// { x: m, y: 0 },
|
||||
// { x: m, y: -p },
|
||||
// { x: w - m, y: -p },
|
||||
// { x: w - m, y: 0 },
|
||||
// // Right point
|
||||
// { x: w, y: -h / 2 },
|
||||
// // Point moving left and up from right point
|
||||
// { x: w - m, y: -h },
|
||||
// { x: w - m, y: -h + p },
|
||||
// { x: m, y: -h + p },
|
||||
// { x: m, y: -h },
|
||||
// { x: 0, y: -h / 2 },
|
||||
// ];
|
||||
|
||||
const points = getArrowPoints(node.directions, bbox, node);
|
||||
|
||||
const hex = insertPolygonShape(shapeSvg, w, h, points);
|
||||
hex.attr('style', node.style);
|
||||
updateNodeBounds(node, hex);
|
||||
const blockArrow = insertPolygonShape(shapeSvg, w, h, points);
|
||||
blockArrow.attr('style', node.style);
|
||||
updateNodeBounds(node, blockArrow);
|
||||
|
||||
node.intersect = function (point) {
|
||||
return intersect.polygon(node, points, point);
|
||||
|
@ -115,9 +115,7 @@ export const labelHelper = async (parent, node, _classes, isNode) => {
|
||||
label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');
|
||||
}
|
||||
label.insert('rect', ':first-child');
|
||||
// if (node.positioned) {
|
||||
// shapeSvg.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');
|
||||
// }
|
||||
|
||||
return { shapeSvg, bbox, halfPadding, label };
|
||||
};
|
||||
|
||||
|
@ -1,17 +1,7 @@
|
||||
// import type { BlockDB } from './blockTypes.js';
|
||||
import type { DiagramDB } from '../../diagram-api/types.js';
|
||||
import type { BlockConfig, BlockType, Block, Link, ClassDef } from './blockTypes.js';
|
||||
|
||||
import * as configApi from '../../config.js';
|
||||
import {
|
||||
// setAccTitle,
|
||||
// getAccTitle,
|
||||
// getAccDescription,
|
||||
// setAccDescription,
|
||||
// setDiagramTitle,
|
||||
// getDiagramTitle,
|
||||
clear as commonClear,
|
||||
} from '../common/commonDb.js';
|
||||
import { clear as commonClear } from '../common/commonDb.js';
|
||||
import { log } from '../../logger.js';
|
||||
import clone from 'lodash-es/clone.js';
|
||||
|
||||
@ -57,10 +47,10 @@ export const addStyleClass = function (id: string, styleAttributes = '') {
|
||||
};
|
||||
|
||||
/**
|
||||
* Called when the parser comes across a (style) class definition
|
||||
* @example classDef my-style fill:#f96;
|
||||
* Called when the parser comes across a style definition
|
||||
* @example style my-block-id fill:#f96;
|
||||
*
|
||||
* @param id - the id of this (style) class
|
||||
* @param id - the id of the block to style
|
||||
* @param styles - the string with 1 or more style attributes (each separated by a comma)
|
||||
*/
|
||||
export const addStyle2Node = function (id: string, styles = '') {
|
||||
@ -71,9 +61,9 @@ export const addStyle2Node = function (id: string, styles = '') {
|
||||
};
|
||||
|
||||
/**
|
||||
* Add a (style) class or css class to a state with the given id.
|
||||
* If the state isn't already in the list of known states, add it.
|
||||
* Might be called by parser when a style class or CSS class should be applied to a state
|
||||
* Add a CSS/style class to the block with the given id.
|
||||
* If the block isn't already in the list of known blocks, add it.
|
||||
* Might be called by parser when a CSS/style class should be applied to a block
|
||||
*
|
||||
* @param itemIds - The id or a list of ids of the item(s) to apply the css class to
|
||||
* @param cssClassName - CSS class name
|
||||
@ -105,8 +95,10 @@ const populateBlockDatabase = (_blockList: Block[], parent: Block): void => {
|
||||
setCssClass(block.id, block?.styleClass || '');
|
||||
continue;
|
||||
}
|
||||
if (block.type === 'applyStyles' && block?.stylesStr) {
|
||||
addStyle2Node(block.id, block?.stylesStr);
|
||||
if (block.type === 'applyStyles') {
|
||||
if (block?.stylesStr) {
|
||||
addStyle2Node(block.id, block?.stylesStr);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (block.type === 'column-setting') {
|
||||
@ -153,19 +145,8 @@ const populateBlockDatabase = (_blockList: Block[], parent: Block): void => {
|
||||
blockDatabase[newBlock.id] = newBlock;
|
||||
children.push(newBlock);
|
||||
}
|
||||
// log.debug('abc95 space2', children);
|
||||
} else {
|
||||
if (newBlock) {
|
||||
children.push(block);
|
||||
}
|
||||
// const w = block.w || 1;
|
||||
// for (let j = 1; j < w; j++) {
|
||||
// const newBlock = clone(block);
|
||||
// newBlock.type = 'space';
|
||||
// newBlock.id = newBlock.id + '-' + j;
|
||||
// blockDatabase[newBlock.id] = newBlock;
|
||||
// children.push(newBlock);
|
||||
// }
|
||||
} else if (newBlock) {
|
||||
children.push(block);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -188,8 +169,7 @@ const clear = (): void => {
|
||||
edgeCount = {};
|
||||
};
|
||||
|
||||
type ITypeStr2Type = (typeStr: string) => BlockType;
|
||||
export function typeStr2Type(typeStr: string): BlockType {
|
||||
export function typeStr2Type(typeStr: string) {
|
||||
log.debug('typeStr2Type', typeStr);
|
||||
switch (typeStr) {
|
||||
case '[]':
|
||||
@ -228,7 +208,6 @@ export function typeStr2Type(typeStr: string): BlockType {
|
||||
}
|
||||
}
|
||||
|
||||
type IEdgeTypeStr2Type = (typeStr: string) => string;
|
||||
export function edgeTypeStr2Type(typeStr: string): string {
|
||||
log.debug('typeStr2Type', typeStr);
|
||||
switch (typeStr) {
|
||||
@ -238,7 +217,7 @@ export function edgeTypeStr2Type(typeStr: string): string {
|
||||
return 'normal';
|
||||
}
|
||||
}
|
||||
type IEdgeStrToEdgeDataType = (typeStr: string) => string;
|
||||
|
||||
export function edgeStrToEdgeData(typeStr: string): string {
|
||||
switch (typeStr.trim()) {
|
||||
case '--x':
|
||||
@ -251,26 +230,22 @@ export function edgeStrToEdgeData(typeStr: string): string {
|
||||
}
|
||||
|
||||
let cnt = 0;
|
||||
type IGenerateId = () => string;
|
||||
export const generateId = () => {
|
||||
cnt++;
|
||||
return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;
|
||||
};
|
||||
|
||||
type ISetHierarchy = (block: Block[]) => void;
|
||||
const setHierarchy = (block: Block[]): void => {
|
||||
rootBlock.children = block;
|
||||
populateBlockDatabase(block, rootBlock);
|
||||
blocks = rootBlock.children;
|
||||
};
|
||||
|
||||
type IAddLink = (link: Link) => Link;
|
||||
const addLink: IAddLink = (link: Link): Link => {
|
||||
const addLink = (link: Link): Link => {
|
||||
links.push(link);
|
||||
return link;
|
||||
};
|
||||
|
||||
type IGetColumns = (blockid: string) => number;
|
||||
const getColumns = (blockid: string): number => {
|
||||
const block = blockDatabase[blockid];
|
||||
if (!block) {
|
||||
@ -285,12 +260,11 @@ const getColumns = (blockid: string): number => {
|
||||
return block.children.length;
|
||||
};
|
||||
|
||||
type IGetBlocks = () => Block[];
|
||||
/**
|
||||
* Returns all the blocks as a flat array
|
||||
* @returns
|
||||
*/
|
||||
const getBlocksFlat: IGetBlocks = () => {
|
||||
const getBlocksFlat = () => {
|
||||
const result: Block[] = [];
|
||||
// log.debug('abc88 getBlocksFlat', blockDatabase);
|
||||
const keys = Object.keys(blockDatabase);
|
||||
@ -303,56 +277,33 @@ const getBlocksFlat: IGetBlocks = () => {
|
||||
* Returns the the hierarchy of blocks
|
||||
* @returns
|
||||
*/
|
||||
const getBlocks: IGetBlocks = () => {
|
||||
const getBlocks = () => {
|
||||
return blocks || [];
|
||||
};
|
||||
type IGetEdges = () => Block[];
|
||||
const getEdges: IGetEdges = () => {
|
||||
const getEdges = () => {
|
||||
return edgeList;
|
||||
};
|
||||
type IGetBlock = (id: string) => Block | undefined;
|
||||
const getBlock: IGetBlock = (id: string) => {
|
||||
const getBlock = (id: string) => {
|
||||
return blockDatabase[id];
|
||||
};
|
||||
type ISetBlock = (block: Block) => void;
|
||||
const setBlock: ISetBlock = (block: Block) => {
|
||||
|
||||
const setBlock = (block: Block) => {
|
||||
blockDatabase[block.id] = block;
|
||||
};
|
||||
|
||||
type IGetLinks = () => Link[];
|
||||
const getLinks: IGetLinks = () => links;
|
||||
const getLinks = () => links;
|
||||
|
||||
type IGetLogger = () => Console;
|
||||
const getLogger: IGetLogger = () => console;
|
||||
const getLogger = () => console;
|
||||
|
||||
type IGetClasses = () => Record<string, ClassDef>;
|
||||
// type IGetClasses = () => Record<string, ClassDef>;
|
||||
/**
|
||||
* Return all of the style classes
|
||||
*/
|
||||
export const getClasses = function () {
|
||||
return classes;
|
||||
};
|
||||
export interface BlockDB extends DiagramDB {
|
||||
clear: () => void;
|
||||
getConfig: () => BlockConfig | undefined;
|
||||
addLink: IAddLink;
|
||||
getLogger: IGetLogger;
|
||||
getEdges: IGetEdges;
|
||||
getBlocksFlat: IGetBlocks;
|
||||
getBlocks: IGetBlocks;
|
||||
getBlock: IGetBlock;
|
||||
setBlock: ISetBlock;
|
||||
getLinks: IGetLinks;
|
||||
getColumns: IGetColumns;
|
||||
getClasses: IGetClasses;
|
||||
typeStr2Type: ITypeStr2Type;
|
||||
edgeTypeStr2Type: IEdgeTypeStr2Type;
|
||||
edgeStrToEdgeData: IEdgeStrToEdgeDataType;
|
||||
setHierarchy: ISetHierarchy;
|
||||
generateId: IGenerateId;
|
||||
}
|
||||
|
||||
const db: BlockDB = {
|
||||
const db = {
|
||||
getConfig: () => configApi.getConfig().block,
|
||||
addLink: addLink,
|
||||
typeStr2Type: typeStr2Type,
|
||||
@ -366,16 +317,11 @@ const db: BlockDB = {
|
||||
setHierarchy,
|
||||
getBlock,
|
||||
setBlock,
|
||||
// getAccTitle,
|
||||
// setAccTitle,
|
||||
// getAccDescription,
|
||||
// setAccDescription,
|
||||
// getDiagramTitle,
|
||||
// setDiagramTitle,
|
||||
getColumns,
|
||||
getClasses,
|
||||
clear,
|
||||
generateId,
|
||||
};
|
||||
} as const;
|
||||
|
||||
export type BlockDB = typeof db & DiagramDB;
|
||||
export default db;
|
||||
|
@ -68,7 +68,7 @@ block-beta
|
||||
|
||||
This example will produce a horizontal sequence of three blocks. Each block is automatically spaced and aligned for optimal readability.
|
||||
|
||||
### Diagrams with Multiple Columns
|
||||
### Defining the number of columns to use
|
||||
|
||||
#### Column Usage
|
||||
|
||||
@ -103,7 +103,7 @@ To create a block diagram where one block spans across two columns, you can spec
|
||||
```mermaid-example
|
||||
block-beta
|
||||
columns 3
|
||||
a["A wide one"] b:2 c:2 d
|
||||
a["A label"] b:2 c:2 d
|
||||
```
|
||||
|
||||
In this example, the block labeled "A wide one" spans two columns, while blocks 'b', 'c', and 'd' are allocated their own columns. This flexibility in block sizing is crucial for accurately representing systems with components of varying significance or size.
|
||||
@ -140,10 +140,15 @@ In diagrams with varying block sizes, Mermaid automatically adjusts the column w
|
||||
block-beta
|
||||
columns 3
|
||||
a:3
|
||||
block:e:3
|
||||
f
|
||||
block:group1:2
|
||||
columns 2
|
||||
h i j k
|
||||
end
|
||||
g
|
||||
block:group2:3
|
||||
%% columns auto (default)
|
||||
l m n o p q r
|
||||
end
|
||||
```
|
||||
|
||||
This example demonstrates how Mermaid dynamically adjusts the width of the columns to accommodate the widest block, in this case, 'a' and the composite block 'e'. This dynamic adjustment is essential for creating visually balanced and easy-to-understand diagrams.
|
||||
@ -283,8 +288,7 @@ or
|
||||
|
||||
```mermaid-example
|
||||
block-beta
|
||||
space:3
|
||||
ida idb idc
|
||||
ida space:3 idb idc
|
||||
```
|
||||
|
||||
Note that you can set how many columns the spece block occupied using the number notaion `space:num` where num is a number indicating the num columns width. You can alsio use `space` which defaults to one column.
|
||||
@ -417,19 +421,8 @@ block-beta
|
||||
|
||||
style Start fill:#969;
|
||||
style End fill:#696;
|
||||
|
||||
```
|
||||
|
||||
This diagram depicts a simple decision-making process with two possible paths leading to an endpoint, demonstrating the use of different shapes and directional arrows.
|
||||
|
||||
### Real world Scenarios
|
||||
|
||||
Block diagrams can be employed in a variety of real-world scenarios. Here are a few examples:
|
||||
|
||||
- **IT Network Layouts**: Visualize the structure of IT networks, showing how different devices and services are connected.
|
||||
- **Educational Diagrams**: Explain complex scientific concepts, engineering systems, or historical timelines.
|
||||
- **Organizational Charts**: Represent the hierarchy and relationships within an organization or department.
|
||||
|
||||
These practical examples and scenarios underscore the utility of Mermaid block diagrams in simplifying and effectively communicating complex information across various domains.
|
||||
|
||||
The next section, 'Troubleshooting and Common Issues', will provide insights into resolving common challenges encountered when working with Mermaid block diagrams, ensuring a smooth diagramming experience.
|
||||
@ -494,6 +487,6 @@ Use classes to maintain consistent styling across similar elements. This not onl
|
||||
|
||||
#### Comments and Documentation
|
||||
|
||||
Use comments within the Mermaid syntax to document the purpose of various parts of the diagram. This practice is invaluable for maintaining clarity, especially when working in teams or returning to a diagram after some time.
|
||||
Use comments with `%%` within the Mermaid syntax to document the purpose of various parts of the diagram. This practice is invaluable for maintaining clarity, especially when working in teams or returning to a diagram after some time.
|
||||
|
||||
With these troubleshooting tips and best practices, you can effectively manage and resolve common issues in Mermaid block diagrams. The final section, 'Conclusion', will summarize the key points covered in this documentation and invite user feedback for continuous improvement.
|
||||
|
398
pnpm-lock.yaml
generated
398
pnpm-lock.yaml
generated
@ -530,8 +530,8 @@ importers:
|
||||
specifier: ^0.17.0
|
||||
version: 0.17.0(vite@4.5.0)(workbox-build@7.0.0)(workbox-window@7.0.0)
|
||||
vitepress:
|
||||
specifier: 1.0.0-rc.31
|
||||
version: 1.0.0-rc.31(@algolia/client-search@4.19.1)(@types/node@18.17.5)(postcss@8.4.33)(search-insights@2.7.0)(typescript@5.1.6)
|
||||
specifier: 1.0.0-rc.39
|
||||
version: 1.0.0-rc.39(@algolia/client-search@4.19.1)(@types/node@18.17.5)(postcss@8.4.33)(search-insights@2.7.0)(typescript@5.1.6)
|
||||
workbox-window:
|
||||
specifier: ^7.0.0
|
||||
version: 7.0.0
|
||||
@ -1376,26 +1376,12 @@ packages:
|
||||
js-tokens: 4.0.0
|
||||
dev: true
|
||||
|
||||
/@babel/parser@7.23.0:
|
||||
resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
|
||||
/@babel/parser@7.23.5:
|
||||
resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/types': 7.23.5
|
||||
|
||||
/@babel/parser@7.23.6:
|
||||
resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/types': 7.23.0
|
||||
'@babel/types': 7.23.5
|
||||
|
||||
/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.23.5):
|
||||
resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==}
|
||||
@ -2325,14 +2311,6 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@babel/types@7.23.0:
|
||||
resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/helper-string-parser': 7.23.4
|
||||
'@babel/helper-validator-identifier': 7.22.20
|
||||
to-fast-properties: 2.0.0
|
||||
|
||||
/@babel/types@7.23.5:
|
||||
resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
@ -4724,12 +4702,6 @@ packages:
|
||||
'@types/node': 18.17.5
|
||||
dev: true
|
||||
|
||||
/@types/hast@3.0.3:
|
||||
resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
dev: true
|
||||
|
||||
/@types/http-cache-semantics@4.0.1:
|
||||
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
|
||||
dev: true
|
||||
@ -4815,12 +4787,6 @@ packages:
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
|
||||
/@types/mdast@4.0.3:
|
||||
resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
dev: true
|
||||
|
||||
/@types/mdurl@1.0.2:
|
||||
resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
|
||||
dev: true
|
||||
@ -4964,10 +4930,6 @@ packages:
|
||||
/@types/unist@2.0.7:
|
||||
resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==}
|
||||
|
||||
/@types/unist@3.0.2:
|
||||
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
|
||||
dev: true
|
||||
|
||||
/@types/uuid@9.0.1:
|
||||
resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==}
|
||||
dev: true
|
||||
@ -5327,10 +5289,6 @@ packages:
|
||||
eslint-visitor-keys: 3.4.3
|
||||
dev: true
|
||||
|
||||
/@ungap/structured-clone@1.2.0:
|
||||
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
|
||||
dev: true
|
||||
|
||||
/@unocss/astro@0.58.0(rollup@2.79.1)(vite@4.5.0):
|
||||
resolution: {integrity: sha512-df+tEFO5eKXjQOwSWQhS9IdjD0sfLHLtn8U09sEKR2Nmh5CvpwyBxmvLQgOCilPou7ehmyKfsyGRLZg7IMp+Ew==}
|
||||
peerDependencies:
|
||||
@ -5575,17 +5533,6 @@ packages:
|
||||
vue: 3.4.15(typescript@5.0.4)
|
||||
dev: true
|
||||
|
||||
/@vitejs/plugin-vue@4.5.0(vite@5.0.11)(vue@3.4.15):
|
||||
resolution: {integrity: sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
vite: ^4.0.0 || ^5.0.0
|
||||
vue: ^3.2.25
|
||||
dependencies:
|
||||
vite: 5.0.11(@types/node@18.17.5)
|
||||
vue: 3.4.15(typescript@5.1.6)
|
||||
dev: true
|
||||
|
||||
/@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.15):
|
||||
resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
@ -5676,7 +5623,7 @@ packages:
|
||||
peerDependencies:
|
||||
vue: 3.3.4
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.0
|
||||
'@babel/parser': 7.23.6
|
||||
estree-walker: 2.0.2
|
||||
source-map-js: 1.0.2
|
||||
vue: 3.4.15(typescript@5.1.6)
|
||||
@ -5685,7 +5632,7 @@ packages:
|
||||
/@vue/compiler-core@3.3.4:
|
||||
resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.0
|
||||
'@babel/parser': 7.23.6
|
||||
'@vue/shared': 3.3.4
|
||||
estree-walker: 2.0.2
|
||||
source-map-js: 1.0.2
|
||||
@ -5714,7 +5661,7 @@ packages:
|
||||
/@vue/compiler-sfc@3.3.4:
|
||||
resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.5
|
||||
'@babel/parser': 7.23.6
|
||||
'@vue/compiler-core': 3.3.4
|
||||
'@vue/compiler-dom': 3.3.4
|
||||
'@vue/compiler-ssr': 3.3.4
|
||||
@ -5722,7 +5669,7 @@ packages:
|
||||
'@vue/shared': 3.3.4
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.30.5
|
||||
postcss: 8.4.31
|
||||
postcss: 8.4.33
|
||||
source-map-js: 1.0.2
|
||||
|
||||
/@vue/compiler-sfc@3.4.15:
|
||||
@ -5793,7 +5740,7 @@ packages:
|
||||
dependencies:
|
||||
'@vue/runtime-core': 3.3.4
|
||||
'@vue/shared': 3.3.4
|
||||
csstype: 3.1.2
|
||||
csstype: 3.1.3
|
||||
|
||||
/@vue/runtime-dom@3.4.15:
|
||||
resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==}
|
||||
@ -7090,18 +7037,10 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/character-entities-html4@2.1.0:
|
||||
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
|
||||
dev: true
|
||||
|
||||
/character-entities-legacy@1.1.4:
|
||||
resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
|
||||
dev: true
|
||||
|
||||
/character-entities-legacy@3.0.0:
|
||||
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
|
||||
dev: true
|
||||
|
||||
/character-entities@1.2.4:
|
||||
resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
|
||||
dev: true
|
||||
@ -7323,10 +7262,6 @@ packages:
|
||||
delayed-stream: 1.0.0
|
||||
dev: true
|
||||
|
||||
/comma-separated-tokens@2.0.3:
|
||||
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
||||
dev: true
|
||||
|
||||
/commander@10.0.1:
|
||||
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
|
||||
engines: {node: '>=14'}
|
||||
@ -7884,9 +7819,6 @@ packages:
|
||||
resolve: 1.22.4
|
||||
dev: true
|
||||
|
||||
/csstype@3.1.2:
|
||||
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
|
||||
|
||||
/csstype@3.1.3:
|
||||
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
||||
|
||||
@ -8609,12 +8541,6 @@ packages:
|
||||
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
|
||||
dev: true
|
||||
|
||||
/devlop@1.1.0:
|
||||
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
dev: true
|
||||
|
||||
/didyoumean@1.2.2:
|
||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||
dev: false
|
||||
@ -10378,88 +10304,6 @@ packages:
|
||||
type-fest: 0.8.1
|
||||
dev: true
|
||||
|
||||
/hast-util-from-parse5@8.0.1:
|
||||
resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
'@types/unist': 3.0.2
|
||||
devlop: 1.1.0
|
||||
hastscript: 8.0.0
|
||||
property-information: 6.4.0
|
||||
vfile: 6.0.1
|
||||
vfile-location: 5.0.2
|
||||
web-namespaces: 2.0.1
|
||||
dev: true
|
||||
|
||||
/hast-util-parse-selector@4.0.0:
|
||||
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
dev: true
|
||||
|
||||
/hast-util-raw@9.0.2:
|
||||
resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
'@types/unist': 3.0.2
|
||||
'@ungap/structured-clone': 1.2.0
|
||||
hast-util-from-parse5: 8.0.1
|
||||
hast-util-to-parse5: 8.0.0
|
||||
html-void-elements: 3.0.0
|
||||
mdast-util-to-hast: 13.1.0
|
||||
parse5: 7.1.2
|
||||
unist-util-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
web-namespaces: 2.0.1
|
||||
zwitch: 2.0.4
|
||||
dev: true
|
||||
|
||||
/hast-util-to-html@9.0.0:
|
||||
resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
'@types/unist': 3.0.2
|
||||
ccount: 2.0.1
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-raw: 9.0.2
|
||||
hast-util-whitespace: 3.0.0
|
||||
html-void-elements: 3.0.0
|
||||
mdast-util-to-hast: 13.1.0
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
stringify-entities: 4.0.3
|
||||
zwitch: 2.0.4
|
||||
dev: true
|
||||
|
||||
/hast-util-to-parse5@8.0.0:
|
||||
resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
devlop: 1.1.0
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
web-namespaces: 2.0.1
|
||||
zwitch: 2.0.4
|
||||
dev: true
|
||||
|
||||
/hast-util-whitespace@3.0.0:
|
||||
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
dev: true
|
||||
|
||||
/hastscript@8.0.0:
|
||||
resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-parse-selector: 4.0.0
|
||||
property-information: 6.4.0
|
||||
space-separated-tokens: 2.0.2
|
||||
dev: true
|
||||
|
||||
/heap@0.2.7:
|
||||
resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==}
|
||||
dev: false
|
||||
@ -10507,10 +10351,6 @@ packages:
|
||||
resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==}
|
||||
dev: false
|
||||
|
||||
/html-void-elements@3.0.0:
|
||||
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
|
||||
dev: true
|
||||
|
||||
/htmlparser2@8.0.2:
|
||||
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
|
||||
dependencies:
|
||||
@ -12486,20 +12326,6 @@ packages:
|
||||
unist-util-is: 5.2.1
|
||||
dev: true
|
||||
|
||||
/mdast-util-to-hast@13.1.0:
|
||||
resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==}
|
||||
dependencies:
|
||||
'@types/hast': 3.0.3
|
||||
'@types/mdast': 4.0.3
|
||||
'@ungap/structured-clone': 1.2.0
|
||||
devlop: 1.1.0
|
||||
micromark-util-sanitize-uri: 2.0.0
|
||||
trim-lines: 3.0.1
|
||||
unist-util-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
dev: true
|
||||
|
||||
/mdast-util-to-markdown@1.5.0:
|
||||
resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
|
||||
dependencies:
|
||||
@ -12755,13 +12581,6 @@ packages:
|
||||
micromark-util-symbol: 1.1.0
|
||||
micromark-util-types: 1.1.0
|
||||
|
||||
/micromark-util-character@2.0.1:
|
||||
resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==}
|
||||
dependencies:
|
||||
micromark-util-symbol: 2.0.0
|
||||
micromark-util-types: 2.0.0
|
||||
dev: true
|
||||
|
||||
/micromark-util-chunked@1.1.0:
|
||||
resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
|
||||
dependencies:
|
||||
@ -12796,10 +12615,6 @@ packages:
|
||||
/micromark-util-encode@1.1.0:
|
||||
resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
|
||||
|
||||
/micromark-util-encode@2.0.0:
|
||||
resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
|
||||
dev: true
|
||||
|
||||
/micromark-util-html-tag-name@1.2.0:
|
||||
resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
|
||||
|
||||
@ -12820,14 +12635,6 @@ packages:
|
||||
micromark-util-encode: 1.1.0
|
||||
micromark-util-symbol: 1.1.0
|
||||
|
||||
/micromark-util-sanitize-uri@2.0.0:
|
||||
resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
|
||||
dependencies:
|
||||
micromark-util-character: 2.0.1
|
||||
micromark-util-encode: 2.0.0
|
||||
micromark-util-symbol: 2.0.0
|
||||
dev: true
|
||||
|
||||
/micromark-util-subtokenize@1.1.0:
|
||||
resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
|
||||
dependencies:
|
||||
@ -12839,17 +12646,9 @@ packages:
|
||||
/micromark-util-symbol@1.1.0:
|
||||
resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
|
||||
|
||||
/micromark-util-symbol@2.0.0:
|
||||
resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
|
||||
dev: true
|
||||
|
||||
/micromark-util-types@1.1.0:
|
||||
resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
|
||||
|
||||
/micromark-util-types@2.0.0:
|
||||
resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
|
||||
dev: true
|
||||
|
||||
/micromark@2.11.4:
|
||||
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
|
||||
dependencies:
|
||||
@ -13038,12 +12837,6 @@ packages:
|
||||
object-assign: 4.1.1
|
||||
thenify-all: 1.6.0
|
||||
|
||||
/nanoid@3.3.6:
|
||||
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/nanoid@3.3.7:
|
||||
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
@ -13781,29 +13574,29 @@ packages:
|
||||
trouter: 2.0.1
|
||||
dev: true
|
||||
|
||||
/postcss-import@15.1.0(postcss@8.4.31):
|
||||
/postcss-import@15.1.0(postcss@8.4.33):
|
||||
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
postcss: ^8.0.0
|
||||
dependencies:
|
||||
postcss: 8.4.31
|
||||
postcss: 8.4.33
|
||||
postcss-value-parser: 4.2.0
|
||||
read-cache: 1.0.0
|
||||
resolve: 1.22.4
|
||||
dev: false
|
||||
|
||||
/postcss-js@4.0.1(postcss@8.4.31):
|
||||
/postcss-js@4.0.1(postcss@8.4.33):
|
||||
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
|
||||
engines: {node: ^12 || ^14 || >= 16}
|
||||
peerDependencies:
|
||||
postcss: ^8.4.21
|
||||
dependencies:
|
||||
camelcase-css: 2.0.1
|
||||
postcss: 8.4.31
|
||||
postcss: 8.4.33
|
||||
dev: false
|
||||
|
||||
/postcss-load-config@4.0.1(postcss@8.4.31)(ts-node@10.9.1):
|
||||
/postcss-load-config@4.0.1(postcss@8.4.33)(ts-node@10.9.1):
|
||||
resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
|
||||
engines: {node: '>= 14'}
|
||||
peerDependencies:
|
||||
@ -13816,18 +13609,18 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
lilconfig: 2.1.0
|
||||
postcss: 8.4.31
|
||||
postcss: 8.4.33
|
||||
ts-node: 10.9.1(@types/node@18.17.5)(typescript@5.1.6)
|
||||
yaml: 2.3.1
|
||||
dev: false
|
||||
|
||||
/postcss-nested@6.0.1(postcss@8.4.31):
|
||||
/postcss-nested@6.0.1(postcss@8.4.33):
|
||||
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
|
||||
engines: {node: '>=12.0'}
|
||||
peerDependencies:
|
||||
postcss: ^8.2.14
|
||||
dependencies:
|
||||
postcss: 8.4.31
|
||||
postcss: 8.4.33
|
||||
postcss-selector-parser: 6.0.13
|
||||
dev: false
|
||||
|
||||
@ -13847,7 +13640,7 @@ packages:
|
||||
resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
dependencies:
|
||||
nanoid: 3.3.6
|
||||
nanoid: 3.3.7
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
dev: false
|
||||
@ -13859,6 +13652,7 @@ packages:
|
||||
nanoid: 3.3.7
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
dev: true
|
||||
|
||||
/postcss@8.4.33:
|
||||
resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
|
||||
@ -13948,10 +13742,6 @@ packages:
|
||||
sisteransi: 1.0.5
|
||||
dev: true
|
||||
|
||||
/property-information@6.4.0:
|
||||
resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==}
|
||||
dev: true
|
||||
|
||||
/proxy-addr@2.0.7:
|
||||
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||
engines: {node: '>= 0.10'}
|
||||
@ -14788,24 +14578,12 @@ packages:
|
||||
resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==}
|
||||
dev: true
|
||||
|
||||
/shikiji-transformers@0.7.6:
|
||||
resolution: {integrity: sha512-yTp+7JMD/aXbV9ndn14eo9IK/UNt8iDsLNyqlOmCtcldlkqWE9T2YKAlOHOTVaeDfYWUWZa2EgSXb/CBfepBrw==}
|
||||
dependencies:
|
||||
shikiji: 0.7.6
|
||||
dev: true
|
||||
|
||||
/shikiji-transformers@0.9.19:
|
||||
resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==}
|
||||
dependencies:
|
||||
shikiji: 0.9.19
|
||||
dev: true
|
||||
|
||||
/shikiji@0.7.6:
|
||||
resolution: {integrity: sha512-KzEtvSGQtBvfwVIB70kOmIfl/5rz1LC8j+tvlHXsJKAIdONNQvG1at7ivUUq3xUctqgO6fsO3AGomUSh0F+wsQ==}
|
||||
dependencies:
|
||||
hast-util-to-html: 9.0.0
|
||||
dev: true
|
||||
|
||||
/shikiji@0.9.19:
|
||||
resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==}
|
||||
dependencies:
|
||||
@ -14958,10 +14736,6 @@ packages:
|
||||
deprecated: Please use @jridgewell/sourcemap-codec instead
|
||||
dev: true
|
||||
|
||||
/space-separated-tokens@2.0.2:
|
||||
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
||||
dev: true
|
||||
|
||||
/spawn-command@0.0.2-1:
|
||||
resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==}
|
||||
dev: true
|
||||
@ -15200,13 +14974,6 @@ packages:
|
||||
dependencies:
|
||||
safe-buffer: 5.2.1
|
||||
|
||||
/stringify-entities@4.0.3:
|
||||
resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
|
||||
dependencies:
|
||||
character-entities-html4: 2.1.0
|
||||
character-entities-legacy: 3.0.0
|
||||
dev: true
|
||||
|
||||
/stringify-object@3.3.0:
|
||||
resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
|
||||
engines: {node: '>=4'}
|
||||
@ -15369,11 +15136,11 @@ packages:
|
||||
normalize-path: 3.0.0
|
||||
object-hash: 3.0.0
|
||||
picocolors: 1.0.0
|
||||
postcss: 8.4.31
|
||||
postcss-import: 15.1.0(postcss@8.4.31)
|
||||
postcss-js: 4.0.1(postcss@8.4.31)
|
||||
postcss-load-config: 4.0.1(postcss@8.4.31)(ts-node@10.9.1)
|
||||
postcss-nested: 6.0.1(postcss@8.4.31)
|
||||
postcss: 8.4.33
|
||||
postcss-import: 15.1.0(postcss@8.4.33)
|
||||
postcss-js: 4.0.1(postcss@8.4.33)
|
||||
postcss-load-config: 4.0.1(postcss@8.4.33)(ts-node@10.9.1)
|
||||
postcss-nested: 6.0.1(postcss@8.4.33)
|
||||
postcss-selector-parser: 6.0.13
|
||||
resolve: 1.22.4
|
||||
sucrase: 3.34.0
|
||||
@ -15619,10 +15386,6 @@ packages:
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/trim-lines@3.0.1:
|
||||
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
||||
dev: true
|
||||
|
||||
/trim-newlines@3.0.1:
|
||||
resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
|
||||
engines: {node: '>=8'}
|
||||
@ -15993,18 +15756,6 @@ packages:
|
||||
'@types/unist': 2.0.7
|
||||
dev: true
|
||||
|
||||
/unist-util-is@6.0.0:
|
||||
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
dev: true
|
||||
|
||||
/unist-util-position@5.0.0:
|
||||
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
dev: true
|
||||
|
||||
/unist-util-stringify-position@2.0.3:
|
||||
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
|
||||
dependencies:
|
||||
@ -16016,12 +15767,6 @@ packages:
|
||||
dependencies:
|
||||
'@types/unist': 2.0.7
|
||||
|
||||
/unist-util-stringify-position@4.0.0:
|
||||
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
dev: true
|
||||
|
||||
/unist-util-visit-parents@5.1.3:
|
||||
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
|
||||
dependencies:
|
||||
@ -16029,13 +15774,6 @@ packages:
|
||||
unist-util-is: 5.2.1
|
||||
dev: true
|
||||
|
||||
/unist-util-visit-parents@6.0.1:
|
||||
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
unist-util-is: 6.0.0
|
||||
dev: true
|
||||
|
||||
/unist-util-visit@4.1.2:
|
||||
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
|
||||
dependencies:
|
||||
@ -16044,14 +15782,6 @@ packages:
|
||||
unist-util-visit-parents: 5.1.3
|
||||
dev: true
|
||||
|
||||
/unist-util-visit@5.0.0:
|
||||
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
unist-util-is: 6.0.0
|
||||
unist-util-visit-parents: 6.0.1
|
||||
dev: true
|
||||
|
||||
/universalify@0.1.2:
|
||||
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
|
||||
engines: {node: '>= 4.0.0'}
|
||||
@ -16244,13 +15974,6 @@ packages:
|
||||
extsprintf: 1.3.0
|
||||
dev: true
|
||||
|
||||
/vfile-location@5.0.2:
|
||||
resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
vfile: 6.0.1
|
||||
dev: true
|
||||
|
||||
/vfile-message@3.1.4:
|
||||
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
|
||||
dependencies:
|
||||
@ -16258,13 +15981,6 @@ packages:
|
||||
unist-util-stringify-position: 3.0.3
|
||||
dev: true
|
||||
|
||||
/vfile-message@4.0.2:
|
||||
resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
unist-util-stringify-position: 4.0.0
|
||||
dev: true
|
||||
|
||||
/vfile@5.3.7:
|
||||
resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
|
||||
dependencies:
|
||||
@ -16274,14 +15990,6 @@ packages:
|
||||
vfile-message: 3.1.4
|
||||
dev: true
|
||||
|
||||
/vfile@6.0.1:
|
||||
resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
|
||||
dependencies:
|
||||
'@types/unist': 3.0.2
|
||||
unist-util-stringify-position: 4.0.0
|
||||
vfile-message: 4.0.2
|
||||
dev: true
|
||||
|
||||
/vite-node@0.34.0(@types/node@18.17.5):
|
||||
resolution: {integrity: sha512-rGZMvpb052rjUwJA/a17xMfOibzNF7byMdRSTcN2Lw8uxX08s5EfjWW5mBkm3MSFTPctMSVtT2yC+8ShrZbT5g==}
|
||||
engines: {node: '>=v14.18.0'}
|
||||
@ -16493,62 +16201,6 @@ packages:
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/vitepress@1.0.0-rc.31(@algolia/client-search@4.19.1)(@types/node@18.17.5)(postcss@8.4.33)(search-insights@2.7.0)(typescript@5.1.6):
|
||||
resolution: {integrity: sha512-ikH9pIjOOAbyoYAGBVfTz8TzuXp+UoWaIRMU4bw/oiTg8R65SbAaGKY84xx6TuL+f4VqUJ8lhzW82YyxSLvstA==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
markdown-it-mathjax3: ^4.3.2
|
||||
postcss: ^8.4.31
|
||||
peerDependenciesMeta:
|
||||
markdown-it-mathjax3:
|
||||
optional: true
|
||||
postcss:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@docsearch/css': 3.5.2
|
||||
'@docsearch/js': 3.5.2(@algolia/client-search@4.19.1)(search-insights@2.7.0)
|
||||
'@types/markdown-it': 13.0.7
|
||||
'@vitejs/plugin-vue': 4.5.0(vite@5.0.11)(vue@3.4.15)
|
||||
'@vue/devtools-api': 6.5.1
|
||||
'@vueuse/core': 10.7.2(vue@3.4.15)
|
||||
'@vueuse/integrations': 10.7.2(focus-trap@7.5.4)(vue@3.4.15)
|
||||
focus-trap: 7.5.4
|
||||
mark.js: 8.11.1
|
||||
minisearch: 6.3.0
|
||||
mrmime: 1.0.1
|
||||
postcss: 8.4.33
|
||||
shikiji: 0.7.6
|
||||
shikiji-transformers: 0.7.6
|
||||
vite: 5.0.11(@types/node@18.17.5)
|
||||
vue: 3.4.15(typescript@5.1.6)
|
||||
transitivePeerDependencies:
|
||||
- '@algolia/client-search'
|
||||
- '@types/node'
|
||||
- '@types/react'
|
||||
- '@vue/composition-api'
|
||||
- async-validator
|
||||
- axios
|
||||
- change-case
|
||||
- drauu
|
||||
- fuse.js
|
||||
- idb-keyval
|
||||
- jwt-decode
|
||||
- less
|
||||
- lightningcss
|
||||
- nprogress
|
||||
- qrcode
|
||||
- react
|
||||
- react-dom
|
||||
- sass
|
||||
- search-insights
|
||||
- sortablejs
|
||||
- stylus
|
||||
- sugarss
|
||||
- terser
|
||||
- typescript
|
||||
- universal-cookie
|
||||
dev: true
|
||||
|
||||
/vitepress@1.0.0-rc.39(@algolia/client-search@4.19.1)(@types/node@18.17.5)(postcss@8.4.33)(search-insights@2.7.0)(typescript@5.1.6):
|
||||
resolution: {integrity: sha512-EcgoRlAAp37WOxUOYv45oxyhLrcy3Upey+mKpqW3ldsg6Ol4trPndRBk2GO0QiSvEKlb9BMerk49D/bFICN6kg==}
|
||||
hasBin: true
|
||||
@ -16839,10 +16491,6 @@ packages:
|
||||
minimalistic-assert: 1.0.1
|
||||
dev: true
|
||||
|
||||
/web-namespaces@2.0.1:
|
||||
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
|
||||
dev: true
|
||||
|
||||
/web-streams-polyfill@3.2.1:
|
||||
resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
|
||||
engines: {node: '>= 8'}
|
||||
|
Loading…
x
Reference in New Issue
Block a user