@brett_lamy/docstream 1.14.1 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -4
- package/dist/docs/Mermaid.d.ts +19 -1
- package/dist/docs/Mermaid.d.ts.map +1 -1
- package/dist/docs/Mermaid.js +52 -26
- package/dist/docs/Mermaid.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/styles.css +110 -8
- package/package.json +2 -2
- package/src/docs/Mermaid.tsx +89 -46
- package/src/index.ts +2 -0
- package/src/styles.css +110 -8
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ GitBook-aware markdown rendering for React applications and AI streaming surface
|
|
|
13
13
|
Markdown vs HTML images, blank lines between blocks, list markers, fences, table layout and tag lines as written).
|
|
14
14
|
Layout-only fields (`gap`, `raw`, `opening`, …) are recorded only where the source differs from the default
|
|
15
15
|
output, and are ignored once they no longer fit an edited node.
|
|
16
|
-
- Syntax-highlighted code blocks through `gpu-lexer`; Mermaid diagrams and KaTeX math load on first use.
|
|
16
|
+
- Syntax-highlighted code blocks through `gpu-lexer`; Mermaid diagrams (drawn by [Pele](https://pele.run)) and KaTeX math load on first use.
|
|
17
17
|
- GitBook block support for hints, tabs, expandables, steppers, embeds, content refs, columns, figures, tables, math, dividers, updates, and OpenAPI operations.
|
|
18
18
|
- Embed blocks render YouTube/direct video URLs through the built-in `VideoEmbed` and public Loop QA task, journey, exploration, or test-run URLs through `ReplayPreview`.
|
|
19
19
|
- CSS exported as a stable package entrypoint so host apps can theme with CSS variables or shadcn-style design tokens.
|
|
@@ -31,8 +31,20 @@ pnpm add @brett_lamy/docstream
|
|
|
31
31
|
React and React DOM are peer dependencies and must be provided by your app.
|
|
32
32
|
Nothing in docstream's dependency tree runs an install script, so
|
|
33
33
|
`pnpm add` succeeds with no build-script prompts (no `ERR_PNPM_IGNORED_BUILDS`).
|
|
34
|
-
Heavy renderers are loaded only when a page needs them:
|
|
35
|
-
` ```mermaid ` fences
|
|
34
|
+
Heavy renderers are loaded only when a page needs them: Pele for
|
|
35
|
+
` ```mermaid ` fences (only the diagram types the page uses), KaTeX for math
|
|
36
|
+
blocks, rrweb for replay event lists.
|
|
37
|
+
|
|
38
|
+
` ```mermaid ` fences are drawn by [Pele](https://pele.run), which turns Mermaid
|
|
39
|
+
text into SVG synchronously, without Mermaid or a browser layout pass. Each
|
|
40
|
+
diagram is a card: the source on the left (with a copy button), the drawing on
|
|
41
|
+
the right with **Open in Playground** and the render time; the panes stack on a
|
|
42
|
+
narrow page. Pele reads its colors from `--pele-*` variables, which docstream
|
|
43
|
+
maps to its theme on `.docs-mermaid-preview`. `PeleDiagram` (the drawing pane)
|
|
44
|
+
and `usePele(code, ref)` are exported for hosts that show the source
|
|
45
|
+
themselves, as the editor does. Pele supports every diagram type built into
|
|
46
|
+
Mermaid, though its layout is its own. A diagram it can't draw shows Pele's
|
|
47
|
+
error as text.
|
|
36
48
|
|
|
37
49
|
Two features are opt-in, each behind its own entry and an **optional** peer
|
|
38
50
|
dependency that the rest of the package never references:
|
|
@@ -840,7 +852,7 @@ import { ReactDemo } from "@brett_lamy/docstream/playground"
|
|
|
840
852
|
|
|
841
853
|
Since 1.4 the package ships compiled ES modules (ES2022, `react-jsx`) with type
|
|
842
854
|
declarations and declaration maps — one file per source module in `dist/`,
|
|
843
|
-
dependencies left as imports, lazy features (
|
|
855
|
+
dependencies left as imports, lazy features (Pele, KaTeX, rrweb, the
|
|
844
856
|
playground's almost-node) still behind dynamic `import()`:
|
|
845
857
|
|
|
846
858
|
```json
|
package/dist/docs/Mermaid.d.ts
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import { type ReactNode, type RefObject } from "react";
|
|
1
2
|
export interface MermaidProps {
|
|
2
3
|
code: string;
|
|
4
|
+
/** Accepted for compatibility with older documents; the source pane always shows the whole diagram. */
|
|
3
5
|
collapsedCodeLines?: number;
|
|
4
6
|
expandedCodeLines?: number;
|
|
5
7
|
}
|
|
6
|
-
|
|
8
|
+
/** Pele's playground, opened on this source. Long sources don't fit in a link. */
|
|
9
|
+
export declare function pelePlaygroundUrl(code: string): string | null;
|
|
10
|
+
export interface PeleDrawing {
|
|
11
|
+
svg?: string;
|
|
12
|
+
error?: string;
|
|
13
|
+
/** How long Pele took to draw it. */
|
|
14
|
+
ms?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Draws `code` with Pele: the SVG (or the error) and the render time; null until it's drawn. */
|
|
17
|
+
export declare function usePele(code: string, host: RefObject<HTMLElement | null>): PeleDrawing | null;
|
|
18
|
+
/** The drawing pane: "Pele", the playground link, the diagram and its render time. */
|
|
19
|
+
export declare function PeleDiagram({ code, className, children }: {
|
|
20
|
+
code: string;
|
|
21
|
+
className?: string;
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
}): import("react").JSX.Element;
|
|
24
|
+
export declare function Mermaid({ code }: MermaidProps): import("react").JSX.Element;
|
|
7
25
|
//# sourceMappingURL=Mermaid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mermaid.d.ts","sourceRoot":"","sources":["../../src/docs/Mermaid.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Mermaid.d.ts","sourceRoot":"","sources":["../../src/docs/Mermaid.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAU1F,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,uGAAuG;IACvG,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,GAAG,IAAI,CAiC7F;AAID,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,+BA2BpH;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY,+BAkB7C"}
|
package/dist/docs/Mermaid.js
CHANGED
|
@@ -1,39 +1,65 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useEffect, useId, useState } from "react";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import { Play } from "lucide-react";
|
|
3
4
|
import { HighlightedCode } from "./HighlightedCode.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { CopyIcon, useCopied } from "./copy.js";
|
|
6
|
+
/** Pele's playground, opened on this source. Long sources don't fit in a link. */
|
|
7
|
+
export function pelePlaygroundUrl(code) {
|
|
8
|
+
const hash = new URLSearchParams({ source: code }).toString();
|
|
9
|
+
return hash.length > 8000 ? null : `https://pele.run/playground#${hash}`;
|
|
7
10
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const [
|
|
11
|
-
const
|
|
12
|
-
const codePanelId = useId();
|
|
13
|
-
const collapsedLines = positiveLineCount(collapsedCodeLines, 3);
|
|
14
|
-
const expandedLines = Math.max(collapsedLines, positiveLineCount(expandedCodeLines, 30));
|
|
11
|
+
/** Draws `code` with Pele: the SVG (or the error) and the render time; null until it's drawn. */
|
|
12
|
+
export function usePele(code, host) {
|
|
13
|
+
const [drawn, setDrawn] = useState(null);
|
|
14
|
+
const idPrefix = `pele-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}-`;
|
|
15
15
|
useEffect(() => {
|
|
16
16
|
let cancelled = false;
|
|
17
|
-
import("
|
|
18
|
-
.then(async (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
import("pele/lazy")
|
|
18
|
+
.then(async (pele) => {
|
|
19
|
+
await pele.load(pele.detectType(code));
|
|
20
|
+
if (cancelled)
|
|
21
|
+
return;
|
|
22
|
+
// Pele measures text itself, so it needs the font the diagram is shown in.
|
|
23
|
+
const style = host.current ? getComputedStyle(host.current) : null;
|
|
24
|
+
const font = style ? style.getPropertyValue("--pele-font").trim() || style.fontFamily : "";
|
|
25
|
+
// …and the SVG draws in `--pele-font`, so measure and draw with the same one.
|
|
26
|
+
if (font && host.current && !style?.getPropertyValue("--pele-font").trim())
|
|
27
|
+
host.current.style.setProperty("--pele-font", font);
|
|
28
|
+
const start = performance.now();
|
|
29
|
+
try {
|
|
30
|
+
// The pane's width: a wide left-to-right chart turns top-down in a narrow pane rather than shrinking.
|
|
31
|
+
const width = host.current ? host.current.clientWidth - parseFloat(style?.paddingLeft ?? "0") - parseFloat(style?.paddingRight ?? "0") : 0;
|
|
32
|
+
const { svg } = pele.render(code, { idPrefix, ...(font ? { fontFamily: font } : {}), ...(width > 0 ? { maxWidth: width } : {}) });
|
|
33
|
+
setDrawn({ svg, ms: performance.now() - start });
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
if (!(e instanceof pele.PeleError))
|
|
37
|
+
throw e;
|
|
38
|
+
setDrawn({ error: e.message });
|
|
39
|
+
}
|
|
26
40
|
})
|
|
27
41
|
.catch((e) => {
|
|
28
42
|
if (!cancelled)
|
|
29
|
-
|
|
43
|
+
setDrawn({ error: String(e?.message ?? e) });
|
|
30
44
|
});
|
|
31
45
|
return () => {
|
|
32
46
|
cancelled = true;
|
|
33
47
|
};
|
|
34
|
-
}, [code]);
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
}, [code, idPrefix, host]);
|
|
49
|
+
return drawn;
|
|
50
|
+
}
|
|
51
|
+
const formatMs = (ms) => (ms < 10 ? `${ms.toFixed(1)} ms` : `${Math.round(ms)} ms`);
|
|
52
|
+
/** The drawing pane: "Pele", the playground link, the diagram and its render time. */
|
|
53
|
+
export function PeleDiagram({ code, className, children }) {
|
|
54
|
+
const host = useRef(null);
|
|
55
|
+
const drawn = usePele(code, host);
|
|
56
|
+
const playground = pelePlaygroundUrl(code);
|
|
57
|
+
return (_jsxs("div", { ref: host, className: `docs-pele-pane docs-pele-diagram-pane${className ? ` ${className}` : ""}`, children: [_jsxs("div", { className: "docs-pele-head", children: [_jsx("span", { className: "docs-pele-label", children: "Pele" }), playground ? (_jsxs("a", { className: "docs-pele-action", href: playground, target: "_blank", rel: "noreferrer", children: [_jsx(Play, { width: 14, height: 14, strokeWidth: 2, "aria-hidden": "true" }), "Open in Playground"] })) : null] }), drawn?.error !== undefined ? (
|
|
58
|
+
// The message quotes the diagram source: text, never markup.
|
|
59
|
+
_jsx("pre", { className: "docs-mermaid-error", role: "alert", children: drawn.error })) : drawn?.svg ? (_jsx("div", { className: "docs-mermaid", dangerouslySetInnerHTML: { __html: drawn.svg } })) : (_jsx("div", { className: "docs-mermaid docs-mermaid-pending", children: "Drawing\u2026" })), drawn?.ms !== undefined ? _jsx("span", { className: "docs-pele-time", children: formatMs(drawn.ms) }) : null, children] }));
|
|
60
|
+
}
|
|
61
|
+
export function Mermaid({ code }) {
|
|
62
|
+
const { copied, copy } = useCopied();
|
|
63
|
+
return (_jsxs("section", { className: "docs-mermaid-preview", "data-docstream-mermaid": "", children: [_jsxs("div", { className: "docs-pele-pane docs-pele-source-pane", children: [_jsxs("div", { className: "docs-pele-head", children: [_jsx("span", { className: "docs-pele-label", children: "Mermaid" }), _jsx("button", { type: "button", className: "docs-pele-action docs-pele-copy", "aria-label": copied ? "Copied" : "Copy Mermaid source", onClick: () => void copy(code), children: _jsx(CopyIcon, { copied: copied, size: 16 }) })] }), _jsx("pre", { className: "docs-pele-source", children: _jsx(HighlightedCode, { code: code, language: "mermaid" }) })] }), _jsx(PeleDiagram, { code: code })] }));
|
|
38
64
|
}
|
|
39
65
|
//# sourceMappingURL=Mermaid.js.map
|
package/dist/docs/Mermaid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mermaid.js","sourceRoot":"","sources":["../../src/docs/Mermaid.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"Mermaid.js","sourceRoot":"","sources":["../../src/docs/Mermaid.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export type { VideoEmbedProps } from "./video/index.js";
|
|
|
28
28
|
export { StlViewer, isStlUrl, parseStl } from "./stl/index.js";
|
|
29
29
|
export type { StlMesh, StlViewerProps } from "./stl/index.js";
|
|
30
30
|
export { StrudelPlayer } from "./strudel/StrudelPlayer.js";
|
|
31
|
+
export { Mermaid, PeleDiagram, pelePlaygroundUrl, usePele } from "./docs/Mermaid.js";
|
|
32
|
+
export type { MermaidProps, PeleDrawing } from "./docs/Mermaid.js";
|
|
31
33
|
export { isStrudelFile, isStrudelLanguage } from "./strudel/url.js";
|
|
32
34
|
export type { StrudelPlayerProps } from "./strudel/StrudelPlayer.js";
|
|
33
35
|
export { OpenApiOperation } from "./openapi/OpenApiOperation.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC3F,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC3H,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EACL,SAAS,EACT,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,oCAAoC,EACpC,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,QAAQ,CAAA;AACf,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACxF,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACrF,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrD,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACpF,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAChI,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC3F,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACvG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,mBAAmB,eAAe,CAAA;AAClC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ export { isReplayQaUrl, normalizeReplayEmbedUrl } from "./replay/url.js";
|
|
|
17
17
|
export { VideoEmbed } from "./video/index.js";
|
|
18
18
|
export { StlViewer, isStlUrl, parseStl } from "./stl/index.js";
|
|
19
19
|
export { StrudelPlayer } from "./strudel/StrudelPlayer.js";
|
|
20
|
+
export { Mermaid, PeleDiagram, pelePlaygroundUrl, usePele } from "./docs/Mermaid.js";
|
|
20
21
|
export { isStrudelFile, isStrudelLanguage } from "./strudel/url.js";
|
|
21
22
|
export { OpenApiOperation } from "./openapi/OpenApiOperation.js";
|
|
22
23
|
export { createInlineDemoProject, createReactDemoFiles } from "./playground/project.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/styles.css
CHANGED
|
@@ -1545,34 +1545,136 @@
|
|
|
1545
1545
|
}
|
|
1546
1546
|
|
|
1547
1547
|
.docs-mermaid-preview {
|
|
1548
|
+
/* Pele draws with these; they follow the theme without a redraw. */
|
|
1549
|
+
--pele-bg: transparent;
|
|
1550
|
+
--pele-fg: var(--gb-panel-foreground);
|
|
1551
|
+
--pele-muted: var(--gb-muted-foreground);
|
|
1552
|
+
--pele-line: var(--gb-muted-foreground);
|
|
1553
|
+
--pele-surface: var(--gb-hover);
|
|
1554
|
+
--pele-surface-alt: var(--gb-code-bg);
|
|
1555
|
+
--pele-border: var(--gb-border);
|
|
1556
|
+
--pele-accent: var(--gb-primary);
|
|
1557
|
+
--pele-error: var(--gb-danger);
|
|
1558
|
+
--pele-radius: 6px;
|
|
1559
|
+
display: grid;
|
|
1560
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
|
|
1548
1561
|
border: 1px solid var(--gb-border);
|
|
1549
|
-
border-radius:
|
|
1562
|
+
border-radius: 16px;
|
|
1550
1563
|
overflow: hidden;
|
|
1564
|
+
background: var(--gb-panel);
|
|
1565
|
+
color: var(--gb-panel-foreground);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
.docs-pele-pane {
|
|
1569
|
+
position: relative;
|
|
1570
|
+
display: flex;
|
|
1571
|
+
flex-direction: column;
|
|
1572
|
+
min-width: 0;
|
|
1573
|
+
padding: 14px 18px 18px;
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
/* Side by side, a hairline between; stacked, a hairline above the drawing. */
|
|
1577
|
+
.docs-pele-source-pane {
|
|
1578
|
+
box-shadow: 1px 0 0 var(--gb-border), 0 1px 0 var(--gb-border);
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
.docs-pele-head {
|
|
1582
|
+
display: flex;
|
|
1583
|
+
align-items: center;
|
|
1584
|
+
justify-content: space-between;
|
|
1585
|
+
gap: 12px;
|
|
1586
|
+
min-height: 28px;
|
|
1587
|
+
margin-bottom: 10px;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
.docs-pele-label {
|
|
1591
|
+
font-size: 13px;
|
|
1592
|
+
color: var(--gb-muted-foreground);
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
.docs-pele-action {
|
|
1596
|
+
display: inline-flex;
|
|
1597
|
+
align-items: center;
|
|
1598
|
+
gap: 6px;
|
|
1599
|
+
padding: 4px 6px;
|
|
1600
|
+
margin-right: -6px;
|
|
1601
|
+
border: 0;
|
|
1602
|
+
border-radius: 6px;
|
|
1603
|
+
background: none;
|
|
1604
|
+
font: inherit;
|
|
1605
|
+
font-size: 13px;
|
|
1606
|
+
color: var(--gb-muted-foreground);
|
|
1607
|
+
text-decoration: none;
|
|
1608
|
+
cursor: pointer;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
.docs-mermaid-preview a.docs-pele-action {
|
|
1612
|
+
color: var(--gb-muted-foreground);
|
|
1613
|
+
text-decoration: none;
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
.docs-pele-action:hover,
|
|
1617
|
+
.docs-mermaid-preview a.docs-pele-action:hover {
|
|
1618
|
+
background: var(--gb-hover);
|
|
1619
|
+
color: var(--gb-panel-foreground);
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
.docs-pele-action:focus-visible {
|
|
1623
|
+
outline: 2px solid var(--gb-primary);
|
|
1624
|
+
outline-offset: 1px;
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
.docs-pele-source {
|
|
1628
|
+
margin: 0;
|
|
1629
|
+
overflow: auto;
|
|
1630
|
+
font-size: 13px;
|
|
1631
|
+
line-height: 1.7;
|
|
1632
|
+
white-space: pre;
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
.docs-mermaid-preview .docs-pele-source code {
|
|
1636
|
+
padding: 0;
|
|
1637
|
+
border: 0;
|
|
1638
|
+
border-radius: 0;
|
|
1639
|
+
background: none;
|
|
1640
|
+
font-size: inherit;
|
|
1551
1641
|
}
|
|
1552
1642
|
|
|
1553
1643
|
.docs-mermaid {
|
|
1554
1644
|
display: flex;
|
|
1645
|
+
flex: 1;
|
|
1646
|
+
align-items: center;
|
|
1555
1647
|
justify-content: center;
|
|
1556
|
-
|
|
1557
|
-
|
|
1648
|
+
min-height: 120px;
|
|
1649
|
+
padding: 8px 0 18px;
|
|
1558
1650
|
}
|
|
1559
1651
|
|
|
1560
1652
|
.docs-mermaid svg {
|
|
1561
1653
|
max-width: 100%;
|
|
1654
|
+
height: auto;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
.docs-mermaid-pending {
|
|
1658
|
+
font-size: 13px;
|
|
1659
|
+
color: var(--gb-muted-foreground);
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
.docs-pele-time {
|
|
1663
|
+
position: absolute;
|
|
1664
|
+
right: 18px;
|
|
1665
|
+
bottom: 12px;
|
|
1666
|
+
font-size: 12px;
|
|
1667
|
+
font-variant-numeric: tabular-nums;
|
|
1668
|
+
color: var(--gb-muted-foreground);
|
|
1562
1669
|
}
|
|
1563
1670
|
|
|
1564
1671
|
.docs-mermaid-error {
|
|
1565
1672
|
margin: 0;
|
|
1566
1673
|
font-size: 12px;
|
|
1567
1674
|
color: var(--gb-danger);
|
|
1568
|
-
padding: 10px;
|
|
1569
1675
|
white-space: pre-wrap;
|
|
1570
1676
|
}
|
|
1571
1677
|
|
|
1572
|
-
.docs-mermaid-code {
|
|
1573
|
-
border-top: 1px solid var(--gb-border);
|
|
1574
|
-
}
|
|
1575
|
-
|
|
1576
1678
|
.docs-inline-img {
|
|
1577
1679
|
display: inline-block;
|
|
1578
1680
|
vertical-align: middle;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brett_lamy/docstream",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "GitBook-aware readonly markdown and AI stream renderer.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"gpu-lexer": "^0.0.2",
|
|
146
146
|
"katex": "^0.18.5",
|
|
147
147
|
"lucide-react": "^1.17.0",
|
|
148
|
-
"
|
|
148
|
+
"pele": "1.6.0",
|
|
149
149
|
"react-aria": "^3.52.1",
|
|
150
150
|
"rrweb": "2.0.0-alpha.20",
|
|
151
151
|
"yaml": "^2.9.0"
|
package/src/docs/Mermaid.tsx
CHANGED
|
@@ -1,74 +1,117 @@
|
|
|
1
|
-
import { useEffect, useId, useState, type
|
|
1
|
+
import { useEffect, useId, useRef, useState, type ReactNode, type RefObject } from "react"
|
|
2
|
+
import { Play } from "lucide-react"
|
|
2
3
|
import { HighlightedCode } from "./HighlightedCode"
|
|
4
|
+
import { CopyIcon, useCopied } from "./copy"
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
/* Mermaid diagrams, drawn by Pele (https://pele.run): Mermaid text in, SVG out, synchronously and with no
|
|
7
|
+
browser layout pass. A diagram is a card of two panes — the source on the left, the drawing on the right with
|
|
8
|
+
an "Open in Playground" link and how long it took — that stack on a narrow page. Pele loads on first use, and only
|
|
9
|
+
the diagram types a page uses. */
|
|
5
10
|
|
|
6
11
|
export interface MermaidProps {
|
|
7
12
|
code: string
|
|
13
|
+
/** Accepted for compatibility with older documents; the source pane always shows the whole diagram. */
|
|
8
14
|
collapsedCodeLines?: number
|
|
9
15
|
expandedCodeLines?: number
|
|
10
16
|
}
|
|
11
17
|
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
/** Pele's playground, opened on this source. Long sources don't fit in a link. */
|
|
19
|
+
export function pelePlaygroundUrl(code: string): string | null {
|
|
20
|
+
const hash = new URLSearchParams({ source: code }).toString()
|
|
21
|
+
return hash.length > 8000 ? null : `https://pele.run/playground#${hash}`
|
|
14
22
|
}
|
|
15
23
|
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const expandedLines = Math.max(collapsedLines, positiveLineCount(expandedCodeLines, 30))
|
|
24
|
+
export interface PeleDrawing {
|
|
25
|
+
svg?: string
|
|
26
|
+
error?: string
|
|
27
|
+
/** How long Pele took to draw it. */
|
|
28
|
+
ms?: number
|
|
29
|
+
}
|
|
23
30
|
|
|
31
|
+
/** Draws `code` with Pele: the SVG (or the error) and the render time; null until it's drawn. */
|
|
32
|
+
export function usePele(code: string, host: RefObject<HTMLElement | null>): PeleDrawing | null {
|
|
33
|
+
const [drawn, setDrawn] = useState<PeleDrawing | null>(null)
|
|
34
|
+
const idPrefix = `pele-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}-`
|
|
24
35
|
useEffect(() => {
|
|
25
36
|
let cancelled = false
|
|
26
|
-
import("
|
|
27
|
-
.then(async (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
37
|
+
import("pele/lazy")
|
|
38
|
+
.then(async (pele) => {
|
|
39
|
+
await pele.load(pele.detectType(code))
|
|
40
|
+
if (cancelled) return
|
|
41
|
+
// Pele measures text itself, so it needs the font the diagram is shown in.
|
|
42
|
+
const style = host.current ? getComputedStyle(host.current) : null
|
|
43
|
+
const font = style ? style.getPropertyValue("--pele-font").trim() || style.fontFamily : ""
|
|
44
|
+
// …and the SVG draws in `--pele-font`, so measure and draw with the same one.
|
|
45
|
+
if (font && host.current && !style?.getPropertyValue("--pele-font").trim()) host.current.style.setProperty("--pele-font", font)
|
|
46
|
+
const start = performance.now()
|
|
47
|
+
try {
|
|
48
|
+
// The pane's width: a wide left-to-right chart turns top-down in a narrow pane rather than shrinking.
|
|
49
|
+
const width = host.current ? host.current.clientWidth - parseFloat(style?.paddingLeft ?? "0") - parseFloat(style?.paddingRight ?? "0") : 0
|
|
50
|
+
const { svg } = pele.render(code, { idPrefix, ...(font ? { fontFamily: font } : {}), ...(width > 0 ? { maxWidth: width } : {}) })
|
|
51
|
+
setDrawn({ svg, ms: performance.now() - start })
|
|
52
|
+
} catch (e) {
|
|
53
|
+
if (!(e instanceof pele.PeleError)) throw e
|
|
54
|
+
setDrawn({ error: e.message })
|
|
55
|
+
}
|
|
34
56
|
})
|
|
35
|
-
.catch((e) => {
|
|
36
|
-
if (!cancelled)
|
|
57
|
+
.catch((e: unknown) => {
|
|
58
|
+
if (!cancelled) setDrawn({ error: String((e as Error)?.message ?? e) })
|
|
37
59
|
})
|
|
38
60
|
return () => {
|
|
39
61
|
cancelled = true
|
|
40
62
|
}
|
|
41
|
-
}, [code])
|
|
63
|
+
}, [code, idPrefix, host])
|
|
64
|
+
return drawn
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const formatMs = (ms: number) => (ms < 10 ? `${ms.toFixed(1)} ms` : `${Math.round(ms)} ms`)
|
|
42
68
|
|
|
69
|
+
/** The drawing pane: "Pele", the playground link, the diagram and its render time. */
|
|
70
|
+
export function PeleDiagram({ code, className, children }: { code: string; className?: string; children?: ReactNode }) {
|
|
71
|
+
const host = useRef<HTMLDivElement>(null)
|
|
72
|
+
const drawn = usePele(code, host)
|
|
73
|
+
const playground = pelePlaygroundUrl(code)
|
|
43
74
|
return (
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
75
|
+
<div ref={host} className={`docs-pele-pane docs-pele-diagram-pane${className ? ` ${className}` : ""}`}>
|
|
76
|
+
<div className="docs-pele-head">
|
|
77
|
+
<span className="docs-pele-label">Pele</span>
|
|
78
|
+
{playground ? (
|
|
79
|
+
<a className="docs-pele-action" href={playground} target="_blank" rel="noreferrer">
|
|
80
|
+
<Play width={14} height={14} strokeWidth={2} aria-hidden="true" />
|
|
81
|
+
Open in Playground
|
|
82
|
+
</a>
|
|
83
|
+
) : null}
|
|
84
|
+
</div>
|
|
85
|
+
{drawn?.error !== undefined ? (
|
|
86
|
+
// The message quotes the diagram source: text, never markup.
|
|
87
|
+
<pre className="docs-mermaid-error" role="alert">{drawn.error}</pre>
|
|
88
|
+
) : drawn?.svg ? (
|
|
89
|
+
<div className="docs-mermaid" dangerouslySetInnerHTML={{ __html: drawn.svg }} />
|
|
49
90
|
) : (
|
|
50
|
-
<div className="docs-mermaid">
|
|
91
|
+
<div className="docs-mermaid docs-mermaid-pending">Drawing…</div>
|
|
51
92
|
)}
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
93
|
+
{drawn?.ms !== undefined ? <span className="docs-pele-time">{formatMs(drawn.ms)}</span> : null}
|
|
94
|
+
{children}
|
|
95
|
+
</div>
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function Mermaid({ code }: MermaidProps) {
|
|
100
|
+
const { copied, copy } = useCopied()
|
|
101
|
+
return (
|
|
102
|
+
<section className="docs-mermaid-preview" data-docstream-mermaid="">
|
|
103
|
+
<div className="docs-pele-pane docs-pele-source-pane">
|
|
104
|
+
<div className="docs-pele-head">
|
|
105
|
+
<span className="docs-pele-label">Mermaid</span>
|
|
106
|
+
<button type="button" className="docs-pele-action docs-pele-copy" aria-label={copied ? "Copied" : "Copy Mermaid source"} onClick={() => void copy(code)}>
|
|
107
|
+
<CopyIcon copied={copied} size={16} />
|
|
108
|
+
</button>
|
|
109
|
+
</div>
|
|
110
|
+
<pre className="docs-pele-source">
|
|
111
|
+
<HighlightedCode code={code} language="mermaid" />
|
|
61
112
|
</pre>
|
|
62
|
-
<button
|
|
63
|
-
type="button"
|
|
64
|
-
className="docs-react-demo-code-toggle"
|
|
65
|
-
aria-controls={codePanelId}
|
|
66
|
-
aria-expanded={codeExpanded}
|
|
67
|
-
onClick={() => setCodeExpanded((value) => !value)}
|
|
68
|
-
>
|
|
69
|
-
{codeExpanded ? "Hide Code" : "View Code"}
|
|
70
|
-
</button>
|
|
71
113
|
</div>
|
|
114
|
+
<PeleDiagram code={code} />
|
|
72
115
|
</section>
|
|
73
116
|
)
|
|
74
117
|
}
|
package/src/index.ts
CHANGED
|
@@ -91,6 +91,8 @@ export type { VideoEmbedProps } from "./video"
|
|
|
91
91
|
export { StlViewer, isStlUrl, parseStl } from "./stl"
|
|
92
92
|
export type { StlMesh, StlViewerProps } from "./stl"
|
|
93
93
|
export { StrudelPlayer } from "./strudel/StrudelPlayer"
|
|
94
|
+
export { Mermaid, PeleDiagram, pelePlaygroundUrl, usePele } from "./docs/Mermaid"
|
|
95
|
+
export type { MermaidProps, PeleDrawing } from "./docs/Mermaid"
|
|
94
96
|
export { isStrudelFile, isStrudelLanguage } from "./strudel/url"
|
|
95
97
|
export type { StrudelPlayerProps } from "./strudel/StrudelPlayer"
|
|
96
98
|
export { OpenApiOperation } from "./openapi/OpenApiOperation"
|
package/src/styles.css
CHANGED
|
@@ -1545,34 +1545,136 @@
|
|
|
1545
1545
|
}
|
|
1546
1546
|
|
|
1547
1547
|
.docs-mermaid-preview {
|
|
1548
|
+
/* Pele draws with these; they follow the theme without a redraw. */
|
|
1549
|
+
--pele-bg: transparent;
|
|
1550
|
+
--pele-fg: var(--gb-panel-foreground);
|
|
1551
|
+
--pele-muted: var(--gb-muted-foreground);
|
|
1552
|
+
--pele-line: var(--gb-muted-foreground);
|
|
1553
|
+
--pele-surface: var(--gb-hover);
|
|
1554
|
+
--pele-surface-alt: var(--gb-code-bg);
|
|
1555
|
+
--pele-border: var(--gb-border);
|
|
1556
|
+
--pele-accent: var(--gb-primary);
|
|
1557
|
+
--pele-error: var(--gb-danger);
|
|
1558
|
+
--pele-radius: 6px;
|
|
1559
|
+
display: grid;
|
|
1560
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
|
|
1548
1561
|
border: 1px solid var(--gb-border);
|
|
1549
|
-
border-radius:
|
|
1562
|
+
border-radius: 16px;
|
|
1550
1563
|
overflow: hidden;
|
|
1564
|
+
background: var(--gb-panel);
|
|
1565
|
+
color: var(--gb-panel-foreground);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
.docs-pele-pane {
|
|
1569
|
+
position: relative;
|
|
1570
|
+
display: flex;
|
|
1571
|
+
flex-direction: column;
|
|
1572
|
+
min-width: 0;
|
|
1573
|
+
padding: 14px 18px 18px;
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
/* Side by side, a hairline between; stacked, a hairline above the drawing. */
|
|
1577
|
+
.docs-pele-source-pane {
|
|
1578
|
+
box-shadow: 1px 0 0 var(--gb-border), 0 1px 0 var(--gb-border);
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
.docs-pele-head {
|
|
1582
|
+
display: flex;
|
|
1583
|
+
align-items: center;
|
|
1584
|
+
justify-content: space-between;
|
|
1585
|
+
gap: 12px;
|
|
1586
|
+
min-height: 28px;
|
|
1587
|
+
margin-bottom: 10px;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
.docs-pele-label {
|
|
1591
|
+
font-size: 13px;
|
|
1592
|
+
color: var(--gb-muted-foreground);
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
.docs-pele-action {
|
|
1596
|
+
display: inline-flex;
|
|
1597
|
+
align-items: center;
|
|
1598
|
+
gap: 6px;
|
|
1599
|
+
padding: 4px 6px;
|
|
1600
|
+
margin-right: -6px;
|
|
1601
|
+
border: 0;
|
|
1602
|
+
border-radius: 6px;
|
|
1603
|
+
background: none;
|
|
1604
|
+
font: inherit;
|
|
1605
|
+
font-size: 13px;
|
|
1606
|
+
color: var(--gb-muted-foreground);
|
|
1607
|
+
text-decoration: none;
|
|
1608
|
+
cursor: pointer;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
.docs-mermaid-preview a.docs-pele-action {
|
|
1612
|
+
color: var(--gb-muted-foreground);
|
|
1613
|
+
text-decoration: none;
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
.docs-pele-action:hover,
|
|
1617
|
+
.docs-mermaid-preview a.docs-pele-action:hover {
|
|
1618
|
+
background: var(--gb-hover);
|
|
1619
|
+
color: var(--gb-panel-foreground);
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
.docs-pele-action:focus-visible {
|
|
1623
|
+
outline: 2px solid var(--gb-primary);
|
|
1624
|
+
outline-offset: 1px;
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
.docs-pele-source {
|
|
1628
|
+
margin: 0;
|
|
1629
|
+
overflow: auto;
|
|
1630
|
+
font-size: 13px;
|
|
1631
|
+
line-height: 1.7;
|
|
1632
|
+
white-space: pre;
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
.docs-mermaid-preview .docs-pele-source code {
|
|
1636
|
+
padding: 0;
|
|
1637
|
+
border: 0;
|
|
1638
|
+
border-radius: 0;
|
|
1639
|
+
background: none;
|
|
1640
|
+
font-size: inherit;
|
|
1551
1641
|
}
|
|
1552
1642
|
|
|
1553
1643
|
.docs-mermaid {
|
|
1554
1644
|
display: flex;
|
|
1645
|
+
flex: 1;
|
|
1646
|
+
align-items: center;
|
|
1555
1647
|
justify-content: center;
|
|
1556
|
-
|
|
1557
|
-
|
|
1648
|
+
min-height: 120px;
|
|
1649
|
+
padding: 8px 0 18px;
|
|
1558
1650
|
}
|
|
1559
1651
|
|
|
1560
1652
|
.docs-mermaid svg {
|
|
1561
1653
|
max-width: 100%;
|
|
1654
|
+
height: auto;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
.docs-mermaid-pending {
|
|
1658
|
+
font-size: 13px;
|
|
1659
|
+
color: var(--gb-muted-foreground);
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
.docs-pele-time {
|
|
1663
|
+
position: absolute;
|
|
1664
|
+
right: 18px;
|
|
1665
|
+
bottom: 12px;
|
|
1666
|
+
font-size: 12px;
|
|
1667
|
+
font-variant-numeric: tabular-nums;
|
|
1668
|
+
color: var(--gb-muted-foreground);
|
|
1562
1669
|
}
|
|
1563
1670
|
|
|
1564
1671
|
.docs-mermaid-error {
|
|
1565
1672
|
margin: 0;
|
|
1566
1673
|
font-size: 12px;
|
|
1567
1674
|
color: var(--gb-danger);
|
|
1568
|
-
padding: 10px;
|
|
1569
1675
|
white-space: pre-wrap;
|
|
1570
1676
|
}
|
|
1571
1677
|
|
|
1572
|
-
.docs-mermaid-code {
|
|
1573
|
-
border-top: 1px solid var(--gb-border);
|
|
1574
|
-
}
|
|
1575
|
-
|
|
1576
1678
|
.docs-inline-img {
|
|
1577
1679
|
display: inline-block;
|
|
1578
1680
|
vertical-align: middle;
|