@brett_lamy/docstream 1.3.0 → 1.5.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.
Files changed (228) hide show
  1. package/README.md +79 -5
  2. package/dist/assets.d.ts +3 -0
  3. package/dist/assets.d.ts.map +1 -0
  4. package/dist/assets.js +20 -0
  5. package/dist/assets.js.map +1 -0
  6. package/dist/demo/DemoViewer.d.ts +78 -0
  7. package/dist/demo/DemoViewer.d.ts.map +1 -0
  8. package/dist/demo/DemoViewer.js +467 -0
  9. package/dist/demo/DemoViewer.js.map +1 -0
  10. package/dist/demo/clipboard.d.ts +70 -0
  11. package/dist/demo/clipboard.d.ts.map +1 -0
  12. package/dist/demo/clipboard.js +187 -0
  13. package/dist/demo/clipboard.js.map +1 -0
  14. package/dist/demo/context.d.ts +20 -0
  15. package/dist/demo/context.d.ts.map +1 -0
  16. package/dist/demo/context.js +31 -0
  17. package/dist/demo/context.js.map +1 -0
  18. package/dist/demo/copy-demo.d.ts +23 -0
  19. package/dist/demo/copy-demo.d.ts.map +1 -0
  20. package/dist/demo/copy-demo.js +81 -0
  21. package/dist/demo/copy-demo.js.map +1 -0
  22. package/dist/demo/glob.d.ts +60 -0
  23. package/dist/demo/glob.d.ts.map +1 -0
  24. package/dist/demo/glob.js +158 -0
  25. package/dist/demo/glob.js.map +1 -0
  26. package/dist/demo/index.d.ts +16 -0
  27. package/dist/demo/index.d.ts.map +1 -0
  28. package/dist/demo/index.js +9 -0
  29. package/dist/demo/index.js.map +1 -0
  30. package/dist/demo/markdown.d.ts +60 -0
  31. package/dist/demo/markdown.d.ts.map +1 -0
  32. package/dist/demo/markdown.js +181 -0
  33. package/dist/demo/markdown.js.map +1 -0
  34. package/dist/demo/surface.d.ts +11 -0
  35. package/dist/demo/surface.d.ts.map +1 -0
  36. package/dist/demo/surface.js +69 -0
  37. package/dist/demo/surface.js.map +1 -0
  38. package/dist/demo/types.d.ts +91 -0
  39. package/dist/demo/types.d.ts.map +1 -0
  40. package/dist/demo/types.js +2 -0
  41. package/dist/demo/types.js.map +1 -0
  42. package/dist/demo/vfs.d.ts +51 -0
  43. package/dist/demo/vfs.d.ts.map +1 -0
  44. package/dist/demo/vfs.js +156 -0
  45. package/dist/demo/vfs.js.map +1 -0
  46. package/dist/docs/CollapsibleCode.d.ts +14 -0
  47. package/dist/docs/CollapsibleCode.d.ts.map +1 -0
  48. package/dist/docs/CollapsibleCode.js +19 -0
  49. package/dist/docs/CollapsibleCode.js.map +1 -0
  50. package/dist/docs/DocsRenderer.d.ts +55 -0
  51. package/dist/docs/DocsRenderer.d.ts.map +1 -0
  52. package/dist/docs/DocsRenderer.js +279 -0
  53. package/dist/docs/DocsRenderer.js.map +1 -0
  54. package/dist/docs/HighlightedCode.d.ts +6 -0
  55. package/dist/docs/HighlightedCode.d.ts.map +1 -0
  56. package/dist/docs/HighlightedCode.js +40 -0
  57. package/dist/docs/HighlightedCode.js.map +1 -0
  58. package/dist/docs/Mermaid.d.ts +7 -0
  59. package/dist/docs/Mermaid.d.ts.map +1 -0
  60. package/dist/docs/Mermaid.js +39 -0
  61. package/dist/docs/Mermaid.js.map +1 -0
  62. package/dist/docs/PageActions.d.ts +33 -0
  63. package/dist/docs/PageActions.d.ts.map +1 -0
  64. package/dist/docs/PageActions.js +115 -0
  65. package/dist/docs/PageActions.js.map +1 -0
  66. package/dist/docs/controls.d.ts +29 -0
  67. package/dist/docs/controls.d.ts.map +1 -0
  68. package/dist/docs/controls.js +46 -0
  69. package/dist/docs/controls.js.map +1 -0
  70. package/dist/docs/copy.d.ts +24 -0
  71. package/dist/docs/copy.d.ts.map +1 -0
  72. package/dist/docs/copy.js +62 -0
  73. package/dist/docs/copy.js.map +1 -0
  74. package/dist/docs/math.d.ts +3 -0
  75. package/dist/docs/math.d.ts.map +1 -0
  76. package/dist/docs/math.js +12 -0
  77. package/dist/docs/math.js.map +1 -0
  78. package/dist/docs/reference.d.ts +27 -0
  79. package/dist/docs/reference.d.ts.map +1 -0
  80. package/dist/docs/reference.js +73 -0
  81. package/dist/docs/reference.js.map +1 -0
  82. package/dist/docs/tabs-sync.d.ts +5 -0
  83. package/dist/docs/tabs-sync.d.ts.map +1 -0
  84. package/dist/docs/tabs-sync.js +58 -0
  85. package/dist/docs/tabs-sync.js.map +1 -0
  86. package/dist/gitbook/ast.d.ts +506 -0
  87. package/dist/gitbook/ast.d.ts.map +1 -0
  88. package/dist/gitbook/ast.js +8 -0
  89. package/dist/gitbook/ast.js.map +1 -0
  90. package/dist/gitbook/attrs.d.ts +14 -0
  91. package/dist/gitbook/attrs.d.ts.map +1 -0
  92. package/dist/gitbook/attrs.js +36 -0
  93. package/dist/gitbook/attrs.js.map +1 -0
  94. package/dist/gitbook/flatten.d.ts +14 -0
  95. package/dist/gitbook/flatten.d.ts.map +1 -0
  96. package/dist/gitbook/flatten.js +45 -0
  97. package/dist/gitbook/flatten.js.map +1 -0
  98. package/dist/gitbook/index.d.ts +10 -0
  99. package/dist/gitbook/index.d.ts.map +1 -0
  100. package/dist/gitbook/index.js +8 -0
  101. package/dist/gitbook/index.js.map +1 -0
  102. package/dist/gitbook/inline.d.ts +28 -0
  103. package/dist/gitbook/inline.d.ts.map +1 -0
  104. package/dist/gitbook/inline.js +956 -0
  105. package/dist/gitbook/inline.js.map +1 -0
  106. package/dist/gitbook/outline.d.ts +16 -0
  107. package/dist/gitbook/outline.d.ts.map +1 -0
  108. package/dist/gitbook/outline.js +44 -0
  109. package/dist/gitbook/outline.js.map +1 -0
  110. package/dist/gitbook/package-managers.d.ts +12 -0
  111. package/dist/gitbook/package-managers.d.ts.map +1 -0
  112. package/dist/gitbook/package-managers.js +93 -0
  113. package/dist/gitbook/package-managers.js.map +1 -0
  114. package/dist/gitbook/parse.d.ts +44 -0
  115. package/dist/gitbook/parse.d.ts.map +1 -0
  116. package/dist/gitbook/parse.js +1113 -0
  117. package/dist/gitbook/parse.js.map +1 -0
  118. package/dist/gitbook/serialize.d.ts +23 -0
  119. package/dist/gitbook/serialize.d.ts.map +1 -0
  120. package/dist/gitbook/serialize.js +498 -0
  121. package/dist/gitbook/serialize.js.map +1 -0
  122. package/dist/index.d.ts +34 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +24 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/openapi/OpenApiOperation.d.ts +6 -0
  127. package/dist/openapi/OpenApiOperation.d.ts.map +1 -0
  128. package/dist/openapi/OpenApiOperation.js +112 -0
  129. package/dist/openapi/OpenApiOperation.js.map +1 -0
  130. package/dist/playground/InlineDemoPreview.d.ts +24 -0
  131. package/dist/playground/InlineDemoPreview.d.ts.map +1 -0
  132. package/dist/playground/InlineDemoPreview.js +48 -0
  133. package/dist/playground/InlineDemoPreview.js.map +1 -0
  134. package/dist/playground/PlaygroundStreamdown.d.ts +16 -0
  135. package/dist/playground/PlaygroundStreamdown.d.ts.map +1 -0
  136. package/dist/playground/PlaygroundStreamdown.js +22 -0
  137. package/dist/playground/PlaygroundStreamdown.js.map +1 -0
  138. package/dist/playground/ReactCodePreview.d.ts +64 -0
  139. package/dist/playground/ReactCodePreview.d.ts.map +1 -0
  140. package/dist/playground/ReactCodePreview.js +108 -0
  141. package/dist/playground/ReactCodePreview.js.map +1 -0
  142. package/dist/playground/filesystem.d.ts +27 -0
  143. package/dist/playground/filesystem.d.ts.map +1 -0
  144. package/dist/playground/filesystem.js +65 -0
  145. package/dist/playground/filesystem.js.map +1 -0
  146. package/dist/playground/index.d.ts +9 -0
  147. package/dist/playground/index.d.ts.map +1 -0
  148. package/dist/playground/index.js +7 -0
  149. package/dist/playground/index.js.map +1 -0
  150. package/dist/playground/project.d.ts +57 -0
  151. package/dist/playground/project.d.ts.map +1 -0
  152. package/dist/playground/project.js +137 -0
  153. package/dist/playground/project.js.map +1 -0
  154. package/dist/replay/NativeReplay.d.ts +9 -0
  155. package/dist/replay/NativeReplay.d.ts.map +1 -0
  156. package/dist/replay/NativeReplay.js +173 -0
  157. package/dist/replay/NativeReplay.js.map +1 -0
  158. package/dist/replay/ReplayPreview.d.ts +33 -0
  159. package/dist/replay/ReplayPreview.d.ts.map +1 -0
  160. package/dist/replay/ReplayPreview.js +91 -0
  161. package/dist/replay/ReplayPreview.js.map +1 -0
  162. package/dist/replay/index.d.ts +5 -0
  163. package/dist/replay/index.d.ts.map +1 -0
  164. package/dist/replay/index.js +4 -0
  165. package/dist/replay/index.js.map +1 -0
  166. package/dist/replay/sanitize.d.ts +4 -0
  167. package/dist/replay/sanitize.d.ts.map +1 -0
  168. package/dist/replay/sanitize.js +86 -0
  169. package/dist/replay/sanitize.js.map +1 -0
  170. package/dist/replay/url.d.ts +8 -0
  171. package/dist/replay/url.d.ts.map +1 -0
  172. package/dist/replay/url.js +41 -0
  173. package/dist/replay/url.js.map +1 -0
  174. package/dist/source/SourcePreview.d.ts +13 -0
  175. package/dist/source/SourcePreview.d.ts.map +1 -0
  176. package/dist/source/SourcePreview.js +47 -0
  177. package/dist/source/SourcePreview.js.map +1 -0
  178. package/dist/source/client.d.ts +7 -0
  179. package/dist/source/client.d.ts.map +1 -0
  180. package/dist/source/client.js +52 -0
  181. package/dist/source/client.js.map +1 -0
  182. package/dist/source/index.d.ts +6 -0
  183. package/dist/source/index.d.ts.map +1 -0
  184. package/dist/source/index.js +3 -0
  185. package/dist/source/index.js.map +1 -0
  186. package/dist/source/types.d.ts +33 -0
  187. package/dist/source/types.d.ts.map +1 -0
  188. package/dist/source/types.js +2 -0
  189. package/dist/source/types.js.map +1 -0
  190. package/dist/streamdown.d.ts +19 -0
  191. package/dist/streamdown.d.ts.map +1 -0
  192. package/dist/streamdown.js +15 -0
  193. package/dist/streamdown.js.map +1 -0
  194. package/dist/styles.css +2441 -0
  195. package/dist/video/VideoEmbed.d.ts +17 -0
  196. package/dist/video/VideoEmbed.d.ts.map +1 -0
  197. package/dist/video/VideoEmbed.js +12 -0
  198. package/dist/video/VideoEmbed.js.map +1 -0
  199. package/dist/video/index.d.ts +3 -0
  200. package/dist/video/index.d.ts.map +1 -0
  201. package/dist/video/index.js +2 -0
  202. package/dist/video/index.js.map +1 -0
  203. package/dist/vite/index.d.ts +21 -0
  204. package/dist/vite/index.d.ts.map +1 -0
  205. package/dist/vite/index.js +137 -0
  206. package/dist/vite/index.js.map +1 -0
  207. package/dist/viz/VizEmbed.d.ts +18 -0
  208. package/dist/viz/VizEmbed.d.ts.map +1 -0
  209. package/dist/viz/VizEmbed.js +12 -0
  210. package/dist/viz/VizEmbed.js.map +1 -0
  211. package/dist/viz/index.d.ts +4 -0
  212. package/dist/viz/index.d.ts.map +1 -0
  213. package/dist/viz/index.js +3 -0
  214. package/dist/viz/index.js.map +1 -0
  215. package/package.json +65 -32
  216. package/src/demo/DemoViewer.tsx +56 -11
  217. package/src/demo/clipboard.ts +228 -0
  218. package/src/demo/context.ts +7 -0
  219. package/src/demo/copy-demo.tsx +102 -0
  220. package/src/demo/index.ts +29 -2
  221. package/src/demo/vfs.ts +197 -0
  222. package/src/docs/DocsRenderer.tsx +13 -4
  223. package/src/docs/Mermaid.tsx +5 -3
  224. package/src/index.ts +19 -0
  225. package/src/replay/ReplayPreview.tsx +0 -1
  226. package/src/streamdown.tsx +2 -0
  227. package/src/styles.css +91 -0
  228. package/src/replay/styles.css +0 -87
@@ -0,0 +1,467 @@
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 { createDocstreamClipboard } from "./clipboard.js";
26
+ import { CopyDemoButton } from "./copy-demo.js";
27
+ import { languageForPath } from "./glob.js";
28
+ import { useDemoVFSContext, useDemoVFSEntry } from "./vfs.js";
29
+ import { cssToSurface, surfaceStyle, surfaceToCss } from "./surface.js";
30
+ const settled = new WeakMap();
31
+ function cacheFor(resolver) {
32
+ let cache = settled.get(resolver);
33
+ if (!cache)
34
+ settled.set(resolver, (cache = new Map()));
35
+ return cache;
36
+ }
37
+ /**
38
+ * Resolve demos ahead of rendering (meta, files and component), so the first render — including
39
+ * server rendering and static export — shows them resolved instead of loading. Failures are
40
+ * remembered too, so inline-file fallbacks apply immediately.
41
+ */
42
+ export async function preloadDemos(resolver, srcs) {
43
+ const cache = cacheFor(resolver);
44
+ const settle = async (key, run) => {
45
+ try {
46
+ cache.set(key, { status: "ready", value: await run() });
47
+ }
48
+ catch (cause) {
49
+ cache.set(key, { status: "error", error: cause instanceof Error ? cause : new Error(String(cause)) });
50
+ }
51
+ };
52
+ await Promise.all(srcs.flatMap((src) => [
53
+ settle(`meta:${src}`, () => resolver.meta(src)),
54
+ settle(`files:${src}`, () => resolver.files(src)),
55
+ settle(`load:${src}`, () => resolver.load(src)),
56
+ ]));
57
+ }
58
+ /**
59
+ * Fetch demos' meta and files (not their components) into the viewer's cache, so
60
+ * `peekDemoSource` can answer synchronously — e.g. when a copy event needs a demo's files.
61
+ */
62
+ export async function prefetchDemoSources(resolver, srcs) {
63
+ const cache = cacheFor(resolver);
64
+ const settle = async (key, run) => {
65
+ if (cache.get(key)?.status === "ready")
66
+ return;
67
+ try {
68
+ cache.set(key, { status: "ready", value: await run() });
69
+ }
70
+ catch (cause) {
71
+ cache.set(key, { status: "error", error: cause instanceof Error ? cause : new Error(String(cause)) });
72
+ }
73
+ };
74
+ await Promise.all(srcs.flatMap((src) => [settle(`meta:${src}`, () => resolver.meta(src)), settle(`files:${src}`, () => resolver.files(src))]));
75
+ }
76
+ /** A demo's files (and meta) if the resolver has already delivered them (viewer, `preloadDemos`, `prefetchDemoSources`). */
77
+ export function peekDemoSource(resolver, src) {
78
+ const cache = settled.get(resolver);
79
+ const files = cache?.get(`files:${src}`);
80
+ if (files?.status !== "ready" || !files.value.length)
81
+ return undefined;
82
+ const meta = cache?.get(`meta:${src}`);
83
+ return { files: files.value, ...(meta?.status === "ready" && meta.value ? { meta: meta.value } : {}) };
84
+ }
85
+ /** Resolves `run()` once `active`, remembering settled values so remounts don't flash. */
86
+ function useResolved(resolver, key, active, run) {
87
+ const cached = resolver ? cacheFor(resolver).get(key) : undefined;
88
+ const [state, setState] = useState(cached ?? { status: "loading" });
89
+ useEffect(() => {
90
+ if (!resolver)
91
+ return;
92
+ const hit = cacheFor(resolver).get(key);
93
+ if (hit && hit.status !== "loading") {
94
+ setState(hit);
95
+ return;
96
+ }
97
+ if (!active) {
98
+ setState({ status: "loading" });
99
+ return;
100
+ }
101
+ let live = true;
102
+ run().then((value) => {
103
+ const next = { status: "ready", value };
104
+ cacheFor(resolver).set(key, next);
105
+ if (live)
106
+ setState(next);
107
+ }, (cause) => {
108
+ const error = cause instanceof Error ? cause : new Error(String(cause));
109
+ if (live)
110
+ setState({ status: "error", error });
111
+ });
112
+ return () => {
113
+ live = false;
114
+ };
115
+ // `run` closes over resolver + key only.
116
+ // eslint-disable-next-line react-hooks/exhaustive-deps
117
+ }, [resolver, key, active]);
118
+ return state;
119
+ }
120
+ const useMeta = (resolver, src) => useResolved(resolver, `meta:${src}`, true, () => resolver.meta(src));
121
+ const useFiles = (resolver, src, active) => useResolved(resolver, `files:${src}`, active, () => resolver.files(src));
122
+ const useComponent = (resolver, src, active) => useResolved(resolver, `load:${src}`, active, () => resolver.load(src));
123
+ /** True once the element has come within `margin` of the viewport (stays true). */
124
+ function useNearViewport(margin = "400px 0px") {
125
+ // A callback ref, so an element that appears later (a VFS demo arriving) is observed too.
126
+ const [el, setEl] = useState(null);
127
+ const ref = useMemo(() => (node) => setEl(node), []);
128
+ const [near, setNear] = useState(false);
129
+ useEffect(() => {
130
+ if (!el || near)
131
+ return;
132
+ if (typeof IntersectionObserver === "undefined") {
133
+ setNear(true);
134
+ return;
135
+ }
136
+ const observer = new IntersectionObserver(([entry]) => {
137
+ if (entry?.isIntersecting)
138
+ setNear(true);
139
+ }, { rootMargin: margin });
140
+ observer.observe(el);
141
+ return () => observer.disconnect();
142
+ }, [el, near, margin]);
143
+ return [ref, near];
144
+ }
145
+ /* ---------- pieces ---------- */
146
+ class DemoErrorBoundary extends Component {
147
+ state = { error: null };
148
+ static getDerivedStateFromError(error) {
149
+ return { error: error instanceof Error ? error : new Error(String(error)) };
150
+ }
151
+ componentDidUpdate(prev) {
152
+ if (prev.src !== this.props.src && this.state.error)
153
+ this.setState({ error: null });
154
+ }
155
+ render() {
156
+ return this.state.error ? _jsx(DemoError, { message: `${this.props.src} failed to render: ${this.state.error.message}` }) : this.props.children;
157
+ }
158
+ }
159
+ function DemoError({ message }) {
160
+ return _jsx("pre", { className: "docs-demo-error", role: "alert", children: message });
161
+ }
162
+ function Spinner({ label = "Loading demo" }) {
163
+ return (_jsx("div", { className: "docs-demo-loading", role: "status", "aria-label": label, children: _jsx("span", { className: "docs-demo-spinner", "aria-hidden": "true" }) }));
164
+ }
165
+ /** Descriptions allow inline Markdown (`code`, **bold**, _em_, links). */
166
+ function InlineMarkdown({ text }) {
167
+ const nodes = useMemo(() => parseInline(text), [text]);
168
+ return (_jsx(_Fragment, { children: nodes.map((n, i) => {
169
+ if (n.type !== "text")
170
+ return null;
171
+ let el = n.text;
172
+ if (n.code)
173
+ el = _jsx("code", { children: el });
174
+ if (n.bold)
175
+ el = _jsx("strong", { children: el });
176
+ if (n.italic)
177
+ el = _jsx("em", { children: el });
178
+ if (n.link)
179
+ el = _jsx("a", { href: n.link, children: el });
180
+ return _jsx("span", { children: el }, i);
181
+ }) }));
182
+ }
183
+ function cssLength(value, fallback) {
184
+ if (value === undefined || value === "")
185
+ return fallback;
186
+ if (typeof value === "number")
187
+ return `${value}px`;
188
+ return /^\d+(?:\.\d+)?$/.test(value.trim()) ? `${value.trim()}px` : value;
189
+ }
190
+ export const NO_RUNTIME_NOTE = "Live preview needs the playground runtime. The code is shown instead.";
191
+ function DemoCanvas({ src, preview, variant, bleed, look }) {
192
+ if (preview.kind === "unavailable" || preview.kind === "streaming") {
193
+ 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 }));
194
+ }
195
+ if (preview.kind === "runtime") {
196
+ 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) }) }));
197
+ }
198
+ const { component } = preview;
199
+ 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, {})) }));
200
+ }
201
+ const VIEWPORTS = [
202
+ { id: "desktop", label: "Desktop", width: null, Icon: Monitor },
203
+ { id: "tablet", label: "Tablet", width: 768, Icon: Tablet },
204
+ { id: "phone", label: "Phone", width: 390, Icon: Smartphone },
205
+ ];
206
+ const MIN_WIDTH = 280;
207
+ /** The resizable preview frame on its stage. `width === null` fills the stage. */
208
+ function PreviewStage({ width, onResize, height, children }) {
209
+ const reduced = useReducedMotion();
210
+ const frame = useRef(null);
211
+ const [dragging, setDragging] = useState(false);
212
+ const [measured, setMeasured] = useState(null);
213
+ const [max, setMax] = useState(0);
214
+ useEffect(() => {
215
+ const el = frame.current;
216
+ if (!el || typeof ResizeObserver === "undefined")
217
+ return;
218
+ const observer = new ResizeObserver(() => {
219
+ setMeasured(Math.round(el.getBoundingClientRect().width));
220
+ setMax(el.parentElement?.clientWidth ?? 0);
221
+ });
222
+ observer.observe(el);
223
+ if (el.parentElement)
224
+ observer.observe(el.parentElement);
225
+ return () => observer.disconnect();
226
+ }, []);
227
+ const clamp = (next) => {
228
+ const limit = frame.current?.parentElement?.clientWidth ?? next;
229
+ const value = Math.round(Math.min(limit, Math.max(MIN_WIDTH, next)));
230
+ return value >= limit - 4 ? null : value;
231
+ };
232
+ const startDrag = (event) => {
233
+ const el = frame.current;
234
+ if (!el || event.button !== 0)
235
+ return;
236
+ event.preventDefault();
237
+ const left = el.getBoundingClientRect().left;
238
+ setDragging(true);
239
+ const move = (ev) => onResize(clamp(ev.clientX - left));
240
+ const up = () => {
241
+ setDragging(false);
242
+ window.removeEventListener("pointermove", move);
243
+ window.removeEventListener("pointerup", up);
244
+ window.removeEventListener("pointercancel", up);
245
+ };
246
+ window.addEventListener("pointermove", move);
247
+ window.addEventListener("pointerup", up);
248
+ window.addEventListener("pointercancel", up);
249
+ };
250
+ const onKeyDown = (event) => {
251
+ const current = width ?? measured ?? max;
252
+ const step = event.shiftKey ? 50 : 10;
253
+ let next;
254
+ if (event.key === "ArrowLeft")
255
+ next = clamp(current - step);
256
+ else if (event.key === "ArrowRight")
257
+ next = clamp(current + step);
258
+ else if (event.key === "Home")
259
+ next = clamp(MIN_WIDTH);
260
+ else if (event.key === "End")
261
+ next = null;
262
+ if (next === undefined)
263
+ return;
264
+ event.preventDefault();
265
+ onResize(next);
266
+ };
267
+ 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` : "" })] }));
268
+ }
269
+ /** Files as a tree: the entry and root files first, then each folder with its files indented. */
270
+ function fileTree(files) {
271
+ const rows = [];
272
+ const seen = new Set();
273
+ for (const file of files) {
274
+ const parts = file.path.split("/");
275
+ for (let d = 0; d < parts.length - 1; d++) {
276
+ const dir = parts.slice(0, d + 1).join("/");
277
+ if (!seen.has(dir)) {
278
+ seen.add(dir);
279
+ rows.push({ kind: "dir", name: parts[d], depth: d, path: dir });
280
+ }
281
+ }
282
+ rows.push({ kind: "file", name: parts[parts.length - 1], depth: parts.length - 1, path: file.path });
283
+ }
284
+ return rows;
285
+ }
286
+ function CodeView({ src, files, height, id }) {
287
+ const [active, setActive] = useState(files[0]?.path ?? "");
288
+ useEffect(() => {
289
+ if (!files.some((f) => f.path === active))
290
+ setActive(files[0]?.path ?? "");
291
+ }, [files, active]);
292
+ const file = files.find((f) => f.path === active) ?? files[0];
293
+ const rows = useMemo(() => fileTree(files), [files]);
294
+ const paths = files.map((f) => f.path);
295
+ const tabId = (path) => `${id}-file-${paths.indexOf(path)}`;
296
+ const panelId = `${id}-source`;
297
+ 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" })) })] })] }));
298
+ }
299
+ function FullscreenButton({ onOpen, title }) {
300
+ 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" }) }));
301
+ }
302
+ function NewTabLink({ href, title }) {
303
+ if (!href)
304
+ return null;
305
+ 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" }) }));
306
+ }
307
+ function VariantSwitch({ variants, value, onChange, title, width }) {
308
+ if (!variants?.length || value === undefined)
309
+ return null;
310
+ 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") } }));
311
+ }
312
+ function StatusBadge({ status }) {
313
+ return status ? _jsx("span", { className: "docs-demo-status", children: status }) : null;
314
+ }
315
+ /** A full-viewport overlay (native modal dialog: top layer, focus trap, Esc to close). */
316
+ function FullscreenDialog({ open, onClose, title, src, variants, variant, onVariant, preview, bleed, look, variantsWidth, href }) {
317
+ const ref = useRef(null);
318
+ const titleId = useId();
319
+ useEffect(() => {
320
+ const dialog = ref.current;
321
+ if (!dialog)
322
+ return;
323
+ if (open && !dialog.open) {
324
+ if (typeof dialog.showModal === "function")
325
+ dialog.showModal();
326
+ else
327
+ dialog.setAttribute("open", "");
328
+ }
329
+ else if (!open && dialog.open) {
330
+ dialog.close();
331
+ }
332
+ }, [open]);
333
+ 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 }));
334
+ }
335
+ /** Inline files, entry first. */
336
+ function orderInline(files, entry) {
337
+ if (!files?.length)
338
+ return undefined;
339
+ const index = entry ? files.findIndex((f) => f.path === entry) : -1;
340
+ return index > 0 ? [files[index], ...files.slice(0, index), ...files.slice(index + 1)] : files;
341
+ }
342
+ export function DemoViewer(props) {
343
+ const resolver = useDemoResolver(props.resolver);
344
+ const runtimeOptions = useDemoRuntime({ runtime: props.runtime, dependencies: props.dependencies });
345
+ const { src } = props;
346
+ const [ref, near] = useNearViewport();
347
+ const vfs = useDemoVFSContext(props.vfs);
348
+ // Pasted demos: files held by the VFS stand in for inline files the block doesn't carry.
349
+ const vfsEntry = useDemoVFSEntry(vfs, props.files?.length ? "" : src);
350
+ const ownFiles = props.files?.length ? props.files : vfsEntry?.files;
351
+ const ownEntry = props.files?.length ? props.entry : props.entry ?? vfsEntry?.meta?.entry;
352
+ const inlineFiles = useMemo(() => orderInline(ownFiles, ownEntry), [ownFiles, ownEntry]);
353
+ // A resolver is consulted unless the block brings its own files and the resolver
354
+ // says (via `list()`) that it does not know this src.
355
+ const tryResolver = !!resolver && !(inlineFiles && (!src || (resolver.list ? !resolver.list().includes(src) : false)));
356
+ const hookResolver = tryResolver ? resolver : undefined;
357
+ const meta = useMeta(hookResolver, src);
358
+ const resolvedFiles = useFiles(hookResolver, src, near);
359
+ const component = useComponent(hookResolver, src, near);
360
+ const resolverFailed = meta.status === "error" || resolvedFiles.status === "error" || component.status === "error";
361
+ const mode = tryResolver && !(inlineFiles && resolverFailed) ? "resolver" : inlineFiles ? "inline" : "none";
362
+ const metaValue = mode === "resolver" ? (meta.status === "ready" ? meta.value : undefined) : mode === "inline" && !props.files?.length ? vfsEntry?.meta : undefined;
363
+ const files = mode === "inline" ? { status: "ready", value: inlineFiles } : resolvedFiles;
364
+ const title = props.title ?? metaValue?.title ?? (src.split("/").pop() || "Demo");
365
+ const description = props.description ?? metaValue?.description;
366
+ const variants = props.variants?.length ? props.variants : metaValue?.variants;
367
+ const [chosenVariant, setVariant] = useState(undefined);
368
+ const variant = variants?.length
369
+ ? (variants.some((v) => v.id === chosenVariant) ? chosenVariant : variants[0].id)
370
+ : undefined;
371
+ const layoutPref = props.layout ?? metaValue?.layout ?? "auto";
372
+ const fileList = files.status === "ready" ? files.value : null;
373
+ const layout = layoutPref !== "auto" ? layoutPref : fileList ? (fileList.length > 1 ? "multi" : "single") : null;
374
+ const heightValue = props.height ?? metaValue?.height;
375
+ // Look: the tag's attributes (props) first, then `meta.json`.
376
+ const bleed = props.bleed ?? metaValue?.bleed;
377
+ const propSurface = typeof props.surface === "string" ? cssToSurface(props.surface) : props.surface;
378
+ const look = {
379
+ className: props.canvasClassName ?? metaValue?.className,
380
+ surface: propSurface ?? metaValue?.surface,
381
+ };
382
+ const variantsWidth = props.variantsWidth ?? metaValue?.variantsWidth;
383
+ const status = props.status ?? metaValue?.status;
384
+ const [fullscreen, setFullscreen] = useState(false);
385
+ const href = mode === "resolver" ? resolver?.href?.(src, variant ? { variant } : undefined) : undefined;
386
+ const baseId = useId();
387
+ const { runtime, dependencies } = runtimeOptions;
388
+ const preview = useMemo(() => {
389
+ if (mode !== "inline")
390
+ return { kind: "component", component };
391
+ if (props.streaming)
392
+ return { kind: "streaming" };
393
+ if (!runtime || !inlineFiles)
394
+ return { kind: "unavailable" };
395
+ const entry = inlineFiles[0].path;
396
+ return { kind: "runtime", render: (v) => runtime({ src, title, files: inlineFiles, entry, variant: v, dependencies }) };
397
+ }, [mode, component, props.streaming, runtime, inlineFiles, src, title, dependencies]);
398
+ const runnable = preview.kind !== "unavailable";
399
+ if (mode === "none") {
400
+ 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] })] }));
401
+ }
402
+ const node = {
403
+ type: "demo",
404
+ src,
405
+ ...(props.title ? { title: props.title } : {}),
406
+ ...(props.description ? { description: props.description } : {}),
407
+ ...(props.height !== undefined ? { height: String(props.height) } : {}),
408
+ ...(props.layout ? { layout: props.layout } : {}),
409
+ ...(props.variants?.length ? { variants: props.variants } : {}),
410
+ ...(props.viewport ? { viewport: props.viewport } : {}),
411
+ ...(props.status ? { status: props.status } : {}),
412
+ ...(props.bleed !== undefined ? { bleed: props.bleed } : {}),
413
+ ...(props.canvasClassName ? { className: props.canvasClassName } : {}),
414
+ ...(props.surface ? { surface: typeof props.surface === "string" ? props.surface : surfaceToCss(props.surface) } : {}),
415
+ ...(props.variantsWidth !== undefined && props.variantsWidth !== "" ? { variantsWidth: String(props.variantsWidth) } : {}),
416
+ };
417
+ // "Copy demo": the exact block (src-only stays src-only; inline files stay inline) plus its files.
418
+ const copyDemo = () => {
419
+ if (!fileList?.length)
420
+ return null;
421
+ const exact = props.files?.length ? { ...node, ...(props.entry ? { entry: props.entry } : {}), files: props.files.map((f) => ({ ...f })) } : node;
422
+ return createDocstreamClipboard({ type: "doc", children: [exact] }, { lookup: () => ({ files: fileList, ...(metaValue ? { meta: metaValue } : {}) }) });
423
+ };
424
+ 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 }));
425
+ const wrapper = (kind) => ["docs-demo", `docs-demo-${kind}`, props.className].filter(Boolean).join(" ");
426
+ if (layout === "single") {
427
+ const file = fileList?.[0];
428
+ 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 }), fileList?.length ? _jsx(CopyDemoButton, { clipboard: copyDemo, className: "docs-demo-icon-btn" }) : null, runnable ? _jsx(FullscreenButton, { onOpen: () => setFullscreen(true), title: title }) : null] }), runnable ? (_jsx("div", { className: "docs-react-demo-preview docs-demo-single-preview",
429
+ // A hint, not a cap: in-page components may grow past it (no height: size to content;
430
+ // hosts may set a floor with --docs-demo-preview-min-height). An iframe needs a real height.
431
+ style: preview.kind === "runtime"
432
+ ? { height: cssLength(heightValue, "360px") }
433
+ : heightValue === undefined || heightValue === ""
434
+ ? undefined
435
+ : { 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] }));
436
+ }
437
+ 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 }));
438
+ }
439
+ 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 }) {
440
+ const runnable = preview.kind !== "unavailable";
441
+ // Nothing to preview without a runtime: open on the code rather than an empty frame.
442
+ const [tab, setTab] = useState(runnable ? "preview" : "code");
443
+ const [width, setWidth] = useState(() => VIEWPORTS.find((v) => v.id === viewport)?.width ?? null);
444
+ const [codeSeen, setCodeSeen] = useState(false);
445
+ useEffect(() => {
446
+ if (tab === "code")
447
+ setCodeSeen(true);
448
+ }, [tab]);
449
+ const activeViewport = width === null ? "desktop" : VIEWPORTS.find((v) => v.width === width)?.id;
450
+ 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(CopyDemoButton, { clipboard: copyDemo, 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] }));
451
+ }
452
+ /** Renders a parsed `{% demo %}` block with the resolver and runtime from context. */
453
+ export function DemoBlock({ node }) {
454
+ 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 }));
455
+ }
456
+ /** One demo filling the viewport, for a `?demo=<src>` deep link the host routes. */
457
+ export function DemoFullscreen({ src, resolver: override, variant, className, style }) {
458
+ const resolver = useDemoResolver(override);
459
+ const meta = useMeta(resolver, src);
460
+ const component = useComponent(resolver, src, true);
461
+ const metaValue = meta.status === "ready" ? meta.value : undefined;
462
+ const chosen = variant ?? metaValue?.variants?.[0]?.id;
463
+ if (!resolver)
464
+ return _jsx(DemoError, { message: `No demo resolver for ${src}` });
465
+ 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 }) }));
466
+ }
467
+ //# 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,70 @@
1
+ import type { DemoNode, DocumentNode } from "../gitbook/ast.js";
2
+ import type { DemoFile, DemoMeta } from "./types.js";
3
+ export declare const DOCSTREAM_CLIPBOARD_TYPE = "application/x-docstream+json";
4
+ export interface DocstreamClipboardPayload {
5
+ /** Always `"docstream"`. */
6
+ kind: "docstream";
7
+ version: 1;
8
+ /** The copied content as docstream Markdown, structure exactly as it was. */
9
+ markdown: string;
10
+ /** Every demo's files by `src` (inline files, or the resolver's for src-only demos). */
11
+ files: Record<string, DemoFile[]>;
12
+ /** `meta.json`-style defaults by `src` (the resolver's meta, else the tag's attributes). */
13
+ meta: Record<string, DemoMeta>;
14
+ }
15
+ /** A demo's files (and meta) as the copying side knows them. */
16
+ export interface DemoSourceSnapshot {
17
+ files: DemoFile[];
18
+ meta?: DemoMeta;
19
+ }
20
+ export interface DocstreamClipboard {
21
+ payload: DocstreamClipboardPayload;
22
+ /** The renderable Markdown (demos inlined) written as `text/plain` / `text/markdown`. */
23
+ text: string;
24
+ }
25
+ /** A react-aria `DragItem`: one representation per MIME type. */
26
+ export type DocstreamClipboardItem = Record<string, string>;
27
+ /** Every `{% demo %}` node in a document (inside tabs, hints, lists …), in document order. */
28
+ export declare function collectDemoNodes(doc: DocumentNode): DemoNode[];
29
+ /** A copy of `doc` with every demo node replaced by `map(node)`. */
30
+ export declare function mapDemoNodes(doc: DocumentNode, map: (node: DemoNode) => DemoNode): DocumentNode;
31
+ /** A demo tag's attributes as `meta.json`-style defaults. */
32
+ export declare function demoNodeMeta(node: DemoNode): DemoMeta;
33
+ export interface CreateDocstreamClipboardOptions {
34
+ /**
35
+ * Files (and meta) for demos that don't carry theirs inline — the host resolver's, read
36
+ * synchronously (see `peekDemoSource`), or a `DemoVFS`'s. Demos it can't answer for stay
37
+ * src-only in both representations.
38
+ */
39
+ lookup?: (node: DemoNode) => DemoSourceSnapshot | undefined;
40
+ /** Markdown serializer. Defaults to docstream's `serializeMarkdown`. */
41
+ serialize?: (doc: DocumentNode) => string;
42
+ }
43
+ /** The clipboard representations of a document (or a selection of one). */
44
+ export declare function createDocstreamClipboard(doc: DocumentNode, options?: CreateDocstreamClipboardOptions): DocstreamClipboard;
45
+ /** Parse the Markdown of a copied docstream selection (or a single demo). */
46
+ export declare function createDocstreamClipboardFromMarkdown(markdown: string, options?: CreateDocstreamClipboardOptions): DocstreamClipboard;
47
+ /** The clipboard as react-aria `DragItem`s (for `useClipboard`'s `getItems` / `useDrag`). */
48
+ export declare function docstreamClipboardItems(clip: DocstreamClipboard): DocstreamClipboardItem[];
49
+ /** Writes the representations straight onto a `DataTransfer` (a copy / cut / dragstart event's). */
50
+ export declare function writeDocstreamClipboard(data: Pick<DataTransfer, "setData">, clip: DocstreamClipboard): void;
51
+ /** Validates a `DOCSTREAM_CLIPBOARD_TYPE` string. */
52
+ export declare function parseDocstreamClipboard(json: string | null | undefined): DocstreamClipboardPayload | null;
53
+ /** True when a `DataTransfer` carries a docstream payload. */
54
+ export declare function hasDocstreamClipboard(data: Pick<DataTransfer, "types"> | null | undefined): boolean;
55
+ /** The docstream payload on a paste / drop `DataTransfer`, if any. */
56
+ export declare function readDocstreamClipboard(data: Pick<DataTransfer, "getData" | "types"> | null | undefined): DocstreamClipboardPayload | null;
57
+ /** Minimal react-aria `DropItem` shape (text items). */
58
+ export interface DocstreamDropItem {
59
+ kind: string;
60
+ types?: Set<string>;
61
+ getText?: (type: string) => Promise<string>;
62
+ }
63
+ /** The docstream payload among react-aria `DropItem`s (`useClipboard`'s `onPaste`, `useDrop`). */
64
+ export declare function readDocstreamClipboardItems(items: readonly DocstreamDropItem[]): Promise<DocstreamClipboardPayload | null>;
65
+ /**
66
+ * A payload for Markdown that arrived without one (only `text/plain` / `text/markdown`):
67
+ * inline-file demos give their files by `src`.
68
+ */
69
+ export declare function docstreamPayloadFromMarkdown(markdown: string): DocstreamClipboardPayload;
70
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/demo/clipboard.ts"],"names":[],"mappings":"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"}