@omnitron-dev/prism 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -0
- package/dist/blocks/index.js +3 -1
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-S6SEGBX6.js → chunk-472SOF76.js} +4 -4
- package/dist/{chunk-S6SEGBX6.js.map → chunk-472SOF76.js.map} +1 -1
- package/dist/{chunk-Z5OSPAOC.js → chunk-4Z5DE5GK.js} +78 -75
- package/dist/chunk-4Z5DE5GK.js.map +1 -0
- package/dist/chunk-52PQL67Q.js +559 -0
- package/dist/chunk-52PQL67Q.js.map +1 -0
- package/dist/chunk-75FQ5IW3.js +590 -0
- package/dist/chunk-75FQ5IW3.js.map +1 -0
- package/dist/{chunk-6AHI4GSV.js → chunk-7G5D5PTC.js} +4 -3
- package/dist/chunk-7G5D5PTC.js.map +1 -0
- package/dist/chunk-BJE2AKD4.js +105 -0
- package/dist/chunk-BJE2AKD4.js.map +1 -0
- package/dist/chunk-FF5RF32O.js +248 -0
- package/dist/chunk-FF5RF32O.js.map +1 -0
- package/dist/{chunk-OBJ244BO.js → chunk-GMIE6III.js} +9 -42
- package/dist/chunk-GMIE6III.js.map +1 -0
- package/dist/chunk-GUGTDURV.js +826 -0
- package/dist/chunk-GUGTDURV.js.map +1 -0
- package/dist/chunk-HOXFSQUV.js +573 -0
- package/dist/chunk-HOXFSQUV.js.map +1 -0
- package/dist/chunk-JSQTYDPG.js +3 -0
- package/dist/chunk-JSQTYDPG.js.map +1 -0
- package/dist/{chunk-ZTATTUH7.js → chunk-KQ67XB6T.js} +213 -651
- package/dist/chunk-KQ67XB6T.js.map +1 -0
- package/dist/{chunk-WFD54GQQ.js → chunk-LOY2NPCO.js} +14 -573
- package/dist/chunk-LOY2NPCO.js.map +1 -0
- package/dist/{chunk-YQW43BDH.js → chunk-LSPFFEJT.js} +240 -1824
- package/dist/chunk-LSPFFEJT.js.map +1 -0
- package/dist/{chunk-BZOL7GMU.js → chunk-OKTLA23Q.js} +4 -4
- package/dist/chunk-OKTLA23Q.js.map +1 -0
- package/dist/chunk-PFT2BNYO.js +191 -0
- package/dist/chunk-PFT2BNYO.js.map +1 -0
- package/dist/chunk-PGHEP4JD.js +106 -0
- package/dist/chunk-PGHEP4JD.js.map +1 -0
- package/dist/chunk-PXXPLHIY.js +74 -0
- package/dist/chunk-PXXPLHIY.js.map +1 -0
- package/dist/chunk-SU3LVQ7N.js +518 -0
- package/dist/chunk-SU3LVQ7N.js.map +1 -0
- package/dist/chunk-YHE7HXSG.js +206 -0
- package/dist/chunk-YHE7HXSG.js.map +1 -0
- package/dist/cli/index.js +7 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
- package/dist/components/date-input/date-input.d.ts +27 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +4 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +4 -1
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -1
- package/dist/components/doc-layout/index.js +6 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/editor/editor.d.ts.map +1 -1
- package/dist/components/editor/icons/index.d.ts +32 -40
- package/dist/components/editor/icons/index.d.ts.map +1 -1
- package/dist/components/editor/index.js +3 -1
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -1
- package/dist/components/index.css +4 -0
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +4 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +18 -8
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +795 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.d.ts.map +1 -1
- package/dist/components/map/Map.d.ts +19 -43
- package/dist/components/map/Map.d.ts.map +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -1
- package/dist/components/map/MapMarker.d.ts +1 -1
- package/dist/components/map/MapMarker.d.ts.map +1 -1
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +21 -12
- package/dist/components/map/MapPointPicker.d.ts.map +1 -1
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +7 -2
- package/dist/components/map/index.d.ts.map +1 -1
- package/dist/components/map/index.js +3 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -1
- package/dist/components/rail/rail.d.ts.map +1 -1
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +6 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1592 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +4 -2
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/components/search-input/search-input.d.ts +0 -10
- package/dist/components/search-input/search-input.d.ts.map +1 -1
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +4 -3
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -4
- package/dist/core/provider.d.ts +7 -2
- package/dist/core/provider.d.ts.map +1 -1
- package/dist/forms/schema-provider.d.ts +3 -3
- package/dist/forms/schema-utils.d.ts +3 -3
- package/dist/hooks/index.js +9 -5
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +4 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +4 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +24 -13
- package/dist/index.js.map +1 -1
- package/dist/layouts/core/header-section.d.ts.map +1 -1
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +7 -1
- package/dist/layouts/dashboard/layout.d.ts.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts +7 -3
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.d.ts +5 -0
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +6 -1
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/state/stores/auth.d.ts +4 -16
- package/dist/state/stores/auth.d.ts.map +1 -1
- package/dist/state/stores/ui.d.ts +7 -105
- package/dist/state/stores/ui.d.ts.map +1 -1
- package/dist/theme/components/Button.d.ts.map +1 -1
- package/dist/theme/components/FormControls.d.ts +3 -12
- package/dist/theme/components/FormControls.d.ts.map +1 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/create-theme.d.ts +5 -17
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/index.js +6 -2
- package/dist/theme/mixins.d.ts +3 -1
- package/dist/theme/mixins.d.ts.map +1 -1
- package/dist/theme/palette/overrides.d.ts +23 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +148 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +92 -45
- package/dist/chunk-6AHI4GSV.js.map +0 -1
- package/dist/chunk-BZOL7GMU.js.map +0 -1
- package/dist/chunk-OBJ244BO.js.map +0 -1
- package/dist/chunk-WFD54GQQ.js.map +0 -1
- package/dist/chunk-YQW43BDH.js.map +0 -1
- package/dist/chunk-Z5OSPAOC.js.map +0 -1
- package/dist/chunk-ZTATTUH7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/research/frontmatter.ts","../src/components/research/parse.ts","../src/components/research/diagram-image.ts","../src/components/research/diagram.tsx","../src/components/research/document.tsx"],"names":["n","body","picture","jsx","jsxs","useId"],"mappings":"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","file":"chunk-SU3LVQ7N.js","sourcesContent":["/** Recognize a leading YAML envelope without interpreting tags, aliases or values.\n * Masking preserves every UTF-16 offset and line ending in subsequent source spans. */\nexport function splitFrontmatter(source: string) {\n const opening = /^(?:\\uFEFF)?---[ \\t]*\\r?\\n/.exec(source);\n if (!opening) return { body: source, metadata: undefined };\n let offset = opening[0].length;\n while (offset < source.length) {\n const newline = source.indexOf('\\n', offset);\n const end = newline < 0 ? source.length : newline + 1;\n if (/^(?:---|\\.\\.\\.)[ \\t]*(?:\\r?\\n)?$/.test(source.slice(offset, end))) {\n const raw = source.slice(0, end);\n return {\n body: raw.replace(/[^\\r\\n]/g, ' ') + source.slice(end),\n metadata: { format: 'yaml' as const, raw, start: 0, end },\n };\n }\n offset = end;\n }\n return { body: source, metadata: undefined };\n}\n","/** Research Markdown v1: structured documents with source locations,\n * explicit diagnostics and isolated widgets.\n * Source is data: HTML and unknown syntax are retained as text, never executed. */\nimport { splitFrontmatter } from './frontmatter.js';\nimport { fromMarkdown } from 'mdast-util-from-markdown';\nimport { gfm } from 'micromark-extension-gfm';\nimport { gfmFromMarkdown } from 'mdast-util-gfm';\nimport { directive } from 'micromark-extension-directive';\nimport { directiveFromMarkdown } from 'mdast-util-directive';\nimport { math } from 'micromark-extension-math';\nimport { mathFromMarkdown } from 'mdast-util-math';\nimport type { TipTapDoc, TipTapNode, TipTapMark } from '../tiptap-renderer/index.js';\n\ntype Position = { start: { line: number; offset?: number }; end: { line: number; offset?: number } };\ntype Ast = { type: string; children?: Ast[]; position?: Position; [key: string]: unknown };\nexport interface ResearchDiagnostic {\n code: string;\n line: number;\n}\nexport interface ResearchDocumentData {\n format: 'prism-research/1';\n metadata?: { format: 'yaml'; raw: string; start: number; end: number };\n doc: TipTapDoc;\n headings: { id: string; title: string; level: number }[];\n diagnostics: ResearchDiagnostic[];\n}\nexport const researchLimits = { source: 262144, nodes: 20000, depth: 64, block: 20000 } as const;\nconst str = (v: unknown) => (typeof v === 'string' ? v : '');\nconst plain = (n: Ast): string => str(n.value) || (n.children ?? []).map(plain).join('');\n\nexport function parseResearchMarkdown(\n source: string,\n prefix = 'research',\n sourceProfile: 'research' | 'docusaurus' = 'research'\n): ResearchDocumentData {\n if (source.length > researchLimits.source) throw new Error('document_limit');\n if (!/^[a-zA-Z][\\w-]{0,100}$/.test(prefix)) throw new Error('invalid_document_prefix');\n const { body, metadata } = splitFrontmatter(source);\n const tree = fromMarkdown(body, {\n extensions: [gfm(), directive(), math()],\n mdastExtensions: [gfmFromMarkdown(), directiveFromMarkdown(), mathFromMarkdown()],\n }) as unknown as Ast;\n const headings: ResearchDocumentData['headings'] = [],\n diagnostics: ResearchDiagnostic[] = [];\n const ids = new Set<string>();\n let count = 0;\n const definitions = new Map<string, Ast>();\n const collect = (n: Ast, depth: number) => {\n if (++count > researchLimits.nodes || depth > researchLimits.depth) throw new Error('structure_limit');\n if (n.type === 'definition') definitions.set(str(n.identifier), n);\n for (const c of n.children ?? []) collect(c, depth + 1);\n };\n collect(tree, 0);\n const fallback = (n: Ast, code: string, inline = false): TipTapNode => {\n diagnostics.push({ code, line: n.position?.start.line ?? 1 });\n const raw = source.slice(n.position?.start.offset ?? 0, n.position?.end.offset ?? 0) || plain(n);\n return inline ? { type: 'text', text: raw } : { type: 'codeBlock', content: [{ type: 'text', text: raw }] };\n };\n const convert = (n: Ast, marks: TipTapMark[] = []): TipTapNode[] => {\n const children = () => (n.children ?? []).flatMap((c) => convert(c, marks));\n const node = (type: string, attrs?: Record<string, unknown>, content = children()): TipTapNode[] => [\n {\n type,\n attrs: { ...attrs, source: n.position },\n content,\n },\n ];\n switch (n.type) {\n case 'root':\n return children();\n case 'definition':\n return [];\n case 'text':\n return [{ type: 'text', text: str(n.value), marks }];\n case 'inlineCode':\n return [{ type: 'text', text: str(n.value), marks: [...marks, { type: 'code' }] }];\n case 'strong':\n case 'emphasis':\n case 'delete':\n return (n.children ?? []).flatMap((c) =>\n convert(c, [...marks, { type: { strong: 'bold', emphasis: 'italic', delete: 'strike' }[n.type]! }])\n );\n case 'paragraph':\n return node('paragraph');\n case 'heading': {\n const explicit = sourceProfile === 'docusaurus' ? /\\s*\\{#([^\\s{}]+)\\}\\s*$/.exec(plain(n)) : null;\n const title = explicit ? plain(n).slice(0, explicit.index) : plain(n);\n const base = `${prefix}-${\n explicit?.[1] ??\n (title\n .normalize('NFKC')\n .toLowerCase()\n .replace(/[^\\p{L}\\p{N}]+/gu, '-')\n .replace(/^-|-$/g, '') ||\n 'section')\n }`;\n let id = base,\n suffix = 1;\n while (ids.has(id)) id = `${base}-${++suffix}`;\n if (explicit && id !== base)\n diagnostics.push({ code: 'duplicate_heading_id', line: n.position?.start.line ?? 1 });\n ids.add(id);\n headings.push({ id, title, level: Number(n.depth) });\n let content = n.children ?? [];\n if (explicit) {\n const last = content.at(-1);\n if (last?.type === 'text')\n content = [\n ...content.slice(0, -1),\n { ...last, value: str(last.value).replace(/\\s*\\{#[^\\s{}]+\\}\\s*$/, '') },\n ];\n }\n return node(\n 'heading',\n { level: n.depth, id },\n content.flatMap((c) => convert(c, marks))\n );\n }\n case 'linkReference':\n case 'imageReference': {\n const def = definitions.get(str(n.identifier));\n if (!def) return [fallback(n, 'unresolved_reference', true)];\n return convert(\n { ...n, type: n.type === 'linkReference' ? 'link' : 'image', url: def.url, title: def.title },\n marks\n );\n }\n case 'link':\n return (n.children ?? []).flatMap((c) =>\n convert(c, [\n ...marks,\n {\n type: 'link',\n attrs: {\n href:\n sourceProfile === 'docusaurus' && str(n.url).startsWith('#')\n ? `#${prefix}-${str(n.url).slice(1)}`\n : str(n.url),\n },\n },\n ])\n );\n case 'image':\n return node('image', { src: str(n.url), alt: str(n.alt), title: str(n.title) }, []);\n case 'break':\n return node('hardBreak', {}, []);\n case 'blockquote':\n return node('blockquote');\n case 'thematicBreak':\n return node('horizontalRule', {}, []);\n case 'list':\n return node(\n (n.children ?? []).some((c) => typeof c.checked === 'boolean')\n ? 'taskList'\n : n.ordered\n ? 'orderedList'\n : 'bulletList',\n { start: n.start }\n );\n case 'listItem':\n return node(typeof n.checked === 'boolean' ? 'taskItem' : 'listItem', { checked: n.checked });\n case 'table':\n return node(\n 'table',\n {},\n (n.children ?? []).map((row, i) => ({\n type: 'tableRow',\n content: (row.children ?? []).map((cell) => ({\n type: i === 0 ? 'tableHeader' : 'tableCell',\n content: [{ type: 'paragraph', content: (cell.children ?? []).flatMap((c) => convert(c)) }],\n })),\n }))\n );\n case 'inlineMath':\n case 'math':\n return node(n.type === 'math' ? 'mathBlock' : 'mathInline', { tex: str(n.value) }, []).map((n) => ({\n ...n,\n marks,\n }));\n case 'code': {\n const language = str(n.lang).toLowerCase(),\n body = str(n.value);\n if (['mermaid', 'pintora', 'prism'].includes(language) && body.length > researchLimits.block)\n return [fallback(n, 'block_limit')];\n if (language === 'mermaid' || language === 'pintora')\n return node('diagram', { engine: language, code: body }, []);\n if (language === 'prism') {\n try {\n return node('researchWidget', { descriptor: JSON.parse(body) }, []);\n } catch {\n return [fallback(n, 'invalid_widget_json')];\n }\n }\n return node('codeBlock', { language, title: str(n.meta) }, [{ type: 'text', text: body }]);\n }\n case 'containerDirective':\n case 'leafDirective': {\n const name = str(n.name),\n attrs = (n.attributes ?? {}) as Record<string, string>;\n if (['note', 'tip', 'warning', 'danger', 'info', 'caution'].includes(name))\n return node('admonition', { kind: name, title: attrs.title || name });\n if (name === 'tabs') {\n if ((n.children ?? []).some((c) => c.type !== 'containerDirective' || c.name !== 'tab'))\n return [fallback(n, 'invalid_tabs')];\n return node(\n 'tabs',\n {},\n (n.children ?? []).flatMap((c) => convert(c))\n );\n }\n if (name === 'tab') return node('tabItem', { label: attrs.label || attrs.value || 'Tab' });\n if (name === 'widget')\n return node(\n 'researchWidget',\n {\n descriptor: {\n type: attrs.type,\n version: Number(attrs.version || 1),\n props: Object.fromEntries(Object.entries(attrs).filter(([key]) => key !== 'type' && key !== 'version')),\n },\n },\n []\n );\n return [fallback(n, 'unknown_directive')];\n }\n case 'html':\n return [fallback(n, 'raw_html', true)];\n default:\n return [\n fallback(\n n,\n `unsupported_${n.type}`,\n n.type.startsWith('inline') || n.type === 'textDirective' || n.type === 'footnoteReference'\n ),\n ];\n }\n };\n return { format: 'prism-research/1', metadata, doc: { type: 'doc', content: convert(tree) }, headings, diagnostics };\n}\n","import type { DOMPurify } from 'dompurify';\n\n/** The returned SVG must be consumed only by <img>, never injected into HTML.\n * SVG image isolation preserves Mermaid's layout CSS without granting it DOM\n * capabilities or allowing its styles to affect the surrounding document.\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Guides/SVG_as_an_image\n */\nexport function diagramImage(source: string, purify: DOMPurify) {\n const fragment = purify.sanitize(source, {\n USE_PROFILES: { svg: true, svgFilters: true },\n ADD_TAGS: ['style'],\n FORBID_TAGS: ['foreignObject', 'image', 'a', 'script', 'animate', 'animateMotion', 'animateTransform', 'set'],\n FORBID_ATTR: ['href', 'xlink:href'],\n RETURN_DOM_FRAGMENT: true,\n });\n const svg = fragment.querySelector('svg');\n if (!svg || !svg.getAttribute('viewBox')) throw new Error('invalid_diagram_svg');\n const title = svg.querySelector('title')?.textContent?.trim();\n const labels = [...svg.querySelectorAll('text')].map((node) => node.textContent?.trim()).filter(Boolean);\n const description = title || labels.join(' · ') || 'Diagram';\n return {\n src: 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(new XMLSerializer().serializeToString(svg)),\n description: description.slice(0, 2000),\n };\n}\n","'use client';\nimport { useEffect, useId, useRef, useState } from 'react';\nimport { useTheme } from '@mui/material/styles';\nimport type { ResearchLabels } from './document.js';\nimport { researchLimits } from './parse.js';\nimport { diagramImage } from './diagram-image.js';\n// Mermaid has mutable process-wide configuration. Serialise its configure/render\n// pair; document-local widgets and source code never get a configuration hook.\nlet pending: Promise<unknown> = Promise.resolve();\nexport function diagramSourceAllowed(source: string, engine: string) {\n return (\n engine === 'mermaid' && source.length <= researchLimits.block && !/^\\s*---/m.test(source) && !/%%\\s*\\{/.test(source)\n );\n}\nexport function ResearchDiagram({\n source,\n engine,\n labels,\n}: {\n source: string;\n engine: string;\n labels: ResearchLabels;\n}) {\n const id = `diagram-${useId().replace(/[^\\w-]/g, '')}`;\n const container = useRef<HTMLDivElement>(null);\n const [picture, setPicture] = useState<ReturnType<typeof diagramImage>>();\n const [state, setState] = useState<'loading' | 'ready' | 'error'>('loading');\n const theme = useTheme(),\n mode = theme.palette.mode;\n useEffect(() => {\n let cancelled = false;\n setState('loading');\n setPicture(undefined);\n const target = container.current;\n const run = async () => {\n if (cancelled || !target) return;\n if (!diagramSourceAllowed(source, engine)) {\n setState('error');\n return;\n }\n let scratch: HTMLDivElement | undefined;\n try {\n const [{ default: mermaid }, { default: purify }] = await Promise.all([import('mermaid'), import('dompurify')]);\n if (cancelled) return;\n scratch = document.createElement('div');\n scratch.style.cssText = 'position:absolute;visibility:hidden;pointer-events:none;width:1000px';\n target.append(scratch);\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: 'strict',\n htmlLabels: false,\n maxTextSize: researchLimits.block,\n maxEdges: 256,\n suppressErrorRendering: true,\n look: 'classic',\n theme: 'base',\n fontFamily: 'system-ui, sans-serif',\n themeVariables: {\n darkMode: mode === 'dark',\n primaryColor: theme.palette.background.paper,\n primaryTextColor: theme.palette.text.primary,\n primaryBorderColor: theme.palette.text.secondary,\n secondaryColor: theme.palette.background.default,\n tertiaryColor: theme.palette.background.paper,\n lineColor: theme.palette.text.secondary,\n textColor: theme.palette.text.primary,\n fontFamily: 'system-ui, sans-serif',\n fontSize: '16px',\n },\n flowchart: { htmlLabels: false },\n secure: [\n 'securityLevel',\n 'startOnLoad',\n 'maxTextSize',\n 'maxEdges',\n 'htmlLabels',\n 'theme',\n 'look',\n 'fontFamily',\n 'themeCSS',\n 'themeVariables',\n ],\n });\n const result = await mermaid.render(id, source, scratch);\n const picture = diagramImage(result.svg, purify);\n if (!cancelled) {\n setPicture(picture);\n setState('ready');\n }\n } catch {\n if (!cancelled) setState('error');\n } finally {\n scratch?.remove();\n }\n };\n pending = pending.catch(() => undefined).then(run);\n return () => {\n cancelled = true;\n target?.replaceChildren();\n };\n }, [source, engine, id, theme]);\n return (\n <figure className=\"prism-research__diagram\">\n {state !== 'ready' && <p role=\"status\">{state === 'error' ? labels.invalid : labels.loading}</p>}\n <div ref={container} aria-hidden=\"true\" />\n {picture && (\n <img\n className=\"prism-research__diagram-image\"\n src={picture.src}\n alt={picture.description}\n onError={() => setState('error')}\n />\n )}\n <details open={state === 'error'}>\n <summary>\n {labels.source} · {engine}\n </summary>\n <pre>{source}</pre>\n </details>\n </figure>\n );\n}\n","'use client';\n\nimport { ChevronDownIcon } from '../../icons/controls.js';\nimport { Component, useId, useMemo, type ReactNode, type ComponentType } from 'react';\nimport katex from 'katex';\nimport { Accordion, AccordionSummary, AccordionDetails, Box, Typography } from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { TipTapRenderer, type TipTapNode } from '../tiptap-renderer/index.js';\nimport { parseResearchMarkdown, researchLimits } from './parse.js';\nimport { ResearchDiagram } from './diagram.js';\nimport './research.css';\n\nexport interface ResearchWidget {\n version: number;\n render: (props: unknown) => ReactNode;\n}\nexport type ResearchWidgets = Readonly<Record<string, ResearchWidget>>;\nexport function defineResearchWidget<P>(\n version: number,\n parse: (input: unknown) => P,\n View: ComponentType<P & object>\n): ResearchWidget {\n return {\n version,\n render(input) {\n const props = parse(input);\n return <View {...(props as P & object)} />;\n },\n };\n}\nexport interface ResearchLabels {\n metadata: string;\n contents: string;\n source: string;\n unavailable: string;\n invalid: string;\n loading: string;\n diagnostics: string;\n}\nexport const defaultResearchLabels: ResearchLabels = {\n metadata: 'Source metadata',\n contents: 'On this page',\n source: 'Source',\n unavailable: 'This block is not available in this document.',\n invalid: 'This block could not be rendered. Its source is preserved.',\n loading: 'Rendering diagram…',\n diagnostics: 'Document diagnostics',\n};\nexport interface ResearchDocumentProps {\n /** Enables inert Docusaurus heading IDs and namespaced fragment links. */\n sourceProfile?: 'research' | 'docusaurus';\n source: string;\n /** Stable namespace for deep links. A revision identifier belongs to the host's document metadata. */\n documentId?: string;\n widgets?: ResearchWidgets;\n labels?: Partial<ResearchLabels>;\n contents?: boolean;\n className?: string;\n sx?: SxProps<Theme>;\n}\nclass BlockBoundary extends Component<{ children: ReactNode; fallback: ReactNode }, { failed: boolean }> {\n state = { failed: false };\n static getDerivedStateFromError() {\n return { failed: true };\n }\n render() {\n return this.state.failed ? this.props.fallback : this.props.children;\n }\n}\nfunction Formula({ node, labels }: { node: TipTapNode; labels: ResearchLabels }) {\n const tex = String(node.attrs?.tex ?? '');\n try {\n if (tex.length > researchLimits.block) throw new Error('formula_limit');\n const html = katex.renderToString(tex, {\n displayMode: node.type === 'mathBlock',\n trust: false,\n strict: 'error',\n throwOnError: true,\n maxExpand: 1000,\n maxSize: 20,\n output: 'htmlAndMathml',\n });\n return (\n <span\n className={node.type === 'mathBlock' ? 'prism-research__formula-block' : undefined}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n } catch {\n return (\n <code className=\"prism-research__invalid-math\" title={labels.invalid}>\n {tex}\n </code>\n );\n }\n}\nfunction Widget({ node, widgets, labels }: { node: TipTapNode; widgets: ResearchWidgets; labels: ResearchLabels }) {\n const d = node.attrs?.descriptor as { type?: unknown; version?: unknown; props?: unknown } | undefined;\n if (!d || typeof d.type !== 'string' || !Object.hasOwn(widgets, d.type) || widgets[d.type]?.version !== d.version)\n return (\n <details className=\"prism-research__failure\">\n <summary>{labels.unavailable}</summary>\n <pre>{JSON.stringify(d)}</pre>\n </details>\n );\n try {\n return widgets[d.type]!.render(d.props);\n } catch {\n return (\n <details className=\"prism-research__failure\">\n <summary>{labels.invalid}</summary>\n <pre>{JSON.stringify(d)}</pre>\n </details>\n );\n }\n}\nconst emptyWidgets: ResearchWidgets = Object.freeze({});\nexport function ResearchDocument({\n source,\n sourceProfile = 'research',\n documentId,\n widgets = emptyWidgets,\n labels: overrides,\n contents = false,\n className,\n sx,\n}: ResearchDocumentProps) {\n const uid = useId();\n const prefix = documentId ?? `research-${uid.replace(/[^\\w-]/g, '')}`;\n const labels = { ...defaultResearchLabels, ...overrides };\n const parsed = useMemo(() => {\n try {\n return { data: parseResearchMarkdown(source, prefix, sourceProfile) };\n } catch {\n return { error: true };\n }\n }, [source, prefix, sourceProfile]);\n const nodes = useMemo(() => {\n const failure = (raw: string) => (\n <details className=\"prism-research__failure\" open>\n <summary>{labels.invalid}</summary>\n <pre>{raw}</pre>\n </details>\n );\n const bounded = (render: (node: TipTapNode) => ReactNode) => (props: { node: TipTapNode }) => {\n const raw = String(\n props.node.attrs?.tex ?? props.node.attrs?.code ?? JSON.stringify(props.node.attrs?.descriptor ?? {})\n );\n return (\n <BlockBoundary key={raw} fallback={failure(raw)}>\n {render(props.node)}\n </BlockBoundary>\n );\n };\n return {\n mathInline: ({ node }: { node: TipTapNode }) => <Formula node={node} labels={labels} />,\n mathBlock: ({ node }: { node: TipTapNode }) => <Formula node={node} labels={labels} />,\n diagram: bounded((n) => (\n <ResearchDiagram source={String(n.attrs?.code ?? '')} engine={String(n.attrs?.engine ?? '')} labels={labels} />\n )),\n researchWidget: bounded((n) => <Widget node={n} widgets={widgets} labels={labels} />),\n };\n }, [widgets, labels.invalid, labels.unavailable, labels.loading, labels.source]);\n if (!parsed.data) return <p role=\"alert\">{labels.invalid}</p>;\n return (\n <Box\n className={`prism-research ${className ?? ''}`}\n sx={(theme) => ({ '--prism-research-border': theme.palette.divider })}\n >\n {parsed.data.metadata && (\n <Accordion\n disableGutters\n elevation={0}\n sx={{ mb: 2, border: 1, borderColor: 'divider', '&:before': { display: 'none' } }}\n >\n <AccordionSummary expandIcon={<ChevronDownIcon fontSize=\"small\" />}>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {labels.metadata} · YAML\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Box\n component=\"pre\"\n sx={{\n m: 0,\n maxHeight: 240,\n overflow: 'auto',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'anywhere',\n fontSize: 12,\n }}\n >\n {parsed.data.metadata.raw}\n </Box>\n </AccordionDetails>\n </Accordion>\n )}\n {contents && parsed.data.headings.length > 0 && (\n <nav className=\"prism-research__contents\" aria-label={labels.contents}>\n <p>{labels.contents}</p>\n <ol>\n {parsed.data.headings.map((h) => (\n <li key={h.id}>\n <a href={`#${h.id}`}>{h.title}</a>\n </li>\n ))}\n </ol>\n </nav>\n )}\n <TipTapRenderer content={parsed.data.doc} nodeRenderers={nodes} inheritRegisteredNodes={false} sx={sx} />\n {parsed.data.diagnostics.length > 0 && (\n <details className=\"prism-research__diagnostics\">\n <summary>\n {labels.diagnostics} · {parsed.data.diagnostics.length}\n </summary>\n <ul>\n {parsed.data.diagnostics.map((d, i) => (\n <li key={i}>\n {d.line}: <code>{d.code}</code>\n </li>\n ))}\n </ul>\n </details>\n )}\n </Box>\n );\n}\n"]}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { ChevronDownIcon, ChevronRightIcon } from './chunk-PGHEP4JD.js';
|
|
2
|
+
import { useId, useState, useRef, useEffect, useLayoutEffect } from 'react';
|
|
3
|
+
import Box from '@mui/material/Box';
|
|
4
|
+
import List from '@mui/material/List';
|
|
5
|
+
import ListItemButton from '@mui/material/ListItemButton';
|
|
6
|
+
import Collapse from '@mui/material/Collapse';
|
|
7
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
8
|
+
import Typography from '@mui/material/Typography';
|
|
9
|
+
import { alpha } from '@mui/material/styles';
|
|
10
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
11
|
+
|
|
12
|
+
var MAX_LABEL_LINES = 2;
|
|
13
|
+
var useIsoLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
|
|
14
|
+
function DocSidebar({ items, activeId, onItemClick, title, compact = false }) {
|
|
15
|
+
const compactIndex = () => {
|
|
16
|
+
const leaves = (nodes, path = []) => nodes.flatMap((item) => [
|
|
17
|
+
...item.href || !item.children?.length ? [{ item, path: [...path, item.label].join(" / ") }] : [],
|
|
18
|
+
...leaves(item.children ?? [], [...path, item.label])
|
|
19
|
+
]);
|
|
20
|
+
return /* @__PURE__ */ jsx(List, { dense: true, disablePadding: true, "aria-label": title, children: leaves(items).map(({ item, path }, index) => /* @__PURE__ */ jsx(Tooltip, { title: path, placement: "right", disableInteractive: true, children: /* @__PURE__ */ jsx(
|
|
21
|
+
ListItemButton,
|
|
22
|
+
{
|
|
23
|
+
component: item.href ? "a" : "button",
|
|
24
|
+
href: item.href,
|
|
25
|
+
"aria-label": item.label,
|
|
26
|
+
"aria-current": activeId === item.id ? "page" : void 0,
|
|
27
|
+
selected: activeId === item.id,
|
|
28
|
+
onClick: (event) => {
|
|
29
|
+
if (item.href && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0))
|
|
30
|
+
return;
|
|
31
|
+
if (item.href && onItemClick) event.preventDefault();
|
|
32
|
+
onItemClick?.(item);
|
|
33
|
+
},
|
|
34
|
+
sx: {
|
|
35
|
+
minHeight: 40,
|
|
36
|
+
width: "100%",
|
|
37
|
+
px: 0.5,
|
|
38
|
+
mb: 0.5,
|
|
39
|
+
borderRadius: 1,
|
|
40
|
+
justifyContent: "center",
|
|
41
|
+
textDecoration: "none"
|
|
42
|
+
},
|
|
43
|
+
children: /* @__PURE__ */ jsx(Typography, { component: "span", variant: "caption", "aria-hidden": "true", sx: { fontWeight: 600 }, children: item.shortLabel ?? String(index + 1).padStart(2, "0") })
|
|
44
|
+
}
|
|
45
|
+
) }, item.id)) });
|
|
46
|
+
};
|
|
47
|
+
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
48
|
+
compact && compactIndex(),
|
|
49
|
+
/* @__PURE__ */ jsxs(Box, { hidden: compact, children: [
|
|
50
|
+
title && /* @__PURE__ */ jsx(
|
|
51
|
+
Typography,
|
|
52
|
+
{
|
|
53
|
+
variant: "subtitle2",
|
|
54
|
+
sx: {
|
|
55
|
+
px: 1.5,
|
|
56
|
+
pt: 0.5,
|
|
57
|
+
pb: 2,
|
|
58
|
+
fontWeight: 700,
|
|
59
|
+
fontSize: "0.8125rem",
|
|
60
|
+
color: "text.secondary",
|
|
61
|
+
letterSpacing: "0.01em"
|
|
62
|
+
},
|
|
63
|
+
children: title
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ jsx(List, { dense: true, disablePadding: true, children: items.map((item) => /* @__PURE__ */ jsx(SidebarNode, { item, activeId, onItemClick, depth: 0 }, item.id)) })
|
|
67
|
+
] })
|
|
68
|
+
] });
|
|
69
|
+
}
|
|
70
|
+
function SidebarNode({
|
|
71
|
+
item,
|
|
72
|
+
activeId,
|
|
73
|
+
onItemClick,
|
|
74
|
+
depth
|
|
75
|
+
}) {
|
|
76
|
+
const hasChildren = !!item.children?.length;
|
|
77
|
+
const childrenId = useId();
|
|
78
|
+
const isActive = activeId === item.id;
|
|
79
|
+
const [open, setOpen] = useState(true);
|
|
80
|
+
const isCategory = hasChildren && !item.href;
|
|
81
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
82
|
+
/* @__PURE__ */ jsxs(
|
|
83
|
+
ListItemButton,
|
|
84
|
+
{
|
|
85
|
+
component: item.href ? "a" : "button",
|
|
86
|
+
href: item.href,
|
|
87
|
+
"aria-current": isActive ? "page" : void 0,
|
|
88
|
+
"aria-expanded": hasChildren ? open : void 0,
|
|
89
|
+
"aria-controls": hasChildren ? childrenId : void 0,
|
|
90
|
+
selected: isActive,
|
|
91
|
+
onClick: (event) => {
|
|
92
|
+
if (item.href && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0))
|
|
93
|
+
return;
|
|
94
|
+
if (item.href && onItemClick) event.preventDefault();
|
|
95
|
+
if (hasChildren) setOpen(!open);
|
|
96
|
+
onItemClick?.(item);
|
|
97
|
+
},
|
|
98
|
+
sx: {
|
|
99
|
+
pl: 1.5 + depth * 1.5,
|
|
100
|
+
pr: 1,
|
|
101
|
+
py: isCategory ? 0.75 : 0.5,
|
|
102
|
+
borderRadius: 1,
|
|
103
|
+
mx: 0.5,
|
|
104
|
+
mb: 0.25,
|
|
105
|
+
minHeight: 0,
|
|
106
|
+
alignItems: "center",
|
|
107
|
+
width: "calc(100% - 8px)",
|
|
108
|
+
textAlign: "left",
|
|
109
|
+
textDecoration: "none",
|
|
110
|
+
...isCategory && {
|
|
111
|
+
mt: depth === 0 ? 1 : 0.5
|
|
112
|
+
},
|
|
113
|
+
...isActive && {
|
|
114
|
+
bgcolor: (theme) => alpha(theme.palette.primary.main, 0.08),
|
|
115
|
+
color: "primary.main"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
children: [
|
|
119
|
+
hasChildren && /* @__PURE__ */ jsx(
|
|
120
|
+
Box,
|
|
121
|
+
{
|
|
122
|
+
component: "span",
|
|
123
|
+
"aria-hidden": "true",
|
|
124
|
+
sx: {
|
|
125
|
+
width: 20,
|
|
126
|
+
height: 20,
|
|
127
|
+
flexShrink: 0,
|
|
128
|
+
display: "inline-flex",
|
|
129
|
+
alignItems: "center",
|
|
130
|
+
justifyContent: "center",
|
|
131
|
+
lineHeight: 1
|
|
132
|
+
},
|
|
133
|
+
children: open ? /* @__PURE__ */ jsx(ChevronDownIcon, { sx: { fontSize: 18 } }) : /* @__PURE__ */ jsx(ChevronRightIcon, { sx: { fontSize: 18 } })
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
/* @__PURE__ */ jsx(
|
|
137
|
+
SidebarLabel,
|
|
138
|
+
{
|
|
139
|
+
label: item.label,
|
|
140
|
+
sx: {
|
|
141
|
+
fontWeight: isCategory ? 600 : isActive ? 600 : 400,
|
|
142
|
+
fontSize: "0.8125rem",
|
|
143
|
+
...isCategory && { color: "text.primary" }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
hasChildren && /* @__PURE__ */ jsx(Collapse, { in: open, id: childrenId, unmountOnExit: true, children: /* @__PURE__ */ jsx(List, { dense: true, disablePadding: true, children: item.children.map((child) => /* @__PURE__ */ jsx(
|
|
151
|
+
SidebarNode,
|
|
152
|
+
{
|
|
153
|
+
item: child,
|
|
154
|
+
activeId,
|
|
155
|
+
onItemClick,
|
|
156
|
+
depth: depth + 1
|
|
157
|
+
},
|
|
158
|
+
child.id
|
|
159
|
+
)) }) })
|
|
160
|
+
] });
|
|
161
|
+
}
|
|
162
|
+
function SidebarLabel({ label, sx }) {
|
|
163
|
+
const ref = useRef(null);
|
|
164
|
+
const [isOverflowing, setIsOverflowing] = useState(false);
|
|
165
|
+
useIsoLayoutEffect(() => {
|
|
166
|
+
const el = ref.current;
|
|
167
|
+
if (!el) return void 0;
|
|
168
|
+
const check = () => {
|
|
169
|
+
setIsOverflowing(el.scrollHeight > el.clientHeight + 1);
|
|
170
|
+
};
|
|
171
|
+
check();
|
|
172
|
+
if (typeof ResizeObserver === "undefined") return void 0;
|
|
173
|
+
const ro = new ResizeObserver(check);
|
|
174
|
+
ro.observe(el);
|
|
175
|
+
return () => ro.disconnect();
|
|
176
|
+
}, [label]);
|
|
177
|
+
const text = /* @__PURE__ */ jsx(
|
|
178
|
+
Typography,
|
|
179
|
+
{
|
|
180
|
+
ref,
|
|
181
|
+
component: "span",
|
|
182
|
+
variant: "body2",
|
|
183
|
+
sx: {
|
|
184
|
+
display: "-webkit-box",
|
|
185
|
+
WebkitBoxOrient: "vertical",
|
|
186
|
+
WebkitLineClamp: MAX_LABEL_LINES,
|
|
187
|
+
overflow: "hidden",
|
|
188
|
+
wordBreak: "break-word",
|
|
189
|
+
lineHeight: 1.35,
|
|
190
|
+
// The flex parent (ListItemButton) needs `minWidth: 0`
|
|
191
|
+
// on the child for the ellipsis to take effect; do it
|
|
192
|
+
// here so the consumer doesn't have to reach in.
|
|
193
|
+
minWidth: 0,
|
|
194
|
+
flex: 1,
|
|
195
|
+
...sx
|
|
196
|
+
},
|
|
197
|
+
children: label
|
|
198
|
+
}
|
|
199
|
+
);
|
|
200
|
+
if (!isOverflowing) return text;
|
|
201
|
+
return /* @__PURE__ */ jsx(Tooltip, { title: label, placement: "right", arrow: true, enterDelay: 300, enterNextDelay: 150, disableInteractive: true, children: text });
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export { DocSidebar };
|
|
205
|
+
//# sourceMappingURL=chunk-YHE7HXSG.js.map
|
|
206
|
+
//# sourceMappingURL=chunk-YHE7HXSG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/doc-layout/doc-sidebar.tsx"],"names":[],"mappings":"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","file":"chunk-YHE7HXSG.js","sourcesContent":["'use client';\n\nimport { ChevronDownIcon, ChevronRightIcon } from '../../icons/controls.js';\n\nimport { useEffect, useId, useLayoutEffect, useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport Collapse from '@mui/material/Collapse';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { alpha } from '@mui/material/styles';\n\nexport interface DocSidebarItem {\n id: string;\n label: string;\n href?: string;\n /** Short identity displayed in a collapsed navigation rail. */\n shortLabel?: string;\n children?: DocSidebarItem[];\n}\n\ninterface DocSidebarProps {\n items: DocSidebarItem[];\n activeId?: string;\n onItemClick?: (item: DocSidebarItem) => void;\n title?: string;\n compact?: boolean;\n}\n\n/**\n * Maximum number of lines a long sidebar label may wrap onto\n * before ellipsis kicks in. 2 is the industry baseline for\n * compact navigation surfaces (Notion / Linear / Stripe).\n *\n * Bumped to 3 would help Russian compound words like\n * \"Универсальные категории\" but would noticeably loosen the\n * vertical rhythm of the sidebar.\n */\nconst MAX_LABEL_LINES = 2;\n\n// useLayoutEffect logs a warning during SSR; pick the right hook so\n// consumers rendering the sidebar in a server bundle aren't noisy.\nconst useIsoLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport function DocSidebar({ items, activeId, onItemClick, title, compact = false }: DocSidebarProps) {\n const compactIndex = () => {\n const leaves = (nodes: DocSidebarItem[], path: string[] = []): { item: DocSidebarItem; path: string }[] =>\n nodes.flatMap((item) => [\n ...(item.href || !item.children?.length ? [{ item, path: [...path, item.label].join(' / ') }] : []),\n ...leaves(item.children ?? [], [...path, item.label]),\n ]);\n return (\n <List dense disablePadding aria-label={title}>\n {leaves(items).map(({ item, path }, index) => (\n <Tooltip key={item.id} title={path} placement=\"right\" disableInteractive>\n <ListItemButton\n component={item.href ? 'a' : 'button'}\n href={item.href}\n aria-label={item.label}\n aria-current={activeId === item.id ? 'page' : undefined}\n selected={activeId === item.id}\n onClick={(event: React.MouseEvent<HTMLElement>) => {\n if (\n item.href &&\n (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0)\n )\n return;\n if (item.href && onItemClick) event.preventDefault();\n onItemClick?.(item);\n }}\n sx={{\n minHeight: 40,\n width: '100%',\n px: 0.5,\n mb: 0.5,\n borderRadius: 1,\n justifyContent: 'center',\n textDecoration: 'none',\n }}\n >\n <Typography component=\"span\" variant=\"caption\" aria-hidden=\"true\" sx={{ fontWeight: 600 }}>\n {item.shortLabel ?? String(index + 1).padStart(2, '0')}\n </Typography>\n </ListItemButton>\n </Tooltip>\n ))}\n </List>\n );\n };\n return (\n <Box>\n {compact && compactIndex()}\n <Box hidden={compact}>\n {title && (\n <Typography\n variant=\"subtitle2\"\n sx={{\n px: 1.5,\n pt: 0.5,\n pb: 2,\n fontWeight: 700,\n fontSize: '0.8125rem',\n color: 'text.secondary',\n letterSpacing: '0.01em',\n }}\n >\n {title}\n </Typography>\n )}\n <List dense disablePadding>\n {items.map((item) => (\n <SidebarNode key={item.id} item={item} activeId={activeId} onItemClick={onItemClick} depth={0} />\n ))}\n </List>\n </Box>\n </Box>\n );\n}\n\nfunction SidebarNode({\n item,\n activeId,\n onItemClick,\n depth,\n}: {\n item: DocSidebarItem;\n activeId?: string;\n onItemClick?: (item: DocSidebarItem) => void;\n depth: number;\n}) {\n const hasChildren = !!item.children?.length;\n const childrenId = useId();\n const isActive = activeId === item.id;\n const [open, setOpen] = useState(true);\n const isCategory = hasChildren && !item.href;\n\n return (\n <>\n <ListItemButton\n component={item.href ? 'a' : 'button'}\n href={item.href}\n aria-current={isActive ? 'page' : undefined}\n aria-expanded={hasChildren ? open : undefined}\n aria-controls={hasChildren ? childrenId : undefined}\n selected={isActive}\n onClick={(event: React.MouseEvent<HTMLElement>) => {\n // Native links retain copy/open-in-new-tab and modified-click behaviour.\n if (item.href && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0))\n return;\n if (item.href && onItemClick) event.preventDefault();\n if (hasChildren) setOpen(!open);\n onItemClick?.(item);\n }}\n sx={{\n pl: 1.5 + depth * 1.5,\n pr: 1,\n py: isCategory ? 0.75 : 0.5,\n borderRadius: 1,\n mx: 0.5,\n mb: 0.25,\n minHeight: 0,\n alignItems: 'center',\n width: 'calc(100% - 8px)',\n textAlign: 'left',\n textDecoration: 'none',\n ...(isCategory && {\n mt: depth === 0 ? 1 : 0.5,\n }),\n ...(isActive && {\n bgcolor: (theme) => alpha(theme.palette.primary.main, 0.08),\n color: 'primary.main',\n }),\n }}\n >\n {hasChildren && (\n <Box\n component=\"span\"\n aria-hidden=\"true\"\n sx={{\n width: 20,\n height: 20,\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n lineHeight: 1,\n }}\n >\n {open ? <ChevronDownIcon sx={{ fontSize: 18 }} /> : <ChevronRightIcon sx={{ fontSize: 18 }} />}\n </Box>\n )}\n <SidebarLabel\n label={item.label}\n sx={{\n fontWeight: isCategory ? 600 : isActive ? 600 : 400,\n fontSize: '0.8125rem',\n ...(isCategory && { color: 'text.primary' }),\n }}\n />\n </ListItemButton>\n {hasChildren && (\n <Collapse in={open} id={childrenId} unmountOnExit>\n <List dense disablePadding>\n {item.children!.map((child) => (\n <SidebarNode\n key={child.id}\n item={child}\n activeId={activeId}\n onItemClick={onItemClick}\n depth={depth + 1}\n />\n ))}\n </List>\n </Collapse>\n )}\n </>\n );\n}\n\n/**\n * Label cell with industry-standard \"wrap up to N lines, then\n * ellipsis, then tooltip only when actually overflowing\"\n * behaviour.\n *\n * Why this pattern wins:\n * - Short labels render with NO truncation and NO tooltip —\n * hovering them never spawns a tooltip the reader doesn't need.\n * - Mid-length labels wrap to 2 lines and stay fully visible —\n * much better than premature ellipsis.\n * - Only TRULY oversized labels get the ellipsis, and only those\n * spawn a tooltip on hover so the full text is recoverable.\n *\n * Implementation:\n * - CSS `-webkit-line-clamp` is the cross-browser line-clamp\n * standard (still vendor-prefixed in spec but supported by\n * every modern engine).\n * - Overflow detection compares scrollHeight to clientHeight via\n * a ResizeObserver, so the truncation flag updates when the\n * sidebar resizes (mobile drawer width changes, font scaling,\n * etc.). Skipping `useLayoutEffect` during SSR is the\n * `useIsoLayoutEffect` indirection above.\n *\n * The Tooltip is rendered with `disableInteractive` so hover-out\n * is immediate and the tooltip doesn't block the underlying\n * click area.\n */\nfunction SidebarLabel({ label, sx }: { label: string; sx?: object }) {\n const ref = useRef<HTMLSpanElement | null>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useIsoLayoutEffect(() => {\n const el = ref.current;\n if (!el) return undefined;\n const check = () => {\n // +1 px slack for sub-pixel rounding in some engines so we\n // don't flag a perfectly-fitting label as overflowing.\n setIsOverflowing(el.scrollHeight > el.clientHeight + 1);\n };\n check();\n if (typeof ResizeObserver === 'undefined') return undefined;\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [label]);\n\n const text = (\n <Typography\n ref={ref as unknown as React.Ref<HTMLSpanElement>}\n component=\"span\"\n variant=\"body2\"\n sx={{\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: MAX_LABEL_LINES,\n overflow: 'hidden',\n wordBreak: 'break-word',\n lineHeight: 1.35,\n // The flex parent (ListItemButton) needs `minWidth: 0`\n // on the child for the ellipsis to take effect; do it\n // here so the consumer doesn't have to reach in.\n minWidth: 0,\n flex: 1,\n ...sx,\n }}\n >\n {label}\n </Typography>\n );\n\n if (!isOverflowing) return text;\n\n return (\n <Tooltip title={label} placement=\"right\" arrow enterDelay={300} enterNextDelay={150} disableInteractive>\n {text}\n </Tooltip>\n );\n}\n"]}
|
package/dist/cli/index.js
CHANGED
|
@@ -6,8 +6,13 @@ import * as readline from 'readline';
|
|
|
6
6
|
|
|
7
7
|
var __defProp = Object.defineProperty;
|
|
8
8
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
9
|
-
var __esm = (fn, res) => function __init() {
|
|
10
|
-
|
|
9
|
+
var __esm = (fn, res, err) => function __init() {
|
|
10
|
+
if (err) throw err[0];
|
|
11
|
+
try {
|
|
12
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
13
|
+
} catch (e) {
|
|
14
|
+
throw err = [e], e;
|
|
15
|
+
}
|
|
11
16
|
};
|
|
12
17
|
var __export = (target, all) => {
|
|
13
18
|
for (var name in all)
|