@brett_lamy/docstream 1.2.4 → 1.4.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 +76 -14
- package/dist/assets.d.ts +3 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +20 -0
- package/dist/assets.js.map +1 -0
- package/dist/demo/DemoViewer.d.ts +64 -0
- package/dist/demo/DemoViewer.d.ts.map +1 -0
- package/dist/demo/DemoViewer.js +426 -0
- package/dist/demo/DemoViewer.js.map +1 -0
- package/dist/demo/context.d.ts +14 -0
- package/dist/demo/context.d.ts.map +1 -0
- package/dist/demo/context.js +25 -0
- package/dist/demo/context.js.map +1 -0
- package/dist/demo/glob.d.ts +60 -0
- package/dist/demo/glob.d.ts.map +1 -0
- package/dist/demo/glob.js +158 -0
- package/dist/demo/glob.js.map +1 -0
- package/dist/demo/index.d.ts +10 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +6 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/markdown.d.ts +60 -0
- package/dist/demo/markdown.d.ts.map +1 -0
- package/dist/demo/markdown.js +181 -0
- package/dist/demo/markdown.js.map +1 -0
- package/dist/demo/surface.d.ts +11 -0
- package/dist/demo/surface.d.ts.map +1 -0
- package/dist/demo/surface.js +69 -0
- package/dist/demo/surface.js.map +1 -0
- package/dist/demo/types.d.ts +91 -0
- package/dist/demo/types.d.ts.map +1 -0
- package/dist/demo/types.js +2 -0
- package/dist/demo/types.js.map +1 -0
- package/dist/docs/CollapsibleCode.d.ts +14 -0
- package/dist/docs/CollapsibleCode.d.ts.map +1 -0
- package/dist/docs/CollapsibleCode.js +19 -0
- package/dist/docs/CollapsibleCode.js.map +1 -0
- package/dist/docs/DocsRenderer.d.ts +49 -0
- package/dist/docs/DocsRenderer.d.ts.map +1 -0
- package/dist/docs/DocsRenderer.js +277 -0
- package/dist/docs/DocsRenderer.js.map +1 -0
- package/dist/docs/HighlightedCode.d.ts +6 -0
- package/dist/docs/HighlightedCode.d.ts.map +1 -0
- package/dist/docs/HighlightedCode.js +40 -0
- package/dist/docs/HighlightedCode.js.map +1 -0
- package/dist/docs/Mermaid.d.ts +7 -0
- package/dist/docs/Mermaid.d.ts.map +1 -0
- package/dist/docs/Mermaid.js +39 -0
- package/dist/docs/Mermaid.js.map +1 -0
- package/dist/docs/PageActions.d.ts +33 -0
- package/dist/docs/PageActions.d.ts.map +1 -0
- package/dist/docs/PageActions.js +115 -0
- package/dist/docs/PageActions.js.map +1 -0
- package/dist/docs/controls.d.ts +29 -0
- package/dist/docs/controls.d.ts.map +1 -0
- package/dist/docs/controls.js +46 -0
- package/dist/docs/controls.js.map +1 -0
- package/dist/docs/copy.d.ts +24 -0
- package/dist/docs/copy.d.ts.map +1 -0
- package/dist/docs/copy.js +62 -0
- package/dist/docs/copy.js.map +1 -0
- package/dist/docs/math.d.ts +3 -0
- package/dist/docs/math.d.ts.map +1 -0
- package/dist/docs/math.js +12 -0
- package/dist/docs/math.js.map +1 -0
- package/dist/docs/reference.d.ts +27 -0
- package/dist/docs/reference.d.ts.map +1 -0
- package/dist/docs/reference.js +73 -0
- package/dist/docs/reference.js.map +1 -0
- package/dist/docs/tabs-sync.d.ts +5 -0
- package/dist/docs/tabs-sync.d.ts.map +1 -0
- package/dist/docs/tabs-sync.js +58 -0
- package/dist/docs/tabs-sync.js.map +1 -0
- package/dist/gitbook/ast.d.ts +506 -0
- package/dist/gitbook/ast.d.ts.map +1 -0
- package/dist/gitbook/ast.js +8 -0
- package/dist/gitbook/ast.js.map +1 -0
- package/dist/gitbook/attrs.d.ts +14 -0
- package/dist/gitbook/attrs.d.ts.map +1 -0
- package/dist/gitbook/attrs.js +36 -0
- package/dist/gitbook/attrs.js.map +1 -0
- package/dist/gitbook/flatten.d.ts +14 -0
- package/dist/gitbook/flatten.d.ts.map +1 -0
- package/dist/gitbook/flatten.js +45 -0
- package/dist/gitbook/flatten.js.map +1 -0
- package/dist/gitbook/index.d.ts +10 -0
- package/dist/gitbook/index.d.ts.map +1 -0
- package/dist/gitbook/index.js +8 -0
- package/dist/gitbook/index.js.map +1 -0
- package/dist/gitbook/inline.d.ts +28 -0
- package/dist/gitbook/inline.d.ts.map +1 -0
- package/dist/gitbook/inline.js +956 -0
- package/dist/gitbook/inline.js.map +1 -0
- package/dist/gitbook/outline.d.ts +16 -0
- package/dist/gitbook/outline.d.ts.map +1 -0
- package/dist/gitbook/outline.js +44 -0
- package/dist/gitbook/outline.js.map +1 -0
- package/dist/gitbook/package-managers.d.ts +12 -0
- package/dist/gitbook/package-managers.d.ts.map +1 -0
- package/dist/gitbook/package-managers.js +93 -0
- package/dist/gitbook/package-managers.js.map +1 -0
- package/dist/gitbook/parse.d.ts +44 -0
- package/dist/gitbook/parse.d.ts.map +1 -0
- package/dist/gitbook/parse.js +1113 -0
- package/dist/gitbook/parse.js.map +1 -0
- package/dist/gitbook/serialize.d.ts +23 -0
- package/dist/gitbook/serialize.d.ts.map +1 -0
- package/dist/gitbook/serialize.js +498 -0
- package/dist/gitbook/serialize.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/openapi/OpenApiOperation.d.ts +6 -0
- package/dist/openapi/OpenApiOperation.d.ts.map +1 -0
- package/dist/openapi/OpenApiOperation.js +112 -0
- package/dist/openapi/OpenApiOperation.js.map +1 -0
- package/dist/playground/InlineDemoPreview.d.ts +24 -0
- package/dist/playground/InlineDemoPreview.d.ts.map +1 -0
- package/dist/playground/InlineDemoPreview.js +48 -0
- package/dist/playground/InlineDemoPreview.js.map +1 -0
- package/dist/playground/PlaygroundStreamdown.d.ts +16 -0
- package/dist/playground/PlaygroundStreamdown.d.ts.map +1 -0
- package/dist/playground/PlaygroundStreamdown.js +22 -0
- package/dist/playground/PlaygroundStreamdown.js.map +1 -0
- package/dist/playground/ReactCodePreview.d.ts +64 -0
- package/dist/playground/ReactCodePreview.d.ts.map +1 -0
- package/dist/playground/ReactCodePreview.js +108 -0
- package/dist/playground/ReactCodePreview.js.map +1 -0
- package/dist/playground/filesystem.d.ts +27 -0
- package/dist/playground/filesystem.d.ts.map +1 -0
- package/dist/playground/filesystem.js +65 -0
- package/dist/playground/filesystem.js.map +1 -0
- package/dist/playground/index.d.ts +9 -0
- package/dist/playground/index.d.ts.map +1 -0
- package/dist/playground/index.js +7 -0
- package/dist/playground/index.js.map +1 -0
- package/dist/playground/project.d.ts +57 -0
- package/dist/playground/project.d.ts.map +1 -0
- package/dist/playground/project.js +137 -0
- package/dist/playground/project.js.map +1 -0
- package/dist/replay/NativeReplay.d.ts +9 -0
- package/dist/replay/NativeReplay.d.ts.map +1 -0
- package/dist/replay/NativeReplay.js +173 -0
- package/dist/replay/NativeReplay.js.map +1 -0
- package/dist/replay/ReplayPreview.d.ts +33 -0
- package/dist/replay/ReplayPreview.d.ts.map +1 -0
- package/dist/replay/ReplayPreview.js +91 -0
- package/dist/replay/ReplayPreview.js.map +1 -0
- package/dist/replay/index.d.ts +5 -0
- package/dist/replay/index.d.ts.map +1 -0
- package/dist/replay/index.js +4 -0
- package/dist/replay/index.js.map +1 -0
- package/dist/replay/sanitize.d.ts +4 -0
- package/dist/replay/sanitize.d.ts.map +1 -0
- package/dist/replay/sanitize.js +86 -0
- package/dist/replay/sanitize.js.map +1 -0
- package/dist/replay/url.d.ts +8 -0
- package/dist/replay/url.d.ts.map +1 -0
- package/dist/replay/url.js +41 -0
- package/dist/replay/url.js.map +1 -0
- package/dist/source/SourcePreview.d.ts +13 -0
- package/dist/source/SourcePreview.d.ts.map +1 -0
- package/dist/source/SourcePreview.js +47 -0
- package/dist/source/SourcePreview.js.map +1 -0
- package/dist/source/client.d.ts +7 -0
- package/dist/source/client.d.ts.map +1 -0
- package/dist/source/client.js +52 -0
- package/dist/source/client.js.map +1 -0
- package/dist/source/index.d.ts +6 -0
- package/dist/source/index.d.ts.map +1 -0
- package/dist/source/index.js +3 -0
- package/dist/source/index.js.map +1 -0
- package/dist/source/types.d.ts +33 -0
- package/dist/source/types.d.ts.map +1 -0
- package/dist/source/types.js +2 -0
- package/dist/source/types.js.map +1 -0
- package/dist/streamdown.d.ts +19 -0
- package/dist/streamdown.d.ts.map +1 -0
- package/dist/streamdown.js +15 -0
- package/dist/streamdown.js.map +1 -0
- package/dist/styles.css +2441 -0
- package/dist/video/VideoEmbed.d.ts +17 -0
- package/dist/video/VideoEmbed.d.ts.map +1 -0
- package/dist/video/VideoEmbed.js +12 -0
- package/dist/video/VideoEmbed.js.map +1 -0
- package/dist/video/index.d.ts +3 -0
- package/dist/video/index.d.ts.map +1 -0
- package/dist/video/index.js +2 -0
- package/dist/video/index.js.map +1 -0
- package/dist/vite/index.d.ts +21 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +137 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/viz/VizEmbed.d.ts +18 -0
- package/dist/viz/VizEmbed.d.ts.map +1 -0
- package/dist/viz/VizEmbed.js +12 -0
- package/dist/viz/VizEmbed.js.map +1 -0
- package/dist/viz/index.d.ts +4 -0
- package/dist/viz/index.d.ts.map +1 -0
- package/dist/viz/index.js +3 -0
- package/dist/viz/index.js.map +1 -0
- package/package.json +70 -34
- package/src/demo/types.ts +2 -2
- package/src/docs/DocsRenderer.tsx +31 -7
- package/src/docs/Mermaid.tsx +5 -3
- package/src/docs/math.ts +3 -0
- package/src/index.ts +10 -28
- package/src/playground/PlaygroundStreamdown.tsx +28 -61
- package/src/playground/filesystem.ts +10 -190
- package/src/playground/index.ts +4 -0
- package/src/playground/project.ts +194 -0
- package/src/replay/NativeReplay.tsx +236 -0
- package/src/replay/ReplayPreview.tsx +7 -226
- package/src/styles.css +91 -1
- package/src/replay/styles.css +0 -87
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* The demo viewer for `{% demo src="<page>/<example>" %}`.
|
|
3
|
+
|
|
4
|
+
Where the files come from:
|
|
5
|
+
- a host `DemoResolver` that knows `src`: the component renders in-page; the Code view shows
|
|
6
|
+
the resolver's files (they win over any inline copy);
|
|
7
|
+
- otherwise the block's inline files (`{% demo %}` + fences + `{% enddemo %}`): the Preview
|
|
8
|
+
runs them through the `InlineDemoRuntime` in context (almost-node in the playground entry),
|
|
9
|
+
or, without one, the viewer opens on the Code view with a short note — never an empty box.
|
|
10
|
+
|
|
11
|
+
Multi-file demos get the gallery viewer: a header (title, description, Preview | Code, variants,
|
|
12
|
+
viewport widths, copy, fullscreen), a resizable preview frame on a dotted stage, and a Code view
|
|
13
|
+
with a file tree and highlighted source. Single-file demos keep the ReactDemo card: the preview,
|
|
14
|
+
then a collapsible, line-numbered code panel. Either way the component renders in-page (lazy
|
|
15
|
+
`load()`, mounted once the card nears the viewport) and the code shown is the real file. */
|
|
16
|
+
import { Component, createElement, useEffect, useId, useMemo, useRef, useState, } from "react";
|
|
17
|
+
import { motion, useReducedMotion } from "framer-motion";
|
|
18
|
+
import { ExternalLink, FileCode2, Folder, Maximize2, Monitor, Smartphone, Tablet, X } from "lucide-react";
|
|
19
|
+
import { parseInline } from "../gitbook/inline.js";
|
|
20
|
+
import { CollapsibleCode } from "../docs/CollapsibleCode.js";
|
|
21
|
+
import { HighlightedCode } from "../docs/HighlightedCode.js";
|
|
22
|
+
import { CopyButton } from "../docs/copy.js";
|
|
23
|
+
import { PillTabs, Segmented, rovingKeyDown } from "../docs/controls.js";
|
|
24
|
+
import { useDemoResolver, useDemoRuntime } from "./context.js";
|
|
25
|
+
import { languageForPath } from "./glob.js";
|
|
26
|
+
import { inlineDemoMarkdown } from "./markdown.js";
|
|
27
|
+
import { cssToSurface, surfaceStyle, surfaceToCss } from "./surface.js";
|
|
28
|
+
const settled = new WeakMap();
|
|
29
|
+
function cacheFor(resolver) {
|
|
30
|
+
let cache = settled.get(resolver);
|
|
31
|
+
if (!cache)
|
|
32
|
+
settled.set(resolver, (cache = new Map()));
|
|
33
|
+
return cache;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve demos ahead of rendering (meta, files and component), so the first render — including
|
|
37
|
+
* server rendering and static export — shows them resolved instead of loading. Failures are
|
|
38
|
+
* remembered too, so inline-file fallbacks apply immediately.
|
|
39
|
+
*/
|
|
40
|
+
export async function preloadDemos(resolver, srcs) {
|
|
41
|
+
const cache = cacheFor(resolver);
|
|
42
|
+
const settle = async (key, run) => {
|
|
43
|
+
try {
|
|
44
|
+
cache.set(key, { status: "ready", value: await run() });
|
|
45
|
+
}
|
|
46
|
+
catch (cause) {
|
|
47
|
+
cache.set(key, { status: "error", error: cause instanceof Error ? cause : new Error(String(cause)) });
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
await Promise.all(srcs.flatMap((src) => [
|
|
51
|
+
settle(`meta:${src}`, () => resolver.meta(src)),
|
|
52
|
+
settle(`files:${src}`, () => resolver.files(src)),
|
|
53
|
+
settle(`load:${src}`, () => resolver.load(src)),
|
|
54
|
+
]));
|
|
55
|
+
}
|
|
56
|
+
/** Resolves `run()` once `active`, remembering settled values so remounts don't flash. */
|
|
57
|
+
function useResolved(resolver, key, active, run) {
|
|
58
|
+
const cached = resolver ? cacheFor(resolver).get(key) : undefined;
|
|
59
|
+
const [state, setState] = useState(cached ?? { status: "loading" });
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
if (!resolver)
|
|
62
|
+
return;
|
|
63
|
+
const hit = cacheFor(resolver).get(key);
|
|
64
|
+
if (hit && hit.status !== "loading") {
|
|
65
|
+
setState(hit);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!active) {
|
|
69
|
+
setState({ status: "loading" });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
let live = true;
|
|
73
|
+
run().then((value) => {
|
|
74
|
+
const next = { status: "ready", value };
|
|
75
|
+
cacheFor(resolver).set(key, next);
|
|
76
|
+
if (live)
|
|
77
|
+
setState(next);
|
|
78
|
+
}, (cause) => {
|
|
79
|
+
const error = cause instanceof Error ? cause : new Error(String(cause));
|
|
80
|
+
if (live)
|
|
81
|
+
setState({ status: "error", error });
|
|
82
|
+
});
|
|
83
|
+
return () => {
|
|
84
|
+
live = false;
|
|
85
|
+
};
|
|
86
|
+
// `run` closes over resolver + key only.
|
|
87
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
|
+
}, [resolver, key, active]);
|
|
89
|
+
return state;
|
|
90
|
+
}
|
|
91
|
+
const useMeta = (resolver, src) => useResolved(resolver, `meta:${src}`, true, () => resolver.meta(src));
|
|
92
|
+
const useFiles = (resolver, src, active) => useResolved(resolver, `files:${src}`, active, () => resolver.files(src));
|
|
93
|
+
const useComponent = (resolver, src, active) => useResolved(resolver, `load:${src}`, active, () => resolver.load(src));
|
|
94
|
+
/** True once the element has come within `margin` of the viewport (stays true). */
|
|
95
|
+
function useNearViewport(margin = "400px 0px") {
|
|
96
|
+
const ref = useRef(null);
|
|
97
|
+
const [near, setNear] = useState(false);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
const el = ref.current;
|
|
100
|
+
if (!el || near)
|
|
101
|
+
return;
|
|
102
|
+
if (typeof IntersectionObserver === "undefined") {
|
|
103
|
+
setNear(true);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const observer = new IntersectionObserver(([entry]) => {
|
|
107
|
+
if (entry?.isIntersecting)
|
|
108
|
+
setNear(true);
|
|
109
|
+
}, { rootMargin: margin });
|
|
110
|
+
observer.observe(el);
|
|
111
|
+
return () => observer.disconnect();
|
|
112
|
+
}, [near, margin]);
|
|
113
|
+
return [ref, near];
|
|
114
|
+
}
|
|
115
|
+
/* ---------- pieces ---------- */
|
|
116
|
+
class DemoErrorBoundary extends Component {
|
|
117
|
+
state = { error: null };
|
|
118
|
+
static getDerivedStateFromError(error) {
|
|
119
|
+
return { error: error instanceof Error ? error : new Error(String(error)) };
|
|
120
|
+
}
|
|
121
|
+
componentDidUpdate(prev) {
|
|
122
|
+
if (prev.src !== this.props.src && this.state.error)
|
|
123
|
+
this.setState({ error: null });
|
|
124
|
+
}
|
|
125
|
+
render() {
|
|
126
|
+
return this.state.error ? _jsx(DemoError, { message: `${this.props.src} failed to render: ${this.state.error.message}` }) : this.props.children;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function DemoError({ message }) {
|
|
130
|
+
return _jsx("pre", { className: "docs-demo-error", role: "alert", children: message });
|
|
131
|
+
}
|
|
132
|
+
function Spinner({ label = "Loading demo" }) {
|
|
133
|
+
return (_jsx("div", { className: "docs-demo-loading", role: "status", "aria-label": label, children: _jsx("span", { className: "docs-demo-spinner", "aria-hidden": "true" }) }));
|
|
134
|
+
}
|
|
135
|
+
/** Descriptions allow inline Markdown (`code`, **bold**, _em_, links). */
|
|
136
|
+
function InlineMarkdown({ text }) {
|
|
137
|
+
const nodes = useMemo(() => parseInline(text), [text]);
|
|
138
|
+
return (_jsx(_Fragment, { children: nodes.map((n, i) => {
|
|
139
|
+
if (n.type !== "text")
|
|
140
|
+
return null;
|
|
141
|
+
let el = n.text;
|
|
142
|
+
if (n.code)
|
|
143
|
+
el = _jsx("code", { children: el });
|
|
144
|
+
if (n.bold)
|
|
145
|
+
el = _jsx("strong", { children: el });
|
|
146
|
+
if (n.italic)
|
|
147
|
+
el = _jsx("em", { children: el });
|
|
148
|
+
if (n.link)
|
|
149
|
+
el = _jsx("a", { href: n.link, children: el });
|
|
150
|
+
return _jsx("span", { children: el }, i);
|
|
151
|
+
}) }));
|
|
152
|
+
}
|
|
153
|
+
function cssLength(value, fallback) {
|
|
154
|
+
if (value === undefined || value === "")
|
|
155
|
+
return fallback;
|
|
156
|
+
if (typeof value === "number")
|
|
157
|
+
return `${value}px`;
|
|
158
|
+
return /^\d+(?:\.\d+)?$/.test(value.trim()) ? `${value.trim()}px` : value;
|
|
159
|
+
}
|
|
160
|
+
export const NO_RUNTIME_NOTE = "Live preview needs the playground runtime. The code is shown instead.";
|
|
161
|
+
function DemoCanvas({ src, preview, variant, bleed, look }) {
|
|
162
|
+
if (preview.kind === "unavailable" || preview.kind === "streaming") {
|
|
163
|
+
return (_jsx("div", { className: "docs-demo-note", role: "note", "data-variant": variant, children: preview.kind === "streaming" ? "The demo is still arriving; its preview starts once the block is complete." : NO_RUNTIME_NOTE }));
|
|
164
|
+
}
|
|
165
|
+
if (preview.kind === "runtime") {
|
|
166
|
+
return (_jsx("div", { className: ["docs-demo-canvas docs-demo-canvas-bleed docs-demo-canvas-runtime", look?.className ?? ""].filter(Boolean).join(" "), style: surfaceStyle(look?.surface), "data-variant": variant, children: _jsx(DemoErrorBoundary, { src: src || "demo", children: preview.render(variant) }) }));
|
|
167
|
+
}
|
|
168
|
+
const { component } = preview;
|
|
169
|
+
return (_jsx("div", { className: ["docs-demo-canvas", bleed ? "docs-demo-canvas-bleed" : "", look?.className ?? ""].filter(Boolean).join(" "), style: surfaceStyle(look?.surface), "data-variant": variant, children: component.status === "ready" ? (_jsx(DemoErrorBoundary, { src: src, children: createElement(component.value, variant === undefined ? {} : { variant }) })) : component.status === "error" ? (_jsx(DemoError, { message: `${src} failed to load: ${component.error.message}` })) : (_jsx(Spinner, {})) }));
|
|
170
|
+
}
|
|
171
|
+
const VIEWPORTS = [
|
|
172
|
+
{ id: "desktop", label: "Desktop", width: null, Icon: Monitor },
|
|
173
|
+
{ id: "tablet", label: "Tablet", width: 768, Icon: Tablet },
|
|
174
|
+
{ id: "phone", label: "Phone", width: 390, Icon: Smartphone },
|
|
175
|
+
];
|
|
176
|
+
const MIN_WIDTH = 280;
|
|
177
|
+
/** The resizable preview frame on its stage. `width === null` fills the stage. */
|
|
178
|
+
function PreviewStage({ width, onResize, height, children }) {
|
|
179
|
+
const reduced = useReducedMotion();
|
|
180
|
+
const frame = useRef(null);
|
|
181
|
+
const [dragging, setDragging] = useState(false);
|
|
182
|
+
const [measured, setMeasured] = useState(null);
|
|
183
|
+
const [max, setMax] = useState(0);
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
const el = frame.current;
|
|
186
|
+
if (!el || typeof ResizeObserver === "undefined")
|
|
187
|
+
return;
|
|
188
|
+
const observer = new ResizeObserver(() => {
|
|
189
|
+
setMeasured(Math.round(el.getBoundingClientRect().width));
|
|
190
|
+
setMax(el.parentElement?.clientWidth ?? 0);
|
|
191
|
+
});
|
|
192
|
+
observer.observe(el);
|
|
193
|
+
if (el.parentElement)
|
|
194
|
+
observer.observe(el.parentElement);
|
|
195
|
+
return () => observer.disconnect();
|
|
196
|
+
}, []);
|
|
197
|
+
const clamp = (next) => {
|
|
198
|
+
const limit = frame.current?.parentElement?.clientWidth ?? next;
|
|
199
|
+
const value = Math.round(Math.min(limit, Math.max(MIN_WIDTH, next)));
|
|
200
|
+
return value >= limit - 4 ? null : value;
|
|
201
|
+
};
|
|
202
|
+
const startDrag = (event) => {
|
|
203
|
+
const el = frame.current;
|
|
204
|
+
if (!el || event.button !== 0)
|
|
205
|
+
return;
|
|
206
|
+
event.preventDefault();
|
|
207
|
+
const left = el.getBoundingClientRect().left;
|
|
208
|
+
setDragging(true);
|
|
209
|
+
const move = (ev) => onResize(clamp(ev.clientX - left));
|
|
210
|
+
const up = () => {
|
|
211
|
+
setDragging(false);
|
|
212
|
+
window.removeEventListener("pointermove", move);
|
|
213
|
+
window.removeEventListener("pointerup", up);
|
|
214
|
+
window.removeEventListener("pointercancel", up);
|
|
215
|
+
};
|
|
216
|
+
window.addEventListener("pointermove", move);
|
|
217
|
+
window.addEventListener("pointerup", up);
|
|
218
|
+
window.addEventListener("pointercancel", up);
|
|
219
|
+
};
|
|
220
|
+
const onKeyDown = (event) => {
|
|
221
|
+
const current = width ?? measured ?? max;
|
|
222
|
+
const step = event.shiftKey ? 50 : 10;
|
|
223
|
+
let next;
|
|
224
|
+
if (event.key === "ArrowLeft")
|
|
225
|
+
next = clamp(current - step);
|
|
226
|
+
else if (event.key === "ArrowRight")
|
|
227
|
+
next = clamp(current + step);
|
|
228
|
+
else if (event.key === "Home")
|
|
229
|
+
next = clamp(MIN_WIDTH);
|
|
230
|
+
else if (event.key === "End")
|
|
231
|
+
next = null;
|
|
232
|
+
if (next === undefined)
|
|
233
|
+
return;
|
|
234
|
+
event.preventDefault();
|
|
235
|
+
onResize(next);
|
|
236
|
+
};
|
|
237
|
+
return (_jsxs("div", { className: "docs-demo-stage", style: { height }, "data-dragging": dragging || undefined, children: [_jsx(motion.div, { ref: frame, className: "docs-demo-frame", "data-sized": width !== null || undefined, initial: false, animate: { width: width ?? "100%" }, transition: dragging || reduced ? { duration: 0 } : { type: "spring", bounce: 0.12, duration: 0.5 }, children: children }), _jsx("div", { className: "docs-demo-handle", role: "separator", tabIndex: 0, "aria-orientation": "vertical", "aria-label": "Resize preview", "aria-valuemin": MIN_WIDTH, "aria-valuemax": max || undefined, "aria-valuenow": measured ?? undefined, "aria-valuetext": measured ? `${measured} pixels wide` : undefined, "data-dragging": dragging || undefined, onPointerDown: startDrag, onKeyDown: onKeyDown, onDoubleClick: () => onResize(null) }), _jsx("span", { className: "docs-demo-readout", "aria-hidden": "true", children: measured ? `${measured}px` : "" })] }));
|
|
238
|
+
}
|
|
239
|
+
/** Files as a tree: the entry and root files first, then each folder with its files indented. */
|
|
240
|
+
function fileTree(files) {
|
|
241
|
+
const rows = [];
|
|
242
|
+
const seen = new Set();
|
|
243
|
+
for (const file of files) {
|
|
244
|
+
const parts = file.path.split("/");
|
|
245
|
+
for (let d = 0; d < parts.length - 1; d++) {
|
|
246
|
+
const dir = parts.slice(0, d + 1).join("/");
|
|
247
|
+
if (!seen.has(dir)) {
|
|
248
|
+
seen.add(dir);
|
|
249
|
+
rows.push({ kind: "dir", name: parts[d], depth: d, path: dir });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
rows.push({ kind: "file", name: parts[parts.length - 1], depth: parts.length - 1, path: file.path });
|
|
253
|
+
}
|
|
254
|
+
return rows;
|
|
255
|
+
}
|
|
256
|
+
function CodeView({ src, files, height, id }) {
|
|
257
|
+
const [active, setActive] = useState(files[0]?.path ?? "");
|
|
258
|
+
useEffect(() => {
|
|
259
|
+
if (!files.some((f) => f.path === active))
|
|
260
|
+
setActive(files[0]?.path ?? "");
|
|
261
|
+
}, [files, active]);
|
|
262
|
+
const file = files.find((f) => f.path === active) ?? files[0];
|
|
263
|
+
const rows = useMemo(() => fileTree(files), [files]);
|
|
264
|
+
const paths = files.map((f) => f.path);
|
|
265
|
+
const tabId = (path) => `${id}-file-${paths.indexOf(path)}`;
|
|
266
|
+
const panelId = `${id}-source`;
|
|
267
|
+
return (_jsxs("div", { className: "docs-demo-code", style: { height }, children: [_jsxs("div", { className: "docs-demo-files", role: "tablist", "aria-orientation": "vertical", "aria-label": "Files", onKeyDown: (event) => rovingKeyDown(event, paths, active, setActive, "vertical"), children: [_jsx("div", { className: "docs-demo-files-h", "aria-hidden": "true", children: "Files" }), rows.map((row) => row.kind === "dir" ? (_jsxs("div", { className: "docs-demo-dir", style: { "--depth": row.depth }, "aria-hidden": "true", children: [_jsx(Folder, { width: 13, height: 13, "aria-hidden": "true" }), row.name] }, `d:${row.path}`)) : (_jsxs("button", { id: tabId(row.path), type: "button", role: "tab", "data-roving": "", "aria-selected": row.path === active, "aria-controls": panelId, tabIndex: row.path === active ? 0 : -1, title: row.path, className: "docs-demo-file", style: { "--depth": row.depth }, onClick: () => setActive(row.path), children: [_jsx(FileCode2, { width: 13, height: 13, "aria-hidden": "true" }), _jsx("span", { children: row.name })] }, row.path)))] }), _jsxs("div", { className: "docs-demo-source", role: "tabpanel", id: panelId, "aria-labelledby": file ? tabId(file.path) : undefined, children: [_jsxs("div", { className: "docs-demo-source-h", children: [_jsx("span", { className: "docs-demo-source-path", children: src && file ? `${src}/${file.path}` : file?.path }), file ? _jsx(CopyButton, { text: file.content, label: `Copy ${file.path}` }) : null] }), _jsx("div", { className: "docs-demo-source-body", tabIndex: 0, "aria-label": file ? `${file.path} source` : undefined, children: file ? (_jsx("pre", { className: "docs-code-numbered", children: _jsx(HighlightedCode, { code: file.content.replace(/\n+$/, ""), language: file.language ?? languageForPath(file.path) ?? null, lineNumbers: true }) })) : (_jsx(Spinner, { label: "Loading files" })) })] })] }));
|
|
268
|
+
}
|
|
269
|
+
function FullscreenButton({ onOpen, title }) {
|
|
270
|
+
return (_jsx("button", { type: "button", className: "docs-demo-icon-btn", onClick: onOpen, "aria-label": `Open ${title} fullscreen`, title: "Fullscreen", children: _jsx(Maximize2, { width: 15, height: 15, "aria-hidden": "true" }) }));
|
|
271
|
+
}
|
|
272
|
+
function NewTabLink({ href, title }) {
|
|
273
|
+
if (!href)
|
|
274
|
+
return null;
|
|
275
|
+
return (_jsx("a", { className: "docs-demo-icon-btn", href: href, target: "_blank", rel: "noreferrer", "aria-label": `Open ${title} in a new tab`, title: "Open in new tab", children: _jsx(ExternalLink, { width: 15, height: 15, "aria-hidden": "true" }) }));
|
|
276
|
+
}
|
|
277
|
+
function VariantSwitch({ variants, value, onChange, title, width }) {
|
|
278
|
+
if (!variants?.length || value === undefined)
|
|
279
|
+
return null;
|
|
280
|
+
return (_jsx(Segmented, { options: variants, value: value, onChange: onChange, label: `${title} variant`, className: width === undefined ? "docs-demo-variants" : "docs-demo-variants docs-demo-variants-sized", style: width === undefined ? undefined : { width: cssLength(width, "auto") } }));
|
|
281
|
+
}
|
|
282
|
+
function StatusBadge({ status }) {
|
|
283
|
+
return status ? _jsx("span", { className: "docs-demo-status", children: status }) : null;
|
|
284
|
+
}
|
|
285
|
+
/** A full-viewport overlay (native modal dialog: top layer, focus trap, Esc to close). */
|
|
286
|
+
function FullscreenDialog({ open, onClose, title, src, variants, variant, onVariant, preview, bleed, look, variantsWidth, href }) {
|
|
287
|
+
const ref = useRef(null);
|
|
288
|
+
const titleId = useId();
|
|
289
|
+
useEffect(() => {
|
|
290
|
+
const dialog = ref.current;
|
|
291
|
+
if (!dialog)
|
|
292
|
+
return;
|
|
293
|
+
if (open && !dialog.open) {
|
|
294
|
+
if (typeof dialog.showModal === "function")
|
|
295
|
+
dialog.showModal();
|
|
296
|
+
else
|
|
297
|
+
dialog.setAttribute("open", "");
|
|
298
|
+
}
|
|
299
|
+
else if (!open && dialog.open) {
|
|
300
|
+
dialog.close();
|
|
301
|
+
}
|
|
302
|
+
}, [open]);
|
|
303
|
+
return (_jsx("dialog", { ref: ref, className: "docs-demo-dialog", "aria-labelledby": titleId, onClose: onClose, onCancel: onClose, children: open ? (_jsxs("div", { className: "docs-demo-dialog-inner", children: [_jsxs("div", { className: "docs-demo-dialog-bar", children: [_jsx("span", { id: titleId, className: "docs-demo-title", children: title }), _jsx("span", { className: "docs-demo-dialog-src", children: src }), _jsx("span", { className: "docs-demo-spacer" }), _jsx(VariantSwitch, { variants: variants, value: variant, onChange: onVariant, title: title, width: variantsWidth }), _jsx(NewTabLink, { href: href, title: title }), _jsx("button", { type: "button", className: "docs-demo-icon-btn", onClick: onClose, "aria-label": "Close fullscreen", title: "Close (Esc)", autoFocus: true, children: _jsx(X, { width: 16, height: 16, "aria-hidden": "true" }) })] }), _jsx("div", { className: "docs-demo-dialog-stage", children: _jsx(DemoCanvas, { src: src, preview: preview, variant: variant, bleed: bleed, look: look }) })] })) : null }));
|
|
304
|
+
}
|
|
305
|
+
/** Inline files, entry first. */
|
|
306
|
+
function orderInline(files, entry) {
|
|
307
|
+
if (!files?.length)
|
|
308
|
+
return undefined;
|
|
309
|
+
const index = entry ? files.findIndex((f) => f.path === entry) : -1;
|
|
310
|
+
return index > 0 ? [files[index], ...files.slice(0, index), ...files.slice(index + 1)] : files;
|
|
311
|
+
}
|
|
312
|
+
export function DemoViewer(props) {
|
|
313
|
+
const resolver = useDemoResolver(props.resolver);
|
|
314
|
+
const runtimeOptions = useDemoRuntime({ runtime: props.runtime, dependencies: props.dependencies });
|
|
315
|
+
const { src } = props;
|
|
316
|
+
const [ref, near] = useNearViewport();
|
|
317
|
+
const inlineFiles = useMemo(() => orderInline(props.files, props.entry), [props.files, props.entry]);
|
|
318
|
+
// A resolver is consulted unless the block brings its own files and the resolver
|
|
319
|
+
// says (via `list()`) that it does not know this src.
|
|
320
|
+
const tryResolver = !!resolver && !(inlineFiles && (!src || (resolver.list ? !resolver.list().includes(src) : false)));
|
|
321
|
+
const hookResolver = tryResolver ? resolver : undefined;
|
|
322
|
+
const meta = useMeta(hookResolver, src);
|
|
323
|
+
const resolvedFiles = useFiles(hookResolver, src, near);
|
|
324
|
+
const component = useComponent(hookResolver, src, near);
|
|
325
|
+
const resolverFailed = meta.status === "error" || resolvedFiles.status === "error" || component.status === "error";
|
|
326
|
+
const mode = tryResolver && !(inlineFiles && resolverFailed) ? "resolver" : inlineFiles ? "inline" : "none";
|
|
327
|
+
const metaValue = mode === "resolver" && meta.status === "ready" ? meta.value : undefined;
|
|
328
|
+
const files = mode === "inline" ? { status: "ready", value: inlineFiles } : resolvedFiles;
|
|
329
|
+
const title = props.title ?? metaValue?.title ?? (src.split("/").pop() || "Demo");
|
|
330
|
+
const description = props.description ?? metaValue?.description;
|
|
331
|
+
const variants = props.variants?.length ? props.variants : metaValue?.variants;
|
|
332
|
+
const [chosenVariant, setVariant] = useState(undefined);
|
|
333
|
+
const variant = variants?.length
|
|
334
|
+
? (variants.some((v) => v.id === chosenVariant) ? chosenVariant : variants[0].id)
|
|
335
|
+
: undefined;
|
|
336
|
+
const layoutPref = props.layout ?? metaValue?.layout ?? "auto";
|
|
337
|
+
const fileList = files.status === "ready" ? files.value : null;
|
|
338
|
+
const layout = layoutPref !== "auto" ? layoutPref : fileList ? (fileList.length > 1 ? "multi" : "single") : null;
|
|
339
|
+
const heightValue = props.height ?? metaValue?.height;
|
|
340
|
+
// Look: the tag's attributes (props) first, then `meta.json`.
|
|
341
|
+
const bleed = props.bleed ?? metaValue?.bleed;
|
|
342
|
+
const propSurface = typeof props.surface === "string" ? cssToSurface(props.surface) : props.surface;
|
|
343
|
+
const look = {
|
|
344
|
+
className: props.canvasClassName ?? metaValue?.className,
|
|
345
|
+
surface: propSurface ?? metaValue?.surface,
|
|
346
|
+
};
|
|
347
|
+
const variantsWidth = props.variantsWidth ?? metaValue?.variantsWidth;
|
|
348
|
+
const status = props.status ?? metaValue?.status;
|
|
349
|
+
const [fullscreen, setFullscreen] = useState(false);
|
|
350
|
+
const href = mode === "resolver" ? resolver?.href?.(src, variant ? { variant } : undefined) : undefined;
|
|
351
|
+
const baseId = useId();
|
|
352
|
+
const { runtime, dependencies } = runtimeOptions;
|
|
353
|
+
const preview = useMemo(() => {
|
|
354
|
+
if (mode !== "inline")
|
|
355
|
+
return { kind: "component", component };
|
|
356
|
+
if (props.streaming)
|
|
357
|
+
return { kind: "streaming" };
|
|
358
|
+
if (!runtime || !inlineFiles)
|
|
359
|
+
return { kind: "unavailable" };
|
|
360
|
+
const entry = inlineFiles[0].path;
|
|
361
|
+
return { kind: "runtime", render: (v) => runtime({ src, title, files: inlineFiles, entry, variant: v, dependencies }) };
|
|
362
|
+
}, [mode, component, props.streaming, runtime, inlineFiles, src, title, dependencies]);
|
|
363
|
+
const runnable = preview.kind !== "unavailable";
|
|
364
|
+
if (mode === "none") {
|
|
365
|
+
return (_jsxs("div", { className: "docs-source-ref", "data-docstream-demo": "", "data-demo-src": src, children: [_jsx(FileCode2, { width: 16, height: 16, "aria-hidden": "true" }), _jsx("span", { children: title }), _jsxs("code", { children: ["demo:", src] })] }));
|
|
366
|
+
}
|
|
367
|
+
const node = {
|
|
368
|
+
type: "demo",
|
|
369
|
+
src,
|
|
370
|
+
...(props.title ? { title: props.title } : {}),
|
|
371
|
+
...(props.description ? { description: props.description } : {}),
|
|
372
|
+
...(props.height !== undefined ? { height: String(props.height) } : {}),
|
|
373
|
+
...(props.layout ? { layout: props.layout } : {}),
|
|
374
|
+
...(props.variants?.length ? { variants: props.variants } : {}),
|
|
375
|
+
...(props.viewport ? { viewport: props.viewport } : {}),
|
|
376
|
+
...(props.status ? { status: props.status } : {}),
|
|
377
|
+
...(props.bleed !== undefined ? { bleed: props.bleed } : {}),
|
|
378
|
+
...(props.canvasClassName ? { className: props.canvasClassName } : {}),
|
|
379
|
+
...(props.surface ? { surface: typeof props.surface === "string" ? props.surface : surfaceToCss(props.surface) } : {}),
|
|
380
|
+
...(props.variantsWidth !== undefined && props.variantsWidth !== "" ? { variantsWidth: String(props.variantsWidth) } : {}),
|
|
381
|
+
};
|
|
382
|
+
const copyDemo = () => inlineDemoMarkdown(node, fileList ?? [], metaValue);
|
|
383
|
+
const dialog = (_jsx(FullscreenDialog, { open: fullscreen, onClose: () => setFullscreen(false), title: title, src: src, variants: variants, variant: variant, onVariant: setVariant, preview: preview, bleed: bleed, look: look, variantsWidth: variantsWidth, href: href }));
|
|
384
|
+
const wrapper = (kind) => ["docs-demo", `docs-demo-${kind}`, props.className].filter(Boolean).join(" ");
|
|
385
|
+
if (layout === "single") {
|
|
386
|
+
const file = fileList?.[0];
|
|
387
|
+
return (_jsxs("section", { ref: ref, className: wrapper("single"), "data-docstream-demo": "", "data-demo-src": src, "data-demo-mode": mode, "aria-labelledby": `${baseId}-title`, children: [_jsxs("div", { className: "docs-react-demo", children: [_jsxs("header", { className: "docs-react-demo-header docs-demo-single-head", children: [_jsxs("span", { className: "docs-demo-heading", children: [_jsx("span", { id: `${baseId}-title`, className: "docs-demo-title", children: title }), description ? _jsx("span", { className: "docs-demo-desc", children: _jsx(InlineMarkdown, { text: description }) }) : null] }), _jsx("span", { className: "docs-demo-spacer" }), _jsx(StatusBadge, { status: status }), _jsx(VariantSwitch, { variants: variants, value: variant, onChange: setVariant, title: title, width: variantsWidth }), runnable ? _jsx(FullscreenButton, { onOpen: () => setFullscreen(true), title: title }) : null] }), runnable ? (_jsx("div", { className: "docs-react-demo-preview docs-demo-single-preview",
|
|
388
|
+
// A hint, not a cap: in-page components may grow past it (no height: size to content;
|
|
389
|
+
// hosts may set a floor with --docs-demo-preview-min-height). An iframe needs a real height.
|
|
390
|
+
style: preview.kind === "runtime"
|
|
391
|
+
? { height: cssLength(heightValue, "360px") }
|
|
392
|
+
: heightValue === undefined || heightValue === ""
|
|
393
|
+
? undefined
|
|
394
|
+
: { minHeight: cssLength(heightValue, "0px") }, children: near ? _jsx(DemoCanvas, { src: src, preview: preview, variant: variant, bleed: bleed, look: look }) : _jsx(Spinner, {}) })) : (_jsx(DemoCanvas, { src: src, preview: preview, variant: variant })), file ? (_jsx(CollapsibleCode, { code: file.content.replace(/\n+$/, ""), language: file.language ?? languageForPath(file.path) ?? null, copyLabel: `Copy ${file.path}`, ...(runnable ? {} : { collapsedLines: 12 }) })) : null] }), dialog] }));
|
|
395
|
+
}
|
|
396
|
+
return (_jsx(MultiFileViewer, { rootRef: ref, className: wrapper(layout ?? "pending"), baseId: baseId, mode: mode, src: src, title: title, description: description, variants: variants, variant: variant, onVariant: setVariant, files: files, preview: preview, near: near, height: cssLength(heightValue, "480px"), viewport: props.viewport, bleed: bleed, look: look, status: status, variantsWidth: variantsWidth, href: href, onFullscreen: () => setFullscreen(true), copyDemo: fileList?.length ? copyDemo : undefined, dialog: dialog }));
|
|
397
|
+
}
|
|
398
|
+
function MultiFileViewer({ rootRef, className, baseId, mode, src, title, description, variants, variant, onVariant, files, preview, near, height, viewport, bleed, look, status, variantsWidth, href, onFullscreen, copyDemo, dialog }) {
|
|
399
|
+
const runnable = preview.kind !== "unavailable";
|
|
400
|
+
// Nothing to preview without a runtime: open on the code rather than an empty frame.
|
|
401
|
+
const [tab, setTab] = useState(runnable ? "preview" : "code");
|
|
402
|
+
const [width, setWidth] = useState(() => VIEWPORTS.find((v) => v.id === viewport)?.width ?? null);
|
|
403
|
+
const [codeSeen, setCodeSeen] = useState(false);
|
|
404
|
+
useEffect(() => {
|
|
405
|
+
if (tab === "code")
|
|
406
|
+
setCodeSeen(true);
|
|
407
|
+
}, [tab]);
|
|
408
|
+
const activeViewport = width === null ? "desktop" : VIEWPORTS.find((v) => v.width === width)?.id;
|
|
409
|
+
return (_jsxs("section", { ref: rootRef, className: className, "data-docstream-demo": "", "data-demo-src": src, "data-demo-mode": mode, "aria-labelledby": `${baseId}-title`, children: [_jsxs("div", { className: "docs-demo-head", children: [_jsxs("div", { className: "docs-demo-heading", children: [_jsx("div", { id: `${baseId}-title`, className: "docs-demo-title", children: title }), description ? _jsx("p", { className: "docs-demo-desc", children: _jsx(InlineMarkdown, { text: description }) }) : null] }), _jsxs("div", { className: "docs-demo-tools", children: [_jsx(PillTabs, { options: [{ id: "preview", label: "Preview" }, { id: "code", label: "Code" }], value: tab, onChange: setTab, label: `${title} view`, tabId: (id) => `${baseId}-tab-${id}`, panelId: (id) => `${baseId}-panel-${id}` }), _jsx(StatusBadge, { status: status }), _jsx(VariantSwitch, { variants: variants, value: variant, onChange: onVariant, title: title, width: variantsWidth }), tab === "preview" && runnable ? (_jsx("div", { className: "docs-demo-viewports", role: "group", "aria-label": "Preview width", children: VIEWPORTS.map(({ id, label, width: w, Icon }) => (_jsx("button", { type: "button", className: "docs-demo-vp", "aria-pressed": activeViewport === id, "aria-label": w ? `${label} (${w}px)` : label, title: w ? `${label} · ${w}px` : label, onClick: () => setWidth(w), children: _jsx(Icon, { width: 15, height: 15, "aria-hidden": "true" }) }, id))) })) : null, copyDemo ? _jsx(CopyButton, { text: copyDemo, label: "Copy demo as Markdown", className: "docs-demo-icon-btn" }) : null, runnable ? _jsx(FullscreenButton, { onOpen: onFullscreen, title: title }) : null, _jsx(NewTabLink, { href: href, title: title })] })] }), _jsxs("div", { className: "docs-demo-body", children: [_jsx("div", { id: `${baseId}-panel-preview`, role: "tabpanel", "aria-labelledby": `${baseId}-tab-preview`, hidden: tab !== "preview", children: runnable ? (_jsx(PreviewStage, { width: width, onResize: setWidth, height: height, children: near ? _jsx(DemoCanvas, { src: src, preview: preview, variant: variant, bleed: bleed, look: look }) : _jsx(Spinner, {}) })) : (_jsx(DemoCanvas, { src: src, preview: preview, variant: variant })) }), _jsxs("div", { id: `${baseId}-panel-code`, role: "tabpanel", "aria-labelledby": `${baseId}-tab-code`, hidden: tab !== "code", children: [!runnable && tab === "code" ? _jsx(DemoCanvas, { src: src, preview: preview, variant: variant }) : null, codeSeen || tab === "code" ? (files.status === "ready" ? (_jsx(CodeView, { src: src, files: files.value, height: height, id: baseId })) : files.status === "error" ? (_jsx(DemoError, { message: `${src}: ${files.error.message}` })) : (_jsx("div", { className: "docs-demo-code", style: { height }, children: _jsx(Spinner, { label: "Loading files" }) }))) : null] })] }), dialog] }));
|
|
410
|
+
}
|
|
411
|
+
/** Renders a parsed `{% demo %}` block with the resolver and runtime from context. */
|
|
412
|
+
export function DemoBlock({ node }) {
|
|
413
|
+
return (_jsx(DemoViewer, { src: node.src, title: node.title, description: node.description, height: node.height, layout: node.layout, variants: node.variants, viewport: node.viewport, files: node.files, entry: node.entry, streaming: node.open, status: node.status, bleed: node.bleed, canvasClassName: node.className, surface: node.surface, variantsWidth: node.variantsWidth }));
|
|
414
|
+
}
|
|
415
|
+
/** One demo filling the viewport, for a `?demo=<src>` deep link the host routes. */
|
|
416
|
+
export function DemoFullscreen({ src, resolver: override, variant, className, style }) {
|
|
417
|
+
const resolver = useDemoResolver(override);
|
|
418
|
+
const meta = useMeta(resolver, src);
|
|
419
|
+
const component = useComponent(resolver, src, true);
|
|
420
|
+
const metaValue = meta.status === "ready" ? meta.value : undefined;
|
|
421
|
+
const chosen = variant ?? metaValue?.variants?.[0]?.id;
|
|
422
|
+
if (!resolver)
|
|
423
|
+
return _jsx(DemoError, { message: `No demo resolver for ${src}` });
|
|
424
|
+
return (_jsx("div", { className: className ? `docs-demo-fullscreen ${className}` : "docs-demo-fullscreen", style: style, "data-demo-src": src, children: _jsx(DemoCanvas, { src: src, preview: { kind: "component", component }, variant: chosen, bleed: metaValue?.bleed, look: metaValue }) }));
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=DemoViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DemoViewer.js","sourceRoot":"","sources":["../../src/demo/DemoViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DemoResolver, DemoRuntimeOptions } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The host's demo resolver. Renderers given a `demoResolver` prop provide it, so
|
|
4
|
+
* nested renderers (Markdown inside tabs, hints, a demo's own Markdown) inherit it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DocstreamDemoContext: import("react").Context<DemoResolver | undefined>;
|
|
7
|
+
export declare function useDemoResolver(override?: DemoResolver): DemoResolver | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* How inline-file demos without a resolver run their Preview (`demoRuntime`) and which
|
|
10
|
+
* extra npm packages they may import (`demoDependencies`). Provided by the renderers.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DocstreamDemoRuntimeContext: import("react").Context<DemoRuntimeOptions>;
|
|
13
|
+
export declare function useDemoRuntime(override?: DemoRuntimeOptions): DemoRuntimeOptions;
|
|
14
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/demo/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,mDAAqD,CAAA;AAEtF,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,CAGjF;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,6CAAwC,CAAA;AAEhF,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAQhF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The host's demo resolver. Renderers given a `demoResolver` prop provide it, so
|
|
4
|
+
* nested renderers (Markdown inside tabs, hints, a demo's own Markdown) inherit it.
|
|
5
|
+
*/
|
|
6
|
+
export const DocstreamDemoContext = createContext(undefined);
|
|
7
|
+
export function useDemoResolver(override) {
|
|
8
|
+
const inherited = useContext(DocstreamDemoContext);
|
|
9
|
+
return override ?? inherited;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* How inline-file demos without a resolver run their Preview (`demoRuntime`) and which
|
|
13
|
+
* extra npm packages they may import (`demoDependencies`). Provided by the renderers.
|
|
14
|
+
*/
|
|
15
|
+
export const DocstreamDemoRuntimeContext = createContext({});
|
|
16
|
+
export function useDemoRuntime(override) {
|
|
17
|
+
const inherited = useContext(DocstreamDemoRuntimeContext);
|
|
18
|
+
return {
|
|
19
|
+
runtime: override?.runtime ?? inherited.runtime,
|
|
20
|
+
dependencies: override?.dependencies || inherited.dependencies
|
|
21
|
+
? { ...inherited.dependencies, ...override?.dependencies }
|
|
22
|
+
: undefined,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/demo/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGjD;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAA2B,SAAS,CAAC,CAAA;AAEtF,MAAM,UAAU,eAAe,CAAC,QAAuB;IACrD,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAA;IAClD,OAAO,QAAQ,IAAI,SAAS,CAAA;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAqB,EAAE,CAAC,CAAA;AAEhF,MAAM,UAAU,cAAc,CAAC,QAA6B;IAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAA;IACzD,OAAO;QACL,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO;QAC/C,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,SAAS,CAAC,YAAY;YAC5D,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,YAAY,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE;YAC1D,CAAC,CAAC,SAAS;KACd,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { DemoComponent, DemoFile, DemoResolver } from "./types.js";
|
|
2
|
+
type Lazy<T> = () => Promise<T>;
|
|
3
|
+
type MaybeLazy<T> = T | Lazy<T>;
|
|
4
|
+
export interface GlobDemoResolverOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Entry modules, e.g. `import.meta.glob("./examples/*\/*\/index.tsx")`.
|
|
7
|
+
* Lazy (the default for `import.meta.glob`) or eager module objects both work.
|
|
8
|
+
*/
|
|
9
|
+
modules: Record<string, MaybeLazy<unknown>>;
|
|
10
|
+
/**
|
|
11
|
+
* Raw file contents, e.g.
|
|
12
|
+
* `import.meta.glob("./examples/**\/*.{ts,tsx,css,json}", { query: "?raw", import: "default" })`.
|
|
13
|
+
* Values are file text (or loaders of it); no `<string>` generic is needed. A module
|
|
14
|
+
* object with a string `default` (a `?raw` glob without `import: "default"`) also works.
|
|
15
|
+
*/
|
|
16
|
+
sources: Record<string, MaybeLazy<unknown>>;
|
|
17
|
+
/**
|
|
18
|
+
* Folder metadata, e.g.
|
|
19
|
+
* `import.meta.glob("./examples/*\/*\/meta.json", { eager: true, import: "default" })`.
|
|
20
|
+
*/
|
|
21
|
+
metas?: Record<string, MaybeLazy<unknown>>;
|
|
22
|
+
/**
|
|
23
|
+
* The glob prefix the `<page>/<example>` ids are relative to, e.g. `"./examples"`.
|
|
24
|
+
* When omitted, a demo's id is the last two folders of its entry path.
|
|
25
|
+
*/
|
|
26
|
+
root?: string;
|
|
27
|
+
/** Default entry file name. Defaults to `index.tsx`; a folder's `meta.entry` wins. */
|
|
28
|
+
entry?: string;
|
|
29
|
+
/** Hide files from the Code view (`meta.json` is always hidden). */
|
|
30
|
+
exclude?: (path: string, src: string) => boolean;
|
|
31
|
+
/** Deep link for a demo alone, e.g. `(src) => demoHref(src)`. */
|
|
32
|
+
href?: DemoResolver["href"];
|
|
33
|
+
}
|
|
34
|
+
export declare function languageForPath(path: string): string | undefined;
|
|
35
|
+
/** Picks the component out of a loaded module: `default`, else the first function export. */
|
|
36
|
+
export declare function demoComponentFrom(module: unknown, src?: string): DemoComponent;
|
|
37
|
+
/** Orders files entry first, then top-level before nested, then by path. */
|
|
38
|
+
export declare function sortDemoFiles(files: DemoFile[], entry?: string): DemoFile[];
|
|
39
|
+
/**
|
|
40
|
+
* Build a `DemoResolver` from Vite `import.meta.glob` maps. Each `<page>/<example>`
|
|
41
|
+
* folder holds an entry module (default export = the demo component, which receives
|
|
42
|
+
* `variant`), any number of source files, and an optional `meta.json`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createGlobDemoResolver(options: GlobDemoResolverOptions): DemoResolver;
|
|
45
|
+
/**
|
|
46
|
+
* The conventional deep link for one demo: `?demo=<src>` on the current page
|
|
47
|
+
* (or `base`). Hosts route it to `<DemoFullscreen>`; see `demoFromSearch`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function demoHref(src: string, options?: {
|
|
50
|
+
base?: string;
|
|
51
|
+
variant?: string;
|
|
52
|
+
param?: string;
|
|
53
|
+
}): string;
|
|
54
|
+
/** Reads the `?demo=<src>` (and optional `variant`) deep link. */
|
|
55
|
+
export declare function demoFromSearch(search?: string, param?: string): {
|
|
56
|
+
src: string;
|
|
57
|
+
variant?: string;
|
|
58
|
+
} | null;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=glob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/demo/glob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,SAAS,CAAA;AAE9E,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;AAC/B,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAE/B,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAChD,iEAAiE;IACjE,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;CAC5B;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIhE;AASD,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,aAAa,CAS9E;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,SAAc,GAAG,QAAQ,EAAE,CAOhF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAgGrF;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAK/G;AAED,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOxG"}
|