#3358 Second set of changes after review

This commit is contained in:
Knut Sveidqvist 2024-01-29 16:22:48 +01:00
parent 1629a91a25
commit 37d7c7e2dd
10 changed files with 376 additions and 755 deletions

View File

@ -64,14 +64,14 @@
</head> </head>
<body> <body>
<pre id="diagram" class="mermaid"> <pre id="diagram" class="mermaid">
block-beta block-beta
columns 3 blockArrowId<["Label"]>(right)
a:3 blockArrowId2<["Label"]>(left)
block:e:3 blockArrowId3<["Label"]>(up)
f blockArrowId4<["Label"]>(down)
end blockArrowId5<["Label"]>(x)
g blockArrowId6<["Label"]>(y)
blockArrowId6<["Label"]>(x, down)
</pre> </pre>
<pre id="diagram" class="mermaid"> <pre id="diagram" class="mermaid">
block-beta block-beta

View File

@ -3,23 +3,125 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <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=" /> <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
<style>
div.mermaid {
font-family: 'Courier New', Courier, monospace !important;
}
</style>
</head> </head>
<body> <body>
<h1>Block diagram demos</h1> <h1>Block diagram demos</h1>
<h2>TCI IP</h2> <pre id="diagram" class="mermaid">
<pre class="mermaid"> block-beta
block-beta columns 1
A>"rect_left_inv_arrow"] db(("DB"))
B{"diamond"} blockArrowId6<["&nbsp;&nbsp;&nbsp;"]>(down)
C{{"hexagon"}} 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> </pre>
<script type="module"> <script type="module">

View File

@ -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. 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 #### Column Usage
@ -132,13 +132,13 @@ To create a block diagram where one block spans across two columns, you can spec
```mermaid-example ```mermaid-example
block-beta block-beta
columns 3 columns 3
a["A wide one"] b:2 c:2 d a["A label"] b:2 c:2 d
``` ```
```mermaid ```mermaid
block-beta block-beta
columns 3 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. 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 block-beta
columns 3 columns 3
a:3 a:3
block:e:3 block:group1:2
f columns 2
h i j k
end end
g g
block:group2:3
%% columns auto (default)
l m n o p q r
end
``` ```
```mermaid ```mermaid
block-beta block-beta
columns 3 columns 3
a:3 a:3
block:e:3 block:group1:2
f columns 2
h i j k
end end
g 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. 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 ```mermaid-example
block-beta block-beta
space:3 ida space:3 idb idc
ida idb idc
``` ```
```mermaid ```mermaid
block-beta block-beta
space:3 ida space:3 idb idc
ida 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. 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 Start fill:#969;
style End fill:#696; style End fill:#696;
``` ```
```mermaid ```mermaid
@ -611,19 +618,8 @@ block-beta
style Start fill:#969; style Start fill:#969;
style End fill:#696; 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. 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. 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 #### 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. 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.

View File

@ -19,200 +19,224 @@ const expandAndDeduplicateDirections = (directions) => {
return uniqueDirections; return uniqueDirections;
}; };
export const getArrowPoints = (directions, bbox, node) => { export const getArrowPoints = (duplicatedDirections, bbox, node) => {
const ud = expandAndDeduplicateDirections(directions); // Expand and deduplicate the provided directions.
// for instance: x, right => right, left
// console.log('block_arrow abc123', node.id, node.directions, ud); const directions = expandAndDeduplicateDirections(duplicatedDirections);
// Factor to divide height for some calculations.
const f = 2; 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 = []; 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 // SQUARE
points = [ return [
// Bottom // Bottom
{ x: 0, y: 0 }, { x: 0, y: 0 },
{ x: m, y: 0 }, { x: midpoint, y: 0 },
{ x: w / 2, y: 2 * p }, { x: width / 2, y: 2 * padding },
{ x: w - m, y: 0 }, { x: width - midpoint, y: 0 },
{ x: w, y: 0 }, { x: width, y: 0 },
// Right // Right
{ x: w, y: -h / 3 }, { x: width, y: -height / 3 },
{ x: w + 2 * p, y: -h / 2 }, { x: width + 2 * padding, y: -height / 2 },
{ x: w, y: (-2 * h) / 3 }, { x: width, y: (-2 * height) / 3 },
{ x: w, y: -h }, { x: width, y: -height },
// Top // Top
{ x: w - m, y: -h }, { x: width - midpoint, y: -height },
{ x: w / 2, y: -h - 2 * p }, { x: width / 2, y: -height - 2 * padding },
{ x: m, y: -h }, { x: midpoint, y: -height },
// Left // Left
{ x: 0, y: -h }, { x: 0, y: -height },
{ x: 0, y: (-2 * h) / 3 }, { x: 0, y: (-2 * height) / 3 },
{ x: -2 * p, y: -h / 2 }, { x: -2 * padding, y: -height / 2 },
{ x: 0, y: -h / 3 }, { 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) // RECTANGLE_VERTICAL (Top Open)
points = [ return [
{ x: m, y: 0 }, { x: midpoint, y: 0 },
{ x: w - m, y: 0 }, { x: width - midpoint, y: 0 },
{ x: w, y: -h / 2 }, { x: width, y: -height / 2 },
{ x: w - m, y: -h }, { x: width - midpoint, y: -height },
{ x: m, y: -h }, { x: midpoint, y: -height },
{ x: 0, y: -h / 2 }, { 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) // RECTANGLE_VERTICAL (Bottom Open)
points = [ return [
{ x: 0, y: 0 }, { x: 0, y: 0 },
{ x: m, y: -h }, { x: midpoint, y: -height },
{ x: w - m, y: -h }, { x: width - midpoint, y: -height },
{ x: w, y: 0 }, { 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) // RECTANGLE_HORIZONTAL (Right Open)
points = [ return [
{ x: 0, y: 0 }, { x: 0, y: 0 },
{ x: w, y: -m }, { x: width, y: -midpoint },
{ x: w, y: -h + m }, { x: width, y: -height + midpoint },
{ x: 0, y: -h }, { 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) // RECTANGLE_HORIZONTAL (Left Open)
points = [ return [
{ x: w, y: 0 }, { x: width, y: 0 },
{ x: 0, y: -m }, { x: 0, y: -midpoint },
{ x: 0, y: -h + m }, { x: 0, y: -height + midpoint },
{ x: w, y: -h }, { x: width, y: -height },
]; ];
} else if (ud.has('right') && ud.has('left')) { }
if (directions.has('right') && directions.has('left')) {
// HORIZONTAL_LINE // HORIZONTAL_LINE
points = [ return [
{ x: m, y: 0 }, { x: midpoint, y: 0 },
{ x: m, y: -p }, { x: midpoint, y: -padding },
{ x: w - m, y: -p }, { x: width - midpoint, y: -padding },
{ x: w - m, y: 0 }, { x: width - midpoint, y: 0 },
{ x: w, y: -h / 2 }, { x: width, y: -height / 2 },
{ x: w - m, y: -h }, { x: width - midpoint, y: -height },
{ x: w - m, y: -h + p }, { x: width - midpoint, y: -height + padding },
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
{ x: m, y: -h }, { x: midpoint, y: -height },
{ x: 0, y: -h / 2 }, { x: 0, y: -height / 2 },
]; ];
} else if (ud.has('up') && ud.has('down')) { }
if (directions.has('up') && directions.has('down')) {
// VERTICAL_LINE // VERTICAL_LINE
points = [ return [
// Bottom center // Bottom center
{ x: w / 2, y: 0 }, { x: width / 2, y: 0 },
// Left pont of bottom arrow // Left pont of bottom arrow
{ x: 0, y: -p }, { x: 0, y: -padding },
{ x: m, y: -p }, { x: midpoint, y: -padding },
// Left top over vertical section // Left top over vertical section
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
{ x: 0, y: -h + p }, { x: 0, y: -height + padding },
// Top of arrow // Top of arrow
{ x: w / 2, y: -h }, { x: width / 2, y: -height },
{ x: w, y: -h + p }, { x: width, y: -height + padding },
// Top of right vertical bar // Top of right vertical bar
{ x: w - m, y: -h + p }, { x: width - midpoint, y: -height + padding },
{ x: w - m, y: -p }, { x: width - midpoint, y: -padding },
{ x: w, y: -p }, { x: width, y: -padding },
]; ];
} else if (ud.has('right') && ud.has('up')) { }
if (directions.has('right') && directions.has('up')) {
// ANGLE_RT // ANGLE_RT
points = [ return [
{ x: 0, y: 0 }, { x: 0, y: 0 },
{ x: w, y: -m }, { x: width, y: -midpoint },
{ x: 0, y: -h }, { x: 0, y: -height },
]; ];
} else if (ud.has('right') && ud.has('down')) { }
if (directions.has('right') && directions.has('down')) {
// ANGLE_RB // ANGLE_RB
points = [ return [
{ x: 0, y: 0 }, { x: 0, y: 0 },
{ x: w, y: 0 }, { x: width, y: 0 },
{ x: 0, y: -h }, { x: 0, y: -height },
]; ];
} else if (ud.has('left') && ud.has('up')) { }
if (directions.has('left') && directions.has('up')) {
// ANGLE_LT // ANGLE_LT
points = [ return [
{ x: w, y: 0 }, { x: width, y: 0 },
{ x: 0, y: -m }, { x: 0, y: -midpoint },
{ x: w, y: -h }, { x: width, y: -height },
]; ];
} else if (ud.has('left') && ud.has('down')) { }
if (directions.has('left') && directions.has('down')) {
// ANGLE_LB // ANGLE_LB
points = [ return [
{ x: w, y: 0 }, { x: width, y: 0 },
{ x: 0, 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 // ARROW_RIGHT
points = [ return [
{ x: m, y: -p }, { x: midpoint, y: -padding },
{ x: m, y: -p }, { x: midpoint, y: -padding },
{ x: w - m, y: -p }, { x: width - midpoint, y: -padding },
{ x: w - m, y: 0 }, { x: width - midpoint, y: 0 },
{ x: w, y: -h / 2 }, { x: width, y: -height / 2 },
{ x: w - m, y: -h }, { x: width - midpoint, y: -height },
{ x: w - m, y: -h + p }, { x: width - midpoint, y: -height + padding },
// top left corner of arrow // top left corner of arrow
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
]; ];
} else if (ud.has('left')) { }
if (directions.has('left')) {
// ARROW_LEFT // ARROW_LEFT
points = [ return [
{ x: m, y: 0 }, { x: midpoint, y: 0 },
{ x: m, y: -p }, { x: midpoint, y: -padding },
// Two points, the right corners // Two points, the right corners
{ x: w - m, y: -p }, { x: width - midpoint, y: -padding },
{ x: w - m, y: -h + p }, { x: width - midpoint, y: -height + padding },
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
{ x: m, y: -h }, { x: midpoint, y: -height },
{ x: 0, y: -h / 2 }, { x: 0, y: -height / 2 },
]; ];
} else if (ud.has('up')) { }
if (directions.has('up')) {
// ARROW_TOP // ARROW_TOP
points = [ return [
// Bottom center // Bottom center
{ x: m, y: -p }, { x: midpoint, y: -padding },
// Left top over vertical section // Left top over vertical section
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
{ x: 0, y: -h + p }, { x: 0, y: -height + padding },
// Top of arrow // Top of arrow
{ x: w / 2, y: -h }, { x: width / 2, y: -height },
{ x: w, y: -h + p }, { x: width, y: -height + padding },
// Top of right vertical bar // Top of right vertical bar
{ x: w - m, y: -h + p }, { x: width - midpoint, y: -height + padding },
{ x: w - m, y: -p }, { x: width - midpoint, y: -padding },
]; ];
} else if (ud.has('down')) { }
if (directions.has('down')) {
// ARROW_BOTTOM // ARROW_BOTTOM
points = [ return [
// Bottom center // Bottom center
{ x: w / 2, y: 0 }, { x: width / 2, y: 0 },
// Left pont of bottom arrow // Left pont of bottom arrow
{ x: 0, y: -p }, { x: 0, y: -padding },
{ x: m, y: -p }, { x: midpoint, y: -padding },
// Left top over vertical section // Left top over vertical section
{ x: m, y: -h + p }, { x: midpoint, y: -height + padding },
{ x: w - m, y: -h + p }, { x: width - midpoint, y: -height + padding },
{ x: w - m, y: -p }, { x: width - midpoint, y: -padding },
{ x: w, y: -p }, { x: width, y: -padding },
]; ];
} else {
// POINT
points = [{ x: 0, y: 0 }];
} }
return points; // POINT
return [{ x: 0, y: 0 }];
}; };

View File

@ -28,7 +28,6 @@ export const insertEdgeLabel = (elem, edge) => {
addSvgBackground: true, addSvgBackground: true,
}) })
: createLabel(edge.label, edge.labelStyle); : createLabel(edge.label, edge.labelStyle);
log.info('abc82', edge, edge.labelType);
// Create outer g, edgeLabel, this will be positioned after graph layout // Create outer g, edgeLabel, this will be positioned after graph layout
const edgeLabel = elem.insert('g').attr('class', 'edgeLabel'); const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');
@ -135,7 +134,7 @@ function setTerminalWidth(fo, value) {
} }
export const positionEdgeLabel = (edge, paths) => { 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; let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;
const siteConfig = getConfig(); const siteConfig = getConfig();
const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig); const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
@ -146,7 +145,7 @@ export const positionEdgeLabel = (edge, paths) => {
if (path) { if (path) {
// // debugger; // // debugger;
const pos = utils.calcLabelPosition(path); const pos = utils.calcLabelPosition(path);
log.info( log.debug(
'Moving label ' + edge.label + ' from (', 'Moving label ' + edge.label + ' from (',
x, x,
',', ',',
@ -221,7 +220,6 @@ export const positionEdgeLabel = (edge, paths) => {
}; };
const outsideNode = (node, point) => { const outsideNode = (node, point) => {
// log.warn('Checking bounds ', node, point);
const x = node.x; const x = node.x;
const y = node.y; const y = node.y;
const dx = Math.abs(point.x - x); const dx = Math.abs(point.x - x);
@ -235,7 +233,7 @@ const outsideNode = (node, point) => {
}; };
export const intersection = (node, outsidePoint, insidePoint) => { export const intersection = (node, outsidePoint, insidePoint) => {
log.warn(`intersection calc abc89: log.debug(`intersection calc abc89:
outsidePoint: ${JSON.stringify(outsidePoint)} outsidePoint: ${JSON.stringify(outsidePoint)}
insidePoint : ${JSON.stringify(insidePoint)} insidePoint : ${JSON.stringify(insidePoint)}
node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`); 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; let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;
const h = node.height / 2; 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 Q = Math.abs(outsidePoint.y - insidePoint.y);
const R = Math.abs(outsidePoint.x - insidePoint.x); const R = Math.abs(outsidePoint.x - insidePoint.x);
// log.warn();
if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {
// Intersection is top or bottom of rect. // 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; let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;
r = (R * q) / Q; r = (R * q) / Q;
const res = { const res = {
@ -289,7 +269,7 @@ export const intersection = (node, outsidePoint, insidePoint) => {
res.y = outsidePoint.y; 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; return res;
} else { } 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 : insidePoint.x - R + r;
// let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + 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; 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) { if (r === 0) {
_x = outsidePoint.x; _x = outsidePoint.x;
_y = outsidePoint.y; _y = outsidePoint.y;
@ -330,21 +310,16 @@ export const intersection = (node, outsidePoint, insidePoint) => {
* @returns {Array} Points * @returns {Array} Points
*/ */
const cutPathAtIntersect = (_points, boundryNode) => { const cutPathAtIntersect = (_points, boundryNode) => {
log.warn('abc88 cutPathAtIntersect', _points, boundryNode); log.debug('abc88 cutPathAtIntersect', _points, boundryNode);
let points = []; let points = [];
let lastPointOutside = _points[0]; let lastPointOutside = _points[0];
let isInside = false; let isInside = false;
_points.forEach((point) => { _points.forEach((point) => {
// const node = clusterDb[edge.toCluster].node;
log.info('abc88 checking point', point, boundryNode);
// check if point is inside the boundary rect // check if point is inside the boundary rect
if (!outsideNode(boundryNode, point) && !isInside) { if (!outsideNode(boundryNode, point) && !isInside) {
// First point inside the rect found // First point inside the rect found
// Calc the intersection coord between the point anf the last point outside the rect // Calc the intersection coord between the point anf the last point outside the rect
const inter = intersection(boundryNode, lastPointOutside, point); 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 // // Check case where the intersection is the same as the last point
let pointPresent = false; let pointPresent = false;
@ -354,14 +329,11 @@ const cutPathAtIntersect = (_points, boundryNode) => {
// // if (!pointPresent) { // // if (!pointPresent) {
if (!points.some((e) => e.x === inter.x && e.y === inter.y)) { if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {
points.push(inter); points.push(inter);
} else {
log.warn('abc88 no intersect', inter, points);
} }
// points.push(inter);
isInside = true; isInside = true;
} else { } else {
// Outside // Outside
log.warn('abc88 outside', point, lastPointOutside);
lastPointOutside = point; lastPointOutside = point;
// points.push(point); // points.push(point);
if (!isInside) { if (!isInside) {
@ -369,70 +341,31 @@ const cutPathAtIntersect = (_points, boundryNode) => {
} }
} }
}); });
log.warn('abc88 returning points', points);
return points; return points;
}; };
export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph, id) { export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph, id) {
let points = edge.points; let points = edge.points;
log.info('abc88 InsertEdge: edge=', edge, 'e=', e); log.debug('abc88 InsertEdge: edge=', edge, 'e=', e);
let pointsHasChanged = false; let pointsHasChanged = false;
const tail = graph.node(e.v); const tail = graph.node(e.v);
var head = graph.node(e.w); var head = graph.node(e.w);
log.info('abc88 InsertEdge (head & tail) fin: ', e.v, head, ' --- ', e.w, tail);
if (head?.intersect && tail?.intersect) { if (head?.intersect && tail?.intersect) {
points = points.slice(1, edge.points.length - 1); points = points.slice(1, edge.points.length - 1);
points.unshift(tail.intersect(points[0])); 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])); points.push(head.intersect(points[points.length - 1]));
} else {
log.info('abc88 No intersect');
} }
if (edge.toCluster) { 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); 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; pointsHasChanged = true;
} }
if (edge.fromCluster) { 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(); points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();
pointsHasChanged = true; pointsHasChanged = true;
@ -510,8 +443,6 @@ export const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph
url = url.replace(/\(/g, '\\('); url = url.replace(/\(/g, '\\(');
url = url.replace(/\)/g, '\\)'); url = url.replace(/\)/g, '\\)');
} }
log.info('arrowTypeStart', edge.arrowTypeStart);
log.info('arrowTypeEnd', edge.arrowTypeEnd);
addEdgeMarkers(svgPath, edge, url, id, diagramType); addEdgeMarkers(svgPath, edge, url, id, diagramType);

View File

@ -127,28 +127,11 @@ const block_arrow = async (parent, node) => {
const m = h / f; const m = h / f;
const w = bbox.width + 2 * m + node.padding; 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 points = getArrowPoints(node.directions, bbox, node);
const hex = insertPolygonShape(shapeSvg, w, h, points); const blockArrow = insertPolygonShape(shapeSvg, w, h, points);
hex.attr('style', node.style); blockArrow.attr('style', node.style);
updateNodeBounds(node, hex); updateNodeBounds(node, blockArrow);
node.intersect = function (point) { node.intersect = function (point) {
return intersect.polygon(node, points, point); return intersect.polygon(node, points, point);

View File

@ -115,9 +115,7 @@ export const labelHelper = async (parent, node, _classes, isNode) => {
label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')'); label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');
} }
label.insert('rect', ':first-child'); label.insert('rect', ':first-child');
// if (node.positioned) {
// shapeSvg.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');
// }
return { shapeSvg, bbox, halfPadding, label }; return { shapeSvg, bbox, halfPadding, label };
}; };

View File

@ -1,17 +1,7 @@
// import type { BlockDB } from './blockTypes.js';
import type { DiagramDB } from '../../diagram-api/types.js'; import type { DiagramDB } from '../../diagram-api/types.js';
import type { BlockConfig, BlockType, Block, Link, ClassDef } from './blockTypes.js'; import type { BlockConfig, BlockType, Block, Link, ClassDef } from './blockTypes.js';
import * as configApi from '../../config.js'; import * as configApi from '../../config.js';
import { import { clear as commonClear } from '../common/commonDb.js';
// setAccTitle,
// getAccTitle,
// getAccDescription,
// setAccDescription,
// setDiagramTitle,
// getDiagramTitle,
clear as commonClear,
} from '../common/commonDb.js';
import { log } from '../../logger.js'; import { log } from '../../logger.js';
import clone from 'lodash-es/clone.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 * Called when the parser comes across a style definition
* @example classDef my-style fill:#f96; * @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) * @param styles - the string with 1 or more style attributes (each separated by a comma)
*/ */
export const addStyle2Node = function (id: string, styles = '') { 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. * Add a CSS/style class to the block with the given id.
* If the state isn't already in the list of known states, add it. * If the block isn't already in the list of known blocks, add it.
* Might be called by parser when a style class or CSS class should be applied to a state * 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 itemIds - The id or a list of ids of the item(s) to apply the css class to
* @param cssClassName - CSS class name * @param cssClassName - CSS class name
@ -105,8 +95,10 @@ const populateBlockDatabase = (_blockList: Block[], parent: Block): void => {
setCssClass(block.id, block?.styleClass || ''); setCssClass(block.id, block?.styleClass || '');
continue; continue;
} }
if (block.type === 'applyStyles' && block?.stylesStr) { if (block.type === 'applyStyles') {
addStyle2Node(block.id, block?.stylesStr); if (block?.stylesStr) {
addStyle2Node(block.id, block?.stylesStr);
}
continue; continue;
} }
if (block.type === 'column-setting') { if (block.type === 'column-setting') {
@ -153,19 +145,8 @@ const populateBlockDatabase = (_blockList: Block[], parent: Block): void => {
blockDatabase[newBlock.id] = newBlock; blockDatabase[newBlock.id] = newBlock;
children.push(newBlock); children.push(newBlock);
} }
// log.debug('abc95 space2', children); } else if (newBlock) {
} else { children.push(block);
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);
// }
} }
} }
} }
@ -188,8 +169,7 @@ const clear = (): void => {
edgeCount = {}; edgeCount = {};
}; };
type ITypeStr2Type = (typeStr: string) => BlockType; export function typeStr2Type(typeStr: string) {
export function typeStr2Type(typeStr: string): BlockType {
log.debug('typeStr2Type', typeStr); log.debug('typeStr2Type', typeStr);
switch (typeStr) { switch (typeStr) {
case '[]': case '[]':
@ -228,7 +208,6 @@ export function typeStr2Type(typeStr: string): BlockType {
} }
} }
type IEdgeTypeStr2Type = (typeStr: string) => string;
export function edgeTypeStr2Type(typeStr: string): string { export function edgeTypeStr2Type(typeStr: string): string {
log.debug('typeStr2Type', typeStr); log.debug('typeStr2Type', typeStr);
switch (typeStr) { switch (typeStr) {
@ -238,7 +217,7 @@ export function edgeTypeStr2Type(typeStr: string): string {
return 'normal'; return 'normal';
} }
} }
type IEdgeStrToEdgeDataType = (typeStr: string) => string;
export function edgeStrToEdgeData(typeStr: string): string { export function edgeStrToEdgeData(typeStr: string): string {
switch (typeStr.trim()) { switch (typeStr.trim()) {
case '--x': case '--x':
@ -251,26 +230,22 @@ export function edgeStrToEdgeData(typeStr: string): string {
} }
let cnt = 0; let cnt = 0;
type IGenerateId = () => string;
export const generateId = () => { export const generateId = () => {
cnt++; cnt++;
return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt; return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;
}; };
type ISetHierarchy = (block: Block[]) => void;
const setHierarchy = (block: Block[]): void => { const setHierarchy = (block: Block[]): void => {
rootBlock.children = block; rootBlock.children = block;
populateBlockDatabase(block, rootBlock); populateBlockDatabase(block, rootBlock);
blocks = rootBlock.children; blocks = rootBlock.children;
}; };
type IAddLink = (link: Link) => Link; const addLink = (link: Link): Link => {
const addLink: IAddLink = (link: Link): Link => {
links.push(link); links.push(link);
return link; return link;
}; };
type IGetColumns = (blockid: string) => number;
const getColumns = (blockid: string): number => { const getColumns = (blockid: string): number => {
const block = blockDatabase[blockid]; const block = blockDatabase[blockid];
if (!block) { if (!block) {
@ -285,12 +260,11 @@ const getColumns = (blockid: string): number => {
return block.children.length; return block.children.length;
}; };
type IGetBlocks = () => Block[];
/** /**
* Returns all the blocks as a flat array * Returns all the blocks as a flat array
* @returns * @returns
*/ */
const getBlocksFlat: IGetBlocks = () => { const getBlocksFlat = () => {
const result: Block[] = []; const result: Block[] = [];
// log.debug('abc88 getBlocksFlat', blockDatabase); // log.debug('abc88 getBlocksFlat', blockDatabase);
const keys = Object.keys(blockDatabase); const keys = Object.keys(blockDatabase);
@ -303,56 +277,33 @@ const getBlocksFlat: IGetBlocks = () => {
* Returns the the hierarchy of blocks * Returns the the hierarchy of blocks
* @returns * @returns
*/ */
const getBlocks: IGetBlocks = () => { const getBlocks = () => {
return blocks || []; return blocks || [];
}; };
type IGetEdges = () => Block[]; const getEdges = () => {
const getEdges: IGetEdges = () => {
return edgeList; return edgeList;
}; };
type IGetBlock = (id: string) => Block | undefined; const getBlock = (id: string) => {
const getBlock: IGetBlock = (id: string) => {
return blockDatabase[id]; return blockDatabase[id];
}; };
type ISetBlock = (block: Block) => void;
const setBlock: ISetBlock = (block: Block) => { const setBlock = (block: Block) => {
blockDatabase[block.id] = block; blockDatabase[block.id] = block;
}; };
type IGetLinks = () => Link[]; const getLinks = () => links;
const getLinks: IGetLinks = () => links;
type IGetLogger = () => Console; const getLogger = () => console;
const getLogger: IGetLogger = () => console;
type IGetClasses = () => Record<string, ClassDef>; // type IGetClasses = () => Record<string, ClassDef>;
/** /**
* Return all of the style classes * Return all of the style classes
*/ */
export const getClasses = function () { export const getClasses = function () {
return classes; 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, getConfig: () => configApi.getConfig().block,
addLink: addLink, addLink: addLink,
typeStr2Type: typeStr2Type, typeStr2Type: typeStr2Type,
@ -366,16 +317,11 @@ const db: BlockDB = {
setHierarchy, setHierarchy,
getBlock, getBlock,
setBlock, setBlock,
// getAccTitle,
// setAccTitle,
// getAccDescription,
// setAccDescription,
// getDiagramTitle,
// setDiagramTitle,
getColumns, getColumns,
getClasses, getClasses,
clear, clear,
generateId, generateId,
}; } as const;
export type BlockDB = typeof db & DiagramDB;
export default db; export default db;

View File

@ -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. 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 #### Column Usage
@ -103,7 +103,7 @@ To create a block diagram where one block spans across two columns, you can spec
```mermaid-example ```mermaid-example
block-beta block-beta
columns 3 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. 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 block-beta
columns 3 columns 3
a:3 a:3
block:e:3 block:group1:2
f columns 2
h i j k
end end
g 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. 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 ```mermaid-example
block-beta block-beta
space:3 ida space:3 idb idc
ida 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. 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 Start fill:#969;
style End fill:#696; 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. 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. 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 #### 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. 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
View File

@ -530,8 +530,8 @@ importers:
specifier: ^0.17.0 specifier: ^0.17.0
version: 0.17.0(vite@4.5.0)(workbox-build@7.0.0)(workbox-window@7.0.0) version: 0.17.0(vite@4.5.0)(workbox-build@7.0.0)(workbox-window@7.0.0)
vitepress: vitepress:
specifier: 1.0.0-rc.31 specifier: 1.0.0-rc.39
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) 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: workbox-window:
specifier: ^7.0.0 specifier: ^7.0.0
version: 7.0.0 version: 7.0.0
@ -1376,26 +1376,12 @@ packages:
js-tokens: 4.0.0 js-tokens: 4.0.0
dev: true 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: /@babel/parser@7.23.6:
resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
dependencies: 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): /@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==} resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==}
@ -2325,14 +2311,6 @@ packages:
- supports-color - supports-color
dev: true 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: /@babel/types@7.23.5:
resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -4724,12 +4702,6 @@ packages:
'@types/node': 18.17.5 '@types/node': 18.17.5
dev: true 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: /@types/http-cache-semantics@4.0.1:
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
dev: true dev: true
@ -4815,12 +4787,6 @@ packages:
dependencies: dependencies:
'@types/unist': 2.0.7 '@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: /@types/mdurl@1.0.2:
resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
dev: true dev: true
@ -4964,10 +4930,6 @@ packages:
/@types/unist@2.0.7: /@types/unist@2.0.7:
resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==}
/@types/unist@3.0.2:
resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
dev: true
/@types/uuid@9.0.1: /@types/uuid@9.0.1:
resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==}
dev: true dev: true
@ -5327,10 +5289,6 @@ packages:
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
dev: true 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): /@unocss/astro@0.58.0(rollup@2.79.1)(vite@4.5.0):
resolution: {integrity: sha512-df+tEFO5eKXjQOwSWQhS9IdjD0sfLHLtn8U09sEKR2Nmh5CvpwyBxmvLQgOCilPou7ehmyKfsyGRLZg7IMp+Ew==} resolution: {integrity: sha512-df+tEFO5eKXjQOwSWQhS9IdjD0sfLHLtn8U09sEKR2Nmh5CvpwyBxmvLQgOCilPou7ehmyKfsyGRLZg7IMp+Ew==}
peerDependencies: peerDependencies:
@ -5575,17 +5533,6 @@ packages:
vue: 3.4.15(typescript@5.0.4) vue: 3.4.15(typescript@5.0.4)
dev: true 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): /@vitejs/plugin-vue@5.0.3(vite@5.0.11)(vue@3.4.15):
resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==} resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==}
engines: {node: ^18.0.0 || >=20.0.0} engines: {node: ^18.0.0 || >=20.0.0}
@ -5676,7 +5623,7 @@ packages:
peerDependencies: peerDependencies:
vue: 3.3.4 vue: 3.3.4
dependencies: dependencies:
'@babel/parser': 7.23.0 '@babel/parser': 7.23.6
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.0.2 source-map-js: 1.0.2
vue: 3.4.15(typescript@5.1.6) vue: 3.4.15(typescript@5.1.6)
@ -5685,7 +5632,7 @@ packages:
/@vue/compiler-core@3.3.4: /@vue/compiler-core@3.3.4:
resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
dependencies: dependencies:
'@babel/parser': 7.23.0 '@babel/parser': 7.23.6
'@vue/shared': 3.3.4 '@vue/shared': 3.3.4
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.0.2 source-map-js: 1.0.2
@ -5714,7 +5661,7 @@ packages:
/@vue/compiler-sfc@3.3.4: /@vue/compiler-sfc@3.3.4:
resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
dependencies: dependencies:
'@babel/parser': 7.23.5 '@babel/parser': 7.23.6
'@vue/compiler-core': 3.3.4 '@vue/compiler-core': 3.3.4
'@vue/compiler-dom': 3.3.4 '@vue/compiler-dom': 3.3.4
'@vue/compiler-ssr': 3.3.4 '@vue/compiler-ssr': 3.3.4
@ -5722,7 +5669,7 @@ packages:
'@vue/shared': 3.3.4 '@vue/shared': 3.3.4
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.5 magic-string: 0.30.5
postcss: 8.4.31 postcss: 8.4.33
source-map-js: 1.0.2 source-map-js: 1.0.2
/@vue/compiler-sfc@3.4.15: /@vue/compiler-sfc@3.4.15:
@ -5793,7 +5740,7 @@ packages:
dependencies: dependencies:
'@vue/runtime-core': 3.3.4 '@vue/runtime-core': 3.3.4
'@vue/shared': 3.3.4 '@vue/shared': 3.3.4
csstype: 3.1.2 csstype: 3.1.3
/@vue/runtime-dom@3.4.15: /@vue/runtime-dom@3.4.15:
resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==} resolution: {integrity: sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==}
@ -7090,18 +7037,10 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/character-entities-html4@2.1.0:
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
dev: true
/character-entities-legacy@1.1.4: /character-entities-legacy@1.1.4:
resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
dev: true dev: true
/character-entities-legacy@3.0.0:
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
dev: true
/character-entities@1.2.4: /character-entities@1.2.4:
resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
dev: true dev: true
@ -7323,10 +7262,6 @@ packages:
delayed-stream: 1.0.0 delayed-stream: 1.0.0
dev: true dev: true
/comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
dev: true
/commander@10.0.1: /commander@10.0.1:
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
engines: {node: '>=14'} engines: {node: '>=14'}
@ -7884,9 +7819,6 @@ packages:
resolve: 1.22.4 resolve: 1.22.4
dev: true dev: true
/csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
/csstype@3.1.3: /csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
@ -8609,12 +8541,6 @@ packages:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
dev: true 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: /didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dev: false dev: false
@ -10378,88 +10304,6 @@ packages:
type-fest: 0.8.1 type-fest: 0.8.1
dev: true 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: /heap@0.2.7:
resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==}
dev: false dev: false
@ -10507,10 +10351,6 @@ packages:
resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==}
dev: false dev: false
/html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
dev: true
/htmlparser2@8.0.2: /htmlparser2@8.0.2:
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
dependencies: dependencies:
@ -12486,20 +12326,6 @@ packages:
unist-util-is: 5.2.1 unist-util-is: 5.2.1
dev: true 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: /mdast-util-to-markdown@1.5.0:
resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
dependencies: dependencies:
@ -12755,13 +12581,6 @@ packages:
micromark-util-symbol: 1.1.0 micromark-util-symbol: 1.1.0
micromark-util-types: 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: /micromark-util-chunked@1.1.0:
resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
dependencies: dependencies:
@ -12796,10 +12615,6 @@ packages:
/micromark-util-encode@1.1.0: /micromark-util-encode@1.1.0:
resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} 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: /micromark-util-html-tag-name@1.2.0:
resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
@ -12820,14 +12635,6 @@ packages:
micromark-util-encode: 1.1.0 micromark-util-encode: 1.1.0
micromark-util-symbol: 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: /micromark-util-subtokenize@1.1.0:
resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
dependencies: dependencies:
@ -12839,17 +12646,9 @@ packages:
/micromark-util-symbol@1.1.0: /micromark-util-symbol@1.1.0:
resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} 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: /micromark-util-types@1.1.0:
resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
/micromark-util-types@2.0.0:
resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
dev: true
/micromark@2.11.4: /micromark@2.11.4:
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
dependencies: dependencies:
@ -13038,12 +12837,6 @@ packages:
object-assign: 4.1.1 object-assign: 4.1.1
thenify-all: 1.6.0 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: /nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@ -13781,29 +13574,29 @@ packages:
trouter: 2.0.1 trouter: 2.0.1
dev: true 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==} resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
postcss: ^8.0.0 postcss: ^8.0.0
dependencies: dependencies:
postcss: 8.4.31 postcss: 8.4.33
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
read-cache: 1.0.0 read-cache: 1.0.0
resolve: 1.22.4 resolve: 1.22.4
dev: false 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==} resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16} engines: {node: ^12 || ^14 || >= 16}
peerDependencies: peerDependencies:
postcss: ^8.4.21 postcss: ^8.4.21
dependencies: dependencies:
camelcase-css: 2.0.1 camelcase-css: 2.0.1
postcss: 8.4.31 postcss: 8.4.33
dev: false 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==} resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
peerDependencies: peerDependencies:
@ -13816,18 +13609,18 @@ packages:
optional: true optional: true
dependencies: dependencies:
lilconfig: 2.1.0 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) ts-node: 10.9.1(@types/node@18.17.5)(typescript@5.1.6)
yaml: 2.3.1 yaml: 2.3.1
dev: false 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==} resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'} engines: {node: '>=12.0'}
peerDependencies: peerDependencies:
postcss: ^8.2.14 postcss: ^8.2.14
dependencies: dependencies:
postcss: 8.4.31 postcss: 8.4.33
postcss-selector-parser: 6.0.13 postcss-selector-parser: 6.0.13
dev: false dev: false
@ -13847,7 +13640,7 @@ packages:
resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
dependencies: dependencies:
nanoid: 3.3.6 nanoid: 3.3.7
picocolors: 1.0.0 picocolors: 1.0.0
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: false dev: false
@ -13859,6 +13652,7 @@ packages:
nanoid: 3.3.7 nanoid: 3.3.7
picocolors: 1.0.0 picocolors: 1.0.0
source-map-js: 1.0.2 source-map-js: 1.0.2
dev: true
/postcss@8.4.33: /postcss@8.4.33:
resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
@ -13948,10 +13742,6 @@ packages:
sisteransi: 1.0.5 sisteransi: 1.0.5
dev: true dev: true
/property-information@6.4.0:
resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==}
dev: true
/proxy-addr@2.0.7: /proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'} engines: {node: '>= 0.10'}
@ -14788,24 +14578,12 @@ packages:
resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==} resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==}
dev: true 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: /shikiji-transformers@0.9.19:
resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==} resolution: {integrity: sha512-lGLI7Z8frQrIBbhZ74/eiJtxMoCQRbpaHEB+gcfvdIy+ZFaAtXncJGnc52932/UET+Y4GyKtwwC/vjWUCp+c/Q==}
dependencies: dependencies:
shikiji: 0.9.19 shikiji: 0.9.19
dev: true 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: /shikiji@0.9.19:
resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==} resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==}
dependencies: dependencies:
@ -14958,10 +14736,6 @@ packages:
deprecated: Please use @jridgewell/sourcemap-codec instead deprecated: Please use @jridgewell/sourcemap-codec instead
dev: true dev: true
/space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
dev: true
/spawn-command@0.0.2-1: /spawn-command@0.0.2-1:
resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==}
dev: true dev: true
@ -15200,13 +14974,6 @@ packages:
dependencies: dependencies:
safe-buffer: 5.2.1 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: /stringify-object@3.3.0:
resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -15369,11 +15136,11 @@ packages:
normalize-path: 3.0.0 normalize-path: 3.0.0
object-hash: 3.0.0 object-hash: 3.0.0
picocolors: 1.0.0 picocolors: 1.0.0
postcss: 8.4.31 postcss: 8.4.33
postcss-import: 15.1.0(postcss@8.4.31) postcss-import: 15.1.0(postcss@8.4.33)
postcss-js: 4.0.1(postcss@8.4.31) postcss-js: 4.0.1(postcss@8.4.33)
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)
postcss-nested: 6.0.1(postcss@8.4.31) postcss-nested: 6.0.1(postcss@8.4.33)
postcss-selector-parser: 6.0.13 postcss-selector-parser: 6.0.13
resolve: 1.22.4 resolve: 1.22.4
sucrase: 3.34.0 sucrase: 3.34.0
@ -15619,10 +15386,6 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
dev: true
/trim-newlines@3.0.1: /trim-newlines@3.0.1:
resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -15993,18 +15756,6 @@ packages:
'@types/unist': 2.0.7 '@types/unist': 2.0.7
dev: true 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: /unist-util-stringify-position@2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
dependencies: dependencies:
@ -16016,12 +15767,6 @@ packages:
dependencies: dependencies:
'@types/unist': 2.0.7 '@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: /unist-util-visit-parents@5.1.3:
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
dependencies: dependencies:
@ -16029,13 +15774,6 @@ packages:
unist-util-is: 5.2.1 unist-util-is: 5.2.1
dev: true 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: /unist-util-visit@4.1.2:
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
dependencies: dependencies:
@ -16044,14 +15782,6 @@ packages:
unist-util-visit-parents: 5.1.3 unist-util-visit-parents: 5.1.3
dev: true 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: /universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'} engines: {node: '>= 4.0.0'}
@ -16244,13 +15974,6 @@ packages:
extsprintf: 1.3.0 extsprintf: 1.3.0
dev: true 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: /vfile-message@3.1.4:
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
dependencies: dependencies:
@ -16258,13 +15981,6 @@ packages:
unist-util-stringify-position: 3.0.3 unist-util-stringify-position: 3.0.3
dev: true 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: /vfile@5.3.7:
resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
dependencies: dependencies:
@ -16274,14 +15990,6 @@ packages:
vfile-message: 3.1.4 vfile-message: 3.1.4
dev: true 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): /vite-node@0.34.0(@types/node@18.17.5):
resolution: {integrity: sha512-rGZMvpb052rjUwJA/a17xMfOibzNF7byMdRSTcN2Lw8uxX08s5EfjWW5mBkm3MSFTPctMSVtT2yC+8ShrZbT5g==} resolution: {integrity: sha512-rGZMvpb052rjUwJA/a17xMfOibzNF7byMdRSTcN2Lw8uxX08s5EfjWW5mBkm3MSFTPctMSVtT2yC+8ShrZbT5g==}
engines: {node: '>=v14.18.0'} engines: {node: '>=v14.18.0'}
@ -16493,62 +16201,6 @@ packages:
- typescript - typescript
dev: true 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): /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==} resolution: {integrity: sha512-EcgoRlAAp37WOxUOYv45oxyhLrcy3Upey+mKpqW3ldsg6Ol4trPndRBk2GO0QiSvEKlb9BMerk49D/bFICN6kg==}
hasBin: true hasBin: true
@ -16839,10 +16491,6 @@ packages:
minimalistic-assert: 1.0.1 minimalistic-assert: 1.0.1
dev: true dev: true
/web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
dev: true
/web-streams-polyfill@3.2.1: /web-streams-polyfill@3.2.1:
resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
engines: {node: '>= 8'} engines: {node: '>= 8'}