@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.
Files changed (216) hide show
  1. package/README.md +76 -14
  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 +64 -0
  7. package/dist/demo/DemoViewer.d.ts.map +1 -0
  8. package/dist/demo/DemoViewer.js +426 -0
  9. package/dist/demo/DemoViewer.js.map +1 -0
  10. package/dist/demo/context.d.ts +14 -0
  11. package/dist/demo/context.d.ts.map +1 -0
  12. package/dist/demo/context.js +25 -0
  13. package/dist/demo/context.js.map +1 -0
  14. package/dist/demo/glob.d.ts +60 -0
  15. package/dist/demo/glob.d.ts.map +1 -0
  16. package/dist/demo/glob.js +158 -0
  17. package/dist/demo/glob.js.map +1 -0
  18. package/dist/demo/index.d.ts +10 -0
  19. package/dist/demo/index.d.ts.map +1 -0
  20. package/dist/demo/index.js +6 -0
  21. package/dist/demo/index.js.map +1 -0
  22. package/dist/demo/markdown.d.ts +60 -0
  23. package/dist/demo/markdown.d.ts.map +1 -0
  24. package/dist/demo/markdown.js +181 -0
  25. package/dist/demo/markdown.js.map +1 -0
  26. package/dist/demo/surface.d.ts +11 -0
  27. package/dist/demo/surface.d.ts.map +1 -0
  28. package/dist/demo/surface.js +69 -0
  29. package/dist/demo/surface.js.map +1 -0
  30. package/dist/demo/types.d.ts +91 -0
  31. package/dist/demo/types.d.ts.map +1 -0
  32. package/dist/demo/types.js +2 -0
  33. package/dist/demo/types.js.map +1 -0
  34. package/dist/docs/CollapsibleCode.d.ts +14 -0
  35. package/dist/docs/CollapsibleCode.d.ts.map +1 -0
  36. package/dist/docs/CollapsibleCode.js +19 -0
  37. package/dist/docs/CollapsibleCode.js.map +1 -0
  38. package/dist/docs/DocsRenderer.d.ts +49 -0
  39. package/dist/docs/DocsRenderer.d.ts.map +1 -0
  40. package/dist/docs/DocsRenderer.js +277 -0
  41. package/dist/docs/DocsRenderer.js.map +1 -0
  42. package/dist/docs/HighlightedCode.d.ts +6 -0
  43. package/dist/docs/HighlightedCode.d.ts.map +1 -0
  44. package/dist/docs/HighlightedCode.js +40 -0
  45. package/dist/docs/HighlightedCode.js.map +1 -0
  46. package/dist/docs/Mermaid.d.ts +7 -0
  47. package/dist/docs/Mermaid.d.ts.map +1 -0
  48. package/dist/docs/Mermaid.js +39 -0
  49. package/dist/docs/Mermaid.js.map +1 -0
  50. package/dist/docs/PageActions.d.ts +33 -0
  51. package/dist/docs/PageActions.d.ts.map +1 -0
  52. package/dist/docs/PageActions.js +115 -0
  53. package/dist/docs/PageActions.js.map +1 -0
  54. package/dist/docs/controls.d.ts +29 -0
  55. package/dist/docs/controls.d.ts.map +1 -0
  56. package/dist/docs/controls.js +46 -0
  57. package/dist/docs/controls.js.map +1 -0
  58. package/dist/docs/copy.d.ts +24 -0
  59. package/dist/docs/copy.d.ts.map +1 -0
  60. package/dist/docs/copy.js +62 -0
  61. package/dist/docs/copy.js.map +1 -0
  62. package/dist/docs/math.d.ts +3 -0
  63. package/dist/docs/math.d.ts.map +1 -0
  64. package/dist/docs/math.js +12 -0
  65. package/dist/docs/math.js.map +1 -0
  66. package/dist/docs/reference.d.ts +27 -0
  67. package/dist/docs/reference.d.ts.map +1 -0
  68. package/dist/docs/reference.js +73 -0
  69. package/dist/docs/reference.js.map +1 -0
  70. package/dist/docs/tabs-sync.d.ts +5 -0
  71. package/dist/docs/tabs-sync.d.ts.map +1 -0
  72. package/dist/docs/tabs-sync.js +58 -0
  73. package/dist/docs/tabs-sync.js.map +1 -0
  74. package/dist/gitbook/ast.d.ts +506 -0
  75. package/dist/gitbook/ast.d.ts.map +1 -0
  76. package/dist/gitbook/ast.js +8 -0
  77. package/dist/gitbook/ast.js.map +1 -0
  78. package/dist/gitbook/attrs.d.ts +14 -0
  79. package/dist/gitbook/attrs.d.ts.map +1 -0
  80. package/dist/gitbook/attrs.js +36 -0
  81. package/dist/gitbook/attrs.js.map +1 -0
  82. package/dist/gitbook/flatten.d.ts +14 -0
  83. package/dist/gitbook/flatten.d.ts.map +1 -0
  84. package/dist/gitbook/flatten.js +45 -0
  85. package/dist/gitbook/flatten.js.map +1 -0
  86. package/dist/gitbook/index.d.ts +10 -0
  87. package/dist/gitbook/index.d.ts.map +1 -0
  88. package/dist/gitbook/index.js +8 -0
  89. package/dist/gitbook/index.js.map +1 -0
  90. package/dist/gitbook/inline.d.ts +28 -0
  91. package/dist/gitbook/inline.d.ts.map +1 -0
  92. package/dist/gitbook/inline.js +956 -0
  93. package/dist/gitbook/inline.js.map +1 -0
  94. package/dist/gitbook/outline.d.ts +16 -0
  95. package/dist/gitbook/outline.d.ts.map +1 -0
  96. package/dist/gitbook/outline.js +44 -0
  97. package/dist/gitbook/outline.js.map +1 -0
  98. package/dist/gitbook/package-managers.d.ts +12 -0
  99. package/dist/gitbook/package-managers.d.ts.map +1 -0
  100. package/dist/gitbook/package-managers.js +93 -0
  101. package/dist/gitbook/package-managers.js.map +1 -0
  102. package/dist/gitbook/parse.d.ts +44 -0
  103. package/dist/gitbook/parse.d.ts.map +1 -0
  104. package/dist/gitbook/parse.js +1113 -0
  105. package/dist/gitbook/parse.js.map +1 -0
  106. package/dist/gitbook/serialize.d.ts +23 -0
  107. package/dist/gitbook/serialize.d.ts.map +1 -0
  108. package/dist/gitbook/serialize.js +498 -0
  109. package/dist/gitbook/serialize.js.map +1 -0
  110. package/dist/index.d.ts +34 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +24 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/openapi/OpenApiOperation.d.ts +6 -0
  115. package/dist/openapi/OpenApiOperation.d.ts.map +1 -0
  116. package/dist/openapi/OpenApiOperation.js +112 -0
  117. package/dist/openapi/OpenApiOperation.js.map +1 -0
  118. package/dist/playground/InlineDemoPreview.d.ts +24 -0
  119. package/dist/playground/InlineDemoPreview.d.ts.map +1 -0
  120. package/dist/playground/InlineDemoPreview.js +48 -0
  121. package/dist/playground/InlineDemoPreview.js.map +1 -0
  122. package/dist/playground/PlaygroundStreamdown.d.ts +16 -0
  123. package/dist/playground/PlaygroundStreamdown.d.ts.map +1 -0
  124. package/dist/playground/PlaygroundStreamdown.js +22 -0
  125. package/dist/playground/PlaygroundStreamdown.js.map +1 -0
  126. package/dist/playground/ReactCodePreview.d.ts +64 -0
  127. package/dist/playground/ReactCodePreview.d.ts.map +1 -0
  128. package/dist/playground/ReactCodePreview.js +108 -0
  129. package/dist/playground/ReactCodePreview.js.map +1 -0
  130. package/dist/playground/filesystem.d.ts +27 -0
  131. package/dist/playground/filesystem.d.ts.map +1 -0
  132. package/dist/playground/filesystem.js +65 -0
  133. package/dist/playground/filesystem.js.map +1 -0
  134. package/dist/playground/index.d.ts +9 -0
  135. package/dist/playground/index.d.ts.map +1 -0
  136. package/dist/playground/index.js +7 -0
  137. package/dist/playground/index.js.map +1 -0
  138. package/dist/playground/project.d.ts +57 -0
  139. package/dist/playground/project.d.ts.map +1 -0
  140. package/dist/playground/project.js +137 -0
  141. package/dist/playground/project.js.map +1 -0
  142. package/dist/replay/NativeReplay.d.ts +9 -0
  143. package/dist/replay/NativeReplay.d.ts.map +1 -0
  144. package/dist/replay/NativeReplay.js +173 -0
  145. package/dist/replay/NativeReplay.js.map +1 -0
  146. package/dist/replay/ReplayPreview.d.ts +33 -0
  147. package/dist/replay/ReplayPreview.d.ts.map +1 -0
  148. package/dist/replay/ReplayPreview.js +91 -0
  149. package/dist/replay/ReplayPreview.js.map +1 -0
  150. package/dist/replay/index.d.ts +5 -0
  151. package/dist/replay/index.d.ts.map +1 -0
  152. package/dist/replay/index.js +4 -0
  153. package/dist/replay/index.js.map +1 -0
  154. package/dist/replay/sanitize.d.ts +4 -0
  155. package/dist/replay/sanitize.d.ts.map +1 -0
  156. package/dist/replay/sanitize.js +86 -0
  157. package/dist/replay/sanitize.js.map +1 -0
  158. package/dist/replay/url.d.ts +8 -0
  159. package/dist/replay/url.d.ts.map +1 -0
  160. package/dist/replay/url.js +41 -0
  161. package/dist/replay/url.js.map +1 -0
  162. package/dist/source/SourcePreview.d.ts +13 -0
  163. package/dist/source/SourcePreview.d.ts.map +1 -0
  164. package/dist/source/SourcePreview.js +47 -0
  165. package/dist/source/SourcePreview.js.map +1 -0
  166. package/dist/source/client.d.ts +7 -0
  167. package/dist/source/client.d.ts.map +1 -0
  168. package/dist/source/client.js +52 -0
  169. package/dist/source/client.js.map +1 -0
  170. package/dist/source/index.d.ts +6 -0
  171. package/dist/source/index.d.ts.map +1 -0
  172. package/dist/source/index.js +3 -0
  173. package/dist/source/index.js.map +1 -0
  174. package/dist/source/types.d.ts +33 -0
  175. package/dist/source/types.d.ts.map +1 -0
  176. package/dist/source/types.js +2 -0
  177. package/dist/source/types.js.map +1 -0
  178. package/dist/streamdown.d.ts +19 -0
  179. package/dist/streamdown.d.ts.map +1 -0
  180. package/dist/streamdown.js +15 -0
  181. package/dist/streamdown.js.map +1 -0
  182. package/dist/styles.css +2441 -0
  183. package/dist/video/VideoEmbed.d.ts +17 -0
  184. package/dist/video/VideoEmbed.d.ts.map +1 -0
  185. package/dist/video/VideoEmbed.js +12 -0
  186. package/dist/video/VideoEmbed.js.map +1 -0
  187. package/dist/video/index.d.ts +3 -0
  188. package/dist/video/index.d.ts.map +1 -0
  189. package/dist/video/index.js +2 -0
  190. package/dist/video/index.js.map +1 -0
  191. package/dist/vite/index.d.ts +21 -0
  192. package/dist/vite/index.d.ts.map +1 -0
  193. package/dist/vite/index.js +137 -0
  194. package/dist/vite/index.js.map +1 -0
  195. package/dist/viz/VizEmbed.d.ts +18 -0
  196. package/dist/viz/VizEmbed.d.ts.map +1 -0
  197. package/dist/viz/VizEmbed.js +12 -0
  198. package/dist/viz/VizEmbed.js.map +1 -0
  199. package/dist/viz/index.d.ts +4 -0
  200. package/dist/viz/index.d.ts.map +1 -0
  201. package/dist/viz/index.js +3 -0
  202. package/dist/viz/index.js.map +1 -0
  203. package/package.json +70 -34
  204. package/src/demo/types.ts +2 -2
  205. package/src/docs/DocsRenderer.tsx +31 -7
  206. package/src/docs/Mermaid.tsx +5 -3
  207. package/src/docs/math.ts +3 -0
  208. package/src/index.ts +10 -28
  209. package/src/playground/PlaygroundStreamdown.tsx +28 -61
  210. package/src/playground/filesystem.ts +10 -190
  211. package/src/playground/index.ts +4 -0
  212. package/src/playground/project.ts +194 -0
  213. package/src/replay/NativeReplay.tsx +236 -0
  214. package/src/replay/ReplayPreview.tsx +7 -226
  215. package/src/styles.css +91 -1
  216. 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"}