@unterberg/nivel 0.2.48 → 0.2.51
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/dist/{chunk-LSRCZKTI.js → chunk-AEZVNXKM.js} +55 -25
- package/dist/chunk-AEZVNXKM.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/mdx.js +3 -1
- package/dist/mdx.js.map +1 -1
- package/dist/renderMermaid.client-J5F5DPEX.js +29 -0
- package/dist/renderMermaid.client-J5F5DPEX.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-LSRCZKTI.js.map +0 -1
|
@@ -271,8 +271,7 @@ var FileRemoved = ({ children }) => {
|
|
|
271
271
|
import { cmMerge as cmMerge2 } from "@classmatejs/react";
|
|
272
272
|
import { useEffect as useEffect2, useId as useId2, useState as useState3 } from "react";
|
|
273
273
|
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
274
|
-
var
|
|
275
|
-
var mermaidModulePromise = null;
|
|
274
|
+
var mermaidClientModulePromise = null;
|
|
276
275
|
var MERMAID_SVG_CLASS_NAME = "nivel-mermaid-svg";
|
|
277
276
|
var MERMAID_ROOT_CLASS_NAME = "nivel-mermaid";
|
|
278
277
|
var getMermaidSvgOverrideCss = (diagramId) => `
|
|
@@ -330,22 +329,12 @@ var getMermaidSvgOverrideCss = (diagramId) => `
|
|
|
330
329
|
stroke-width: var(--nivel-mermaid-cluster-stroke-width, 1px);
|
|
331
330
|
}
|
|
332
331
|
`;
|
|
333
|
-
var
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
};
|
|
337
|
-
var ensureMermaidInitialized = async () => {
|
|
338
|
-
const mermaid = await loadMermaid();
|
|
339
|
-
if (isMermaidInitialized) {
|
|
340
|
-
return mermaid;
|
|
332
|
+
var loadMermaidClient = async () => {
|
|
333
|
+
if (import.meta.env.SSR) {
|
|
334
|
+
throw new Error("Mermaid diagrams can only be rendered in the browser.");
|
|
341
335
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
suppressErrorRendering: true,
|
|
345
|
-
theme: "base"
|
|
346
|
-
});
|
|
347
|
-
isMermaidInitialized = true;
|
|
348
|
-
return mermaid;
|
|
336
|
+
mermaidClientModulePromise ??= import("./renderMermaid.client-J5F5DPEX.js");
|
|
337
|
+
return mermaidClientModulePromise;
|
|
349
338
|
};
|
|
350
339
|
var decorateSvg = (svg, diagramId) => {
|
|
351
340
|
const svgWithClassName = svg.replace(/<svg\b([^>]*?)>/, (match, attributes) => {
|
|
@@ -369,8 +358,8 @@ var MermaidDiagram = ({ className, source }) => {
|
|
|
369
358
|
let isActive = true;
|
|
370
359
|
const renderDiagram = async () => {
|
|
371
360
|
try {
|
|
372
|
-
const
|
|
373
|
-
const
|
|
361
|
+
const { renderMermaidSvg } = await loadMermaidClient();
|
|
362
|
+
const renderedSvg = await renderMermaidSvg(`nivel-mermaid-${diagramId}`, source);
|
|
374
363
|
if (!isActive) {
|
|
375
364
|
return;
|
|
376
365
|
}
|
|
@@ -824,21 +813,61 @@ var RepoLink = ({ repo, timestamp }) => {
|
|
|
824
813
|
};
|
|
825
814
|
|
|
826
815
|
// src/mdx/components/Table.tsx
|
|
827
|
-
import cm4 from "@classmatejs/react";
|
|
816
|
+
import cm4, { cmMerge as cmMerge6 } from "@classmatejs/react";
|
|
828
817
|
import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
829
818
|
var Table = ({ size = "md", data }) => {
|
|
830
|
-
return /* @__PURE__ */ jsx12(
|
|
819
|
+
return /* @__PURE__ */ jsx12(TableScrollContainer, { children: /* @__PURE__ */ jsxs9(StyledTable, { $size: size, children: [
|
|
831
820
|
/* @__PURE__ */ jsx12("thead", { className: "overflow-hidden rounded-t-box bg-base-200", children: /* @__PURE__ */ jsx12("tr", { children: data.headers.map((header, index) => /* @__PURE__ */ jsx12("th", { children: header }, index)) }) }),
|
|
832
821
|
/* @__PURE__ */ jsx12("tbody", { children: data.rows.map((row, rowIndex) => /* @__PURE__ */ jsx12("tr", { children: row.map((cell, cellIndex) => /* @__PURE__ */ jsx12("td", { children: cell }, cellIndex)) }, rowIndex)) })
|
|
833
822
|
] }) });
|
|
834
823
|
};
|
|
824
|
+
var MdxTable = ({ className, ...props }) => {
|
|
825
|
+
return /* @__PURE__ */ jsx12(TableScrollContainer, { children: /* @__PURE__ */ jsx12(
|
|
826
|
+
"table",
|
|
827
|
+
{
|
|
828
|
+
className: cmMerge6(
|
|
829
|
+
`
|
|
830
|
+
table
|
|
831
|
+
w-full
|
|
832
|
+
min-w-[48rem]
|
|
833
|
+
text-sm
|
|
834
|
+
[&_code]:whitespace-nowrap
|
|
835
|
+
[&_td]:align-top
|
|
836
|
+
[&_td]:bg-base-200
|
|
837
|
+
[&_td]:p-3
|
|
838
|
+
[&_td]:[overflow-wrap:normal]
|
|
839
|
+
[&_td]:[word-break:normal]
|
|
840
|
+
[&_th]:align-top
|
|
841
|
+
[&_th]:bg-base-muted-superlight
|
|
842
|
+
[&_th]:font-semibold
|
|
843
|
+
[&_th]:p-3
|
|
844
|
+
[&_th]:[overflow-wrap:normal]
|
|
845
|
+
[&_th]:[word-break:normal]
|
|
846
|
+
[&_thead]:border-base-muted-light
|
|
847
|
+
[&_tr]:border-base-muted-light
|
|
848
|
+
`,
|
|
849
|
+
className
|
|
850
|
+
),
|
|
851
|
+
...props
|
|
852
|
+
}
|
|
853
|
+
) });
|
|
854
|
+
};
|
|
855
|
+
var TableScrollContainer = cm4.div`
|
|
856
|
+
not-prose
|
|
857
|
+
my-8
|
|
858
|
+
max-w-full overflow-x-auto
|
|
859
|
+
rounded-box shadow
|
|
860
|
+
`;
|
|
835
861
|
var StyledTable = cm4.table.variants({
|
|
836
862
|
base: `
|
|
837
|
-
not-prose
|
|
838
863
|
table
|
|
839
864
|
w-full
|
|
865
|
+
min-w-[48rem]
|
|
840
866
|
table-zebra
|
|
841
|
-
|
|
867
|
+
[&_td]:[overflow-wrap:normal]
|
|
868
|
+
[&_td]:[word-break:normal]
|
|
869
|
+
[&_th]:[overflow-wrap:normal]
|
|
870
|
+
[&_th]:[word-break:normal]
|
|
842
871
|
`,
|
|
843
872
|
variants: {
|
|
844
873
|
$size: {
|
|
@@ -863,6 +892,7 @@ export {
|
|
|
863
892
|
Link,
|
|
864
893
|
Overview,
|
|
865
894
|
RepoLink,
|
|
866
|
-
Table
|
|
895
|
+
Table,
|
|
896
|
+
MdxTable
|
|
867
897
|
};
|
|
868
|
-
//# sourceMappingURL=chunk-
|
|
898
|
+
//# sourceMappingURL=chunk-AEZVNXKM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mdx/code-blocks/ChoiceGroup.tsx","../src/mdx/code-blocks/CodeBlockHeaderMeta.tsx","../src/mdx/code-blocks/CopyButton.tsx","../src/mdx/code-blocks/context.tsx","../src/mdx/code-blocks/useSelectedChoice.ts","../src/mdx/code-blocks/CodeBlockTransformer.tsx","../src/mdx/code-blocks/FileState.tsx","../src/mdx/code-blocks/MermaidDiagram.tsx","../src/mdx/code-blocks/Pre.tsx","../src/mdx/components/Alert.tsx","../src/mdx/components/Link.tsx","../src/mdx/components/Overview.tsx","../src/mdx/components/RepoLink.tsx","../src/mdx/components/Table.tsx"],"sourcesContent":["export { ChoiceGroup }\n\nimport { Children, isValidElement, type ReactElement, type ReactNode, useId, useRef } from 'react'\nimport { dispatchNivelAction } from '../../shared/nivelActionEvents.js'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { CodeBlockGroupProvider } from './context.js'\nimport { useSelectedChoice } from './useSelectedChoice.js'\n\ntype ChoiceGroupDescriptor = {\n default: string\n disabled: string[]\n name: string\n choices: string[]\n}\n\ntype ChoiceElementProps = {\n children?: ReactNode\n 'data-choice-value'?: string\n}\n\nconst isChoiceElement = (node: ReactNode): node is ReactElement<ChoiceElementProps> => {\n return isValidElement<ChoiceElementProps>(node) && typeof node.props?.['data-choice-value'] === 'string'\n}\n\nconst asTrimmedString = (value: unknown) => {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nconst getActiveCodeBlockMeta = (node: ReactNode): { env: string | null; hideCopy: boolean; title: string | null } => {\n for (const child of Children.toArray(node)) {\n if (!isValidElement(child)) {\n continue\n }\n\n const props = child.props as {\n children?: ReactNode\n 'data-code-env'?: string\n 'data-code-title'?: string\n 'hide-menu'?: string\n }\n const env = asTrimmedString(props['data-code-env'])\n const title = asTrimmedString(props['data-code-title'])\n const hideCopy = props['hide-menu'] === 'true'\n\n if (title || env || hideCopy) {\n return { env, hideCopy, title }\n }\n\n const nestedMeta = getActiveCodeBlockMeta(props.children)\n if (nestedMeta.title || nestedMeta.env || nestedMeta.hideCopy) {\n return nestedMeta\n }\n }\n\n return { env: null, hideCopy: false, title: null }\n}\n\nconst ChoiceGroup = ({\n children,\n choiceGroup,\n hide = false,\n}: {\n children: ReactNode\n choiceGroup: ChoiceGroupDescriptor\n hide?: boolean\n lvl?: number\n}) => {\n const [selectedChoice, setSelectedChoice] = useSelectedChoice(choiceGroup.name, choiceGroup.default)\n const bodyRef = useRef<HTMLDivElement>(null)\n const selectId = useId()\n const labelId = `${selectId}-label`\n // const previousPositionRef = useRestoreScroll([selectedChoice])\n const choiceElements = Children.toArray(children).filter(isChoiceElement)\n const activeChoiceElement =\n choiceElements.find((choiceElement) => choiceElement.props['data-choice-value'] === selectedChoice) ??\n choiceElements[0]\n\n if (!activeChoiceElement) {\n return <>{children}</>\n }\n\n const activeCodeBlockMeta = getActiveCodeBlockMeta(activeChoiceElement.props.children)\n const headerLabel = activeCodeBlockMeta.title ?? activeChoiceElement.props['data-choice-value'] ?? ''\n\n if (hide) {\n return <>{activeChoiceElement.props.children}</>\n }\n\n return (\n <div\n data-choice-group-outer\n data-nivel-component=\"code-choice-group\"\n className=\"my-6 flex h-full min-w-0 max-w-full flex-col overflow-hidden rounded-box border border-base-muted-light\"\n >\n <div\n className=\"not-prose flex min-h-10 items-center relative justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight px-4\"\n data-choice-group-header\n >\n <CodeBlockHeaderMeta label={headerLabel} env={activeCodeBlockMeta.env} />\n <div className=\"flex items-center gap-1\">\n <label className=\"select select-xs min-w-28 w-fit\" htmlFor={selectId}>\n <span id={labelId} className=\"sr-only\">\n Choose code example variant\n </span>\n <select\n id={selectId}\n aria-labelledby={labelId}\n name={`choicesFor-${choiceGroup.name}`}\n data-nivel-action=\"code.choice_change\"\n value={activeChoiceElement.props['data-choice-value']}\n onChange={(event) => {\n const choice = event.currentTarget.value\n setSelectedChoice(choice)\n dispatchNivelAction(event.currentTarget, {\n action: 'code.choice_change',\n choice,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n })\n }}\n >\n {choiceGroup.choices.map((choice) => (\n <option key={choice} value={choice} disabled={choiceGroup.disabled.includes(choice)}>\n {choice}\n </option>\n ))}\n </select>\n </label>\n {!activeCodeBlockMeta.hideCopy && (\n <CodeBlockCopyButton\n actionDetail={{\n action: 'code.copy',\n choice: activeChoiceElement.props['data-choice-value'] ?? null,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n env: activeCodeBlockMeta.env,\n label: headerLabel,\n }}\n onCopy={async () => {\n const text = trimTrailingWhitespace(bodyRef.current?.textContent ?? '')\n\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }}\n />\n )}\n </div>\n </div>\n <div\n ref={bodyRef}\n className=\"h-full min-w-0 max-w-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\"\n >\n <CodeBlockGroupProvider value={true}>{activeChoiceElement.props.children}</CodeBlockGroupProvider>\n </div>\n </div>\n )\n}\n","import cm from '@classmatejs/react'\n\nexport { CodeBlockHeaderMeta }\n\nconst CodeBlockHeaderMeta = ({ env, label }: { env?: string | null; label: string }) => {\n const effectiveEnv = env === 'server' || env === 'client' ? env : undefined\n\n return (\n <div className=\"flex min-w-0 items-center gap-2\">\n {env && <StyledDivider $env={env === 'server' || env === 'client' ? env : undefined} />}\n {env && <StyledBgShade $env={env === 'server' || env === 'client' ? env : undefined} />}\n {env && <StyledBadge $env={effectiveEnv}>{env}</StyledBadge>}\n <div className=\"font-mono text-xs font-semibold text-base-muted\">{label}</div>\n </div>\n )\n}\n\nconst StyledDivider = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'absolute h-1 -bottom-px left-0 w-full pointer-events-none',\n variants: {\n $env: {\n server: 'border-info/50 border-b ',\n client: 'border-success/50 border-b',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n\nconst StyledBadge = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'shrink-0 badge badge-sm rounded-field badge-soft border pointer-events-none',\n variants: {\n $env: {\n server: 'badge-info border-info',\n client: 'badge-success border-success',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n\nconst StyledBgShade = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'absolute inset-0 opacity-5 bg-linear-to-t via-40% via-transparent pointer-events-none',\n variants: {\n $env: {\n server: 'from-info',\n client: 'from-success',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n","export { CodeBlockCopyButton, trimTrailingWhitespace }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { Check, Copy } from 'lucide-react'\nimport { useState } from 'react'\nimport { dispatchNivelAction, type NivelActionEventDetail } from '../../shared/nivelActionEvents.js'\n\nconst trimTrailingWhitespace = (text: string) => {\n return text\n .split('\\n')\n .map((line) => line.trimEnd())\n .join('\\n')\n}\n\nconst CodeBlockCopyButton = ({\n actionDetail,\n onCopy,\n className = '',\n}: {\n actionDetail?: Omit<NivelActionEventDetail, 'success'>\n onCopy: () => Promise<boolean> | boolean\n className?: string\n}) => {\n const [copyState, setCopyState] = useState<'idle' | 'success' | 'error'>('idle')\n\n return (\n <button\n type=\"button\"\n className={cmMerge('btn btn-ghost btn-xs h-8 min-h-8 px-2 text-base-muted hover:text-base-content', className)}\n data-nivel-action={actionDetail?.action}\n onClick={async (event) => {\n const button = event.currentTarget\n const success = await onCopy()\n if (actionDetail) {\n dispatchNivelAction(button, {\n ...actionDetail,\n success,\n })\n }\n setCopyState(success ? 'success' : 'error')\n window.setTimeout(() => setCopyState('idle'), 900)\n }}\n aria-label={copyState === 'idle' ? 'Copy to clipboard' : copyState === 'success' ? 'Copied' : 'Copy failed'}\n >\n {copyState === 'success' ? <Check size={14} /> : <Copy size={14} />}\n </button>\n )\n}\n","import { createContext, useContext } from 'react'\n\nconst CodeBlockGroupContext = createContext(false)\n\nexport const CodeBlockGroupProvider = CodeBlockGroupContext.Provider\n\nexport const useIsInCodeBlockGroup = () => useContext(CodeBlockGroupContext)\n","import { useEffect, useState, useSyncExternalStore } from 'react'\nimport { useUniversalMdxRuntime } from '../components/UniversalMdxProvider.js'\n\nconst subscribeNoop = () => () => {}\nconst getServerSnapshot = () => null\n\nexport const useSelectedChoice = (choiceGroupName: string, defaultValue: string) => {\n const runtime = useUniversalMdxRuntime()\n const choiceStore = runtime?.codeBlockChoices\n const storedChoice = useSyncExternalStore(\n choiceStore?.subscribe ?? subscribeNoop,\n () => choiceStore?.getChoice(choiceGroupName) ?? null,\n getServerSnapshot,\n )\n const [localChoice, setLocalChoice] = useState(defaultValue)\n\n useEffect(() => {\n if (!choiceStore || storedChoice) {\n return\n }\n\n const legacyChoice = choiceStore.getLegacyChoice?.(choiceGroupName)\n if (legacyChoice) {\n choiceStore.setChoice(choiceGroupName, legacyChoice)\n }\n }, [choiceGroupName, choiceStore, storedChoice])\n\n if (choiceStore) {\n return [storedChoice ?? defaultValue, (value: string) => choiceStore.setChoice(choiceGroupName, value)] as const\n }\n\n return [localChoice, setLocalChoice] as const\n}\n","export { CodeBlockTransformer }\nexport type { LineBreak }\n\nimport type { ReactNode } from 'react'\n\ntype LineBreak = 'white-space' | 'break-word'\n\nconst CodeBlockTransformer = ({ children, lineBreak }: { children: ReactNode; lineBreak: LineBreak }) => {\n const className = `with-line-break_${lineBreak}` as const\n return <div className={className}>{children}</div>\n}\n","export { FileAdded, FileRemoved }\n\nimport type { ReactNode } from 'react'\n\nconst FileAdded = ({ children }: { children: ReactNode }) => {\n return <div className=\"doc-code-file-state doc-code-file-added\">{children}</div>\n}\n\nconst FileRemoved = ({ children }: { children: ReactNode }) => {\n return <div className=\"doc-code-file-state doc-code-file-removed\">{children}</div>\n}\n","export { MermaidDiagram }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { useEffect, useId, useState } from 'react'\n\ntype ViteImportMeta = ImportMeta & { env: { SSR?: boolean } }\ntype MermaidClientModule = typeof import('./renderMermaid.client.js')\n\nlet mermaidClientModulePromise: Promise<MermaidClientModule> | null = null\nconst MERMAID_SVG_CLASS_NAME = 'nivel-mermaid-svg'\nconst MERMAID_ROOT_CLASS_NAME = 'nivel-mermaid'\n\nconst getMermaidSvgOverrideCss = (diagramId: string) => `\n#${diagramId}.${MERMAID_SVG_CLASS_NAME} {\n font-family: var(--font-sans);\n}\n\n#${diagramId} .node rect,\n#${diagramId} .node circle,\n#${diagramId} .node ellipse,\n#${diagramId} .node polygon,\n#${diagramId} .node path {\n fill: var(--nivel-mermaid-node-fill, var(--color-primary-muted-superlight));\n stroke: var(--nivel-mermaid-node-stroke, var(--color-primary-muted-medium));\n stroke-width: var(--nivel-mermaid-node-stroke-width, 1px);\n}\n\n#${diagramId} .node .label,\n#${diagramId} .node .label text,\n#${diagramId} .nodeLabel,\n#${diagramId} .nodeLabel *,\n#${diagramId} .cluster-label text,\n#${diagramId} .label text {\n background-color: transparent;\n fill: transparent;\n color: var(--nivel-mermaid-node-text, var(--color-base-content));\n}\n\n#${diagramId} .edgeLabel,\n#${diagramId} .edgeLabel *,\n#${diagramId} .edgeLabel span,\n#${diagramId} .edgeLabel p {\n background-color: var(--nivel-mermaid-edge-label-fill, var(--color-base-100));\n color: var(--nivel-mermaid-edge-label-text, var(--nivel-mermaid-node-text, var(--color-base-content)));\n}\n\n#${diagramId} .edgePath .path,\n#${diagramId} .flowchart-link,\n#${diagramId} .relationshipLine,\n#${diagramId} .messageLine0,\n#${diagramId} .messageLine1 {\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke-width: var(--nivel-mermaid-line-width, 1.5px);\n}\n\n#${diagramId} marker path,\n#${diagramId} .marker {\n fill: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n}\n\n#${diagramId} .cluster rect {\n fill: var(--nivel-mermaid-cluster-fill, var(--color-base-100));\n stroke: var(--nivel-mermaid-cluster-stroke, var(--color-primary-muted-light));\n stroke-width: var(--nivel-mermaid-cluster-stroke-width, 1px);\n}\n`\n\nconst loadMermaidClient = async () => {\n if ((import.meta as ViteImportMeta).env.SSR) {\n throw new Error('Mermaid diagrams can only be rendered in the browser.')\n }\n\n mermaidClientModulePromise ??= import('./renderMermaid.client.js')\n return mermaidClientModulePromise\n}\n\nconst decorateSvg = (svg: string, diagramId: string) => {\n const svgWithClassName = svg.replace(/<svg\\b([^>]*?)>/, (match, attributes: string) => {\n const classMatch = attributes.match(/\\sclass=\"([^\"]*)\"/)\n if (classMatch) {\n const mergedClassNames = `${classMatch[1]} ${MERMAID_SVG_CLASS_NAME}`.trim()\n return `<svg${attributes.replace(/\\sclass=\"([^\"]*)\"/, ` class=\"${mergedClassNames}\"`)} data-mermaid-graphic=\"\">`\n }\n\n return `<svg${attributes} class=\"${MERMAID_SVG_CLASS_NAME}\" data-mermaid-graphic=\"\">`\n })\n\n return svgWithClassName.replace('</svg>', `<style>${getMermaidSvgOverrideCss(diagramId)}</style></svg>`)\n}\n\nconst MermaidSource = ({ source }: { source: string }) => {\n return (\n <pre className=\"sr-only\" data-mermaid-source=\"\">\n <code>{source}</code>\n </pre>\n )\n}\n\nconst MermaidDiagram = ({ className, source }: { className?: string; source: string }) => {\n const [svg, setSvg] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const diagramId = useId()\n\n useEffect(() => {\n let isActive = true\n\n const renderDiagram = async () => {\n try {\n const { renderMermaidSvg } = await loadMermaidClient()\n const renderedSvg = await renderMermaidSvg(`nivel-mermaid-${diagramId}`, source)\n\n if (!isActive) {\n return\n }\n\n setSvg(decorateSvg(renderedSvg, `nivel-mermaid-${diagramId}`))\n setError(null)\n } catch (renderError) {\n if (!isActive) {\n return\n }\n\n const message = renderError instanceof Error ? renderError.message : 'Failed to render Mermaid diagram.'\n setError(message)\n setSvg(null)\n }\n }\n\n void renderDiagram()\n\n return () => {\n isActive = false\n }\n }, [diagramId, source])\n\n if (error) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"error\"\n >\n <div className=\"rounded-box border border-error/30 bg-error/8 px-4 py-3 text-sm text-error\">{error}</div>\n <pre className=\"doc-code-pre m-0 overflow-x-auto bg-base-200! p-4 text-sm\">\n <code>{source}</code>\n </pre>\n </div>\n )\n }\n\n if (!svg) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"loading\"\n >\n <div className=\"px-4 py-10 text-center text-sm flex gap-2 items-center justify-center\">\n <span className=\"loading loading-spinner loading-md\"></span>\n Rendering diagram...\n </div>\n <MermaidSource source={source} />\n </div>\n )\n }\n\n return (\n <div\n className={cmMerge(\n MERMAID_ROOT_CLASS_NAME,\n 'overflow-x-auto bg-base-200 px-3 py-4 [&_svg]:mx-auto [&_svg]:h-auto [&_svg]:max-w-full',\n className,\n )}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"ready\"\n >\n <div dangerouslySetInnerHTML={{ __html: svg }} />\n <MermaidSource source={source} />\n </div>\n )\n}\n","export { Pre }\n\nimport { cmMerge } from '@classmatejs/react'\nimport {\n Children,\n type ComponentPropsWithoutRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useRef,\n} from 'react'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { MermaidDiagram } from './MermaidDiagram.js'\nimport { useIsInCodeBlockGroup } from './context.js'\n\ntype PreProps = ComponentPropsWithoutRef<'pre'> & {\n 'data-code-env'?: string\n 'data-code-title'?: string\n 'data-language'?: string\n 'data-language-label'?: string\n 'file-added'?: string\n 'file-removed'?: string\n 'hide-menu'?: string\n render?: string\n}\n\nconst asTrimmedString = (value: unknown) => {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nconst getLanguageFromChildren = (children: ReactNode) => {\n const firstChild = Children.toArray(children)[0]\n if (!isValidElement(firstChild)) {\n return null\n }\n\n const props = (firstChild as ReactElement<{ className?: string; 'data-language'?: string }>).props\n const explicitLanguage = asTrimmedString(props['data-language'])\n if (explicitLanguage) {\n return explicitLanguage\n }\n\n const classNames = typeof props.className === 'string' ? props.className.split(/\\s+/) : []\n const languageClassName = classNames.find((className) => className.startsWith('language-'))\n return languageClassName ? languageClassName.slice('language-'.length) : null\n}\n\nconst getLanguageLabel = (props: PreProps) => {\n const explicitLabel = asTrimmedString(props['data-language-label'])\n if (explicitLabel) {\n return explicitLabel\n }\n\n const explicitLanguage = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(props.children)\n return explicitLanguage ? explicitLanguage.toUpperCase() : 'CODE'\n}\n\nconst getNodeText = (node: ReactNode): string => {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node)\n }\n\n if (Array.isArray(node)) {\n return node.map((child) => getNodeText(child)).join('')\n }\n\n if (!isValidElement(node)) {\n return ''\n }\n\n return getNodeText((node as ReactElement<{ children?: ReactNode }>).props.children)\n}\n\nconst Pre = ({ children, className, ...props }: PreProps) => {\n const preRef = useRef<HTMLPreElement>(null)\n const isInChoiceGroup = useIsInCodeBlockGroup()\n const language = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(children)\n const label =\n asTrimmedString(props['data-code-title']) ??\n getLanguageLabel({ ...props, children, 'data-language': language ?? undefined })\n const env = asTrimmedString(props['data-code-env'])\n const fileState = props['file-added'] ? 'added' : props['file-removed'] ? 'removed' : null\n const hideMenu = props['hide-menu'] === 'true'\n const shouldRenderMermaid = language === 'mermaid' && props.render === 'true'\n const sourceText = trimTrailingWhitespace(getNodeText(children))\n\n const copyButton =\n hideMenu || isInChoiceGroup ? null : (\n <CodeBlockCopyButton\n actionDetail={{\n action: 'code.copy',\n component: 'code-block',\n env,\n label,\n language,\n }}\n onCopy={async () => {\n const text = shouldRenderMermaid ? sourceText : trimTrailingWhitespace(preRef.current?.textContent ?? '')\n\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }}\n />\n )\n\n return (\n <div\n className={cmMerge(\n 'group relative h-full min-w-0 max-w-full not-prose overflow-hidden',\n isInChoiceGroup ? '' : 'rounded-box border border-base-muted-light',\n className,\n )}\n data-code-block-frame=\"\"\n data-file-state={fileState ?? undefined}\n data-nivel-component=\"code-block\"\n >\n {!isInChoiceGroup && (\n <div\n className=\"flex min-h-10 relative items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight! px-4\"\n data-code-block-header=\"\"\n >\n <CodeBlockHeaderMeta label={label} env={env} />\n {copyButton}\n </div>\n )}\n {shouldRenderMermaid ? (\n <MermaidDiagram className=\"min-w-0\" source={sourceText} />\n ) : (\n <pre\n {...props}\n ref={preRef}\n className={cmMerge(\n 'doc-code-pre m-0 h-full min-w-0 max-w-full overflow-x-auto bg-base-200! p-4 text-sm',\n className,\n )}\n data-code-block-content=\"\"\n >\n {children}\n </pre>\n )}\n </div>\n )\n}\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { Check, CircleX, Info, TriangleAlert } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\nexport type AlertVariant = 'info' | 'warning' | 'error' | 'success'\n\nconst alertIconMap = {\n info: Info,\n warning: TriangleAlert,\n error: CircleX,\n success: Check,\n}\n\nexport const Alert = ({\n type = 'info',\n heading,\n children,\n icon = true,\n}: {\n type?: AlertVariant\n heading?: ReactNode\n children: ReactNode\n icon?: boolean | ReactNode\n}) => {\n const AlertIcon = icon === true ? alertIconMap[type] : typeof icon === 'object' ? () => <>{icon}</> : null\n\n const alertIconTextColorClass = {\n info: 'text-info',\n warning: 'text-warning',\n error: 'text-error',\n success: 'text-success',\n }[type]\n\n return (\n <AlertOuter $variant={type}>\n {!!heading && AlertIcon && (\n <div className=\"mb-3 flex items-center gap-2\">\n <AlertIcon className={cmMerge(alertIconTextColorClass, 'float-left h-5 w-5')} />\n <AlertHeading>{heading}</AlertHeading>\n </div>\n )}\n {!(!!heading && AlertIcon) && !!heading && <AlertHeading>{heading}</AlertHeading>}\n {!(!!heading && AlertIcon) && AlertIcon && (\n <div className={cmMerge(alertIconTextColorClass, 'float-left mr-2')}>\n <AlertIcon className=\"mt-1 h-5 w-5\" />\n </div>\n )}\n {children}\n </AlertOuter>\n )\n}\n\nconst AlertOuter = cm.section.variants<{ $variant: AlertVariant }>({\n base: `\n p-4\n my-6\n border\n rounded-lg\n prose-p:last:mb-0\n prose-p:mt-0\n prose-headings:first:mt-0\n prose-headings:last:mb-0\n prose-ul:first:mt-0\n prose-ul:last:mb-0\n text-sm\n `,\n variants: {\n $variant: {\n info: 'bg-info/10 border-info/30',\n warning: 'bg-warning/10 border-warning/30',\n error: 'bg-error/10 border-error/25',\n success: 'bg-success/10 border-success/35',\n },\n },\n defaultVariants: {\n $variant: 'info',\n },\n})\n\nconst AlertHeading = cm.header`\n font-bold\n text-base\n`\n","import { cmMerge } from '@classmatejs/react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport { isExternalHref } from '../../docs/runtime.js'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport { useUniversalMdxRuntime } from './UniversalMdxProvider.js'\n\nexport type LinkProps = ComponentPropsWithoutRef<'a'> & {\n href?: string\n text?: string | ReactNode\n noBreadcrumb?: boolean\n doNotInferSectionTitle?: boolean\n noWarning?: boolean\n}\n\nfunction assertUsage(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`)\n }\n}\n\nconst assertWarning = (condition: unknown, message: string) => {\n const isDev = (import.meta as ImportMeta & { env?: { DEV?: boolean } }).env?.DEV === true\n\n if (condition || !isDev) {\n return\n }\n\n console.warn(`[UniversalMdxMods][Warning] ${message}`)\n}\n\nconst parseMarkdownMini = (markdown: string) => {\n type Part = { content: string; nodeType: 'code' | 'text' }\n const parts: Part[] = []\n let current: Part | undefined\n\n for (const letter of markdown.split('')) {\n if (letter === '`') {\n if (current?.nodeType === 'code') {\n parts.push(current)\n current = undefined\n } else {\n if (current) {\n parts.push(current)\n }\n current = { nodeType: 'code', content: '' }\n }\n continue\n }\n\n current ??= { nodeType: 'text', content: '' }\n current.content += letter\n }\n\n if (current) {\n parts.push(current)\n }\n\n return (\n <>\n {parts.map((part, index) =>\n part.nodeType === 'code' ? <code key={index}>{part.content}</code> : <span key={index}>{part.content}</span>,\n )}\n </>\n )\n}\n\nconst determineSectionTitle = (href: string) => {\n const hash = href.split('#')[1]\n\n if (!hash) {\n return null\n }\n\n return hash\n .split(':~:text')[0]\n ?.split('-')\n .map((word, index) => (index === 0 ? `${word[0]?.toUpperCase() ?? ''}${word.slice(1)}` : word))\n .join(' ')\n}\n\nconst isDocsRelativeHref = (href: string) => {\n return (\n !href.startsWith('/') &&\n !href.startsWith('#') &&\n !isExternalHref(href) &&\n !href.startsWith('./') &&\n !href.startsWith('../')\n )\n}\n\nconst renderLabelPart = (value: ReactNode) => {\n return typeof value === 'string' ? parseMarkdownMini(value) : value\n}\n\nconst getLinkText = ({\n isCurrentPage,\n breadcrumb,\n noBreadcrumb,\n sectionTitle,\n title,\n}: {\n isCurrentPage?: boolean\n breadcrumb?: ReactNode[]\n noBreadcrumb?: boolean\n sectionTitle?: ReactNode\n title?: ReactNode\n}) => {\n const breadcrumbParts: ReactNode[] = []\n\n if (breadcrumb) {\n breadcrumbParts.push(...breadcrumb.map((item) => renderLabelPart(item)))\n }\n\n if (title) {\n breadcrumbParts.push(renderLabelPart(title))\n }\n\n if (sectionTitle) {\n breadcrumbParts.push(renderLabelPart(sectionTitle))\n }\n\n if (noBreadcrumb || isCurrentPage) {\n return breadcrumbParts[breadcrumbParts.length - 1] ?? null\n }\n\n return (\n <>\n {breadcrumbParts.map((part, index) => (\n <span key={index}>\n {index > 0 ? ' > ' : null}\n {part}\n </span>\n ))}\n </>\n )\n}\n\nexport const Link = ({\n href,\n text,\n noBreadcrumb,\n doNotInferSectionTitle,\n noWarning,\n children,\n className,\n ...props\n}: LinkProps) => {\n const runtime = useUniversalMdxRuntime()\n\n if (typeof href !== 'string' || href === '') {\n assertWarning(false, '<Link /> is missing `href`.')\n\n return (\n <a className={cmMerge(className, 'inline-flex gap-1 items-center')} {...props}>\n {text ?? children ?? 'LINK-TARGET-NOT-FOUND'}\n </a>\n )\n }\n\n assertUsage(\n href.startsWith('/') || href.startsWith('#') || isExternalHref(href) || isDocsRelativeHref(href),\n `<Link href /> prop \\`href==='${href}'\\` but should be external, docs-relative, or start with '/' or '#'`,\n )\n assertUsage(!text || !children, 'Cannot use both `text` or `children`')\n\n const content = text ?? children\n const resolvedDocLink = runtime?.resolveDocLink?.({\n href,\n doNotInferSectionTitle,\n noWarning,\n })\n const localizedHref = resolvedDocLink?.href ?? runtime?.localizeHref?.(href) ?? withSiteBaseUrl(href)\n const inferredSectionTitle =\n resolvedDocLink?.sectionTitle ?? (!doNotInferSectionTitle ? determineSectionTitle(href) : null)\n const inferredText =\n content ??\n (resolvedDocLink\n ? getLinkText({\n breadcrumb: resolvedDocLink.breadcrumb,\n isCurrentPage: resolvedDocLink.isCurrentPage,\n noBreadcrumb,\n sectionTitle: inferredSectionTitle ?? undefined,\n title: resolvedDocLink.title,\n })\n : isExternalHref(href)\n ? href\n : (inferredSectionTitle ?? 'LINK-TARGET-NOT-FOUND'))\n\n return (\n <a href={localizedHref} className={cmMerge(className, '')} {...props}>\n {inferredText}\n </a>\n )\n}\n","import cm from '@classmatejs/react'\nimport type { ReactNode } from 'react'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../shared/renderInlineMarkdown.js'\nimport type { UniversalResolvedOverviewItem } from './types.js'\nimport { useUniversalMdxRuntime } from './UniversalMdxProvider.js'\n\ntype OverviewLinkItem = {\n title: ReactNode\n href: string\n excerpt?: ReactNode | null\n}\n\ntype OverviewDividerItem = {\n dividerText: ReactNode\n}\n\nexport type OverviewItem = OverviewLinkItem | OverviewDividerItem\n\ninterface OverviewProps {\n items: Array<string | OverviewItem>\n}\n\nconst isOverviewDividerItem = (item: string | OverviewItem): item is OverviewDividerItem =>\n typeof item === 'object' && item !== null && 'dividerText' in item\n\nfunction assertUsage(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`)\n }\n}\n\nconst groupOverviewItems = (items: OverviewItem[]) => {\n const groups: { dividerText?: ReactNode; items: OverviewLinkItem[] }[] = []\n let currentGroup: { dividerText?: ReactNode; items: OverviewLinkItem[] } = {\n items: [],\n }\n\n const commitCurrentGroup = () => {\n if (currentGroup.items.length > 0) {\n groups.push(currentGroup)\n }\n }\n\n for (const item of items) {\n if (isOverviewDividerItem(item)) {\n commitCurrentGroup()\n currentGroup = {\n dividerText: item.dividerText,\n items: [],\n }\n continue\n }\n\n currentGroup.items.push(item)\n }\n\n commitCurrentGroup()\n\n return groups\n}\n\nconst OverviewCard = ({ href, title }: OverviewLinkItem) => {\n return (\n <StyleOverviewCard href={withSiteBaseUrl(href)}>\n <span className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(title)}</span>\n </StyleOverviewCard>\n )\n}\n\nconst StyleOverviewCard = cm.a`\n flex h-full flex-col gap-3 \n rounded-box border \n border-base-muted-light hover:border-primary-muted\n hover:bg-primary-muted-superlight \n no-underline transition-colors \n shadow shadow-transparent hover:shadow-primary-muted-light\n p-5\n `\n\nconst normalizeOverviewItems = (\n items: Array<string | OverviewItem>,\n resolveOverviewItem?: (key: string) => UniversalResolvedOverviewItem | null,\n): OverviewItem[] => {\n return items.map((item) => {\n if (typeof item !== 'string') {\n return item\n }\n\n const resolvedItem = resolveOverviewItem?.(item)\n\n assertUsage(\n resolvedItem,\n `Overview item \"${item}\" requires runtime.resolveOverviewItem(). Pass { title, href, excerpt } manually when no resolver is available.`,\n )\n\n return resolvedItem\n })\n}\n\nexport const Overview = ({ items }: OverviewProps) => {\n const runtime = useUniversalMdxRuntime()\n const groups = groupOverviewItems(normalizeOverviewItems(items, runtime?.resolveOverviewItem))\n\n if (groups.length === 0) {\n return null\n }\n\n return (\n <div className=\"prose-headings:my-0 prose-p:my-0 my-5 flex flex-col gap-8\">\n {groups.map((group, groupIndex) => (\n <section className=\"flex flex-col gap-4\" key={groupIndex}>\n {group.dividerText ? (\n <p className=\"text-sm font-semibold uppercase tracking-wide\">{renderInlineMarkdown(group.dividerText)}</p>\n ) : null}\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {group.items.map((item, itemIndex) => (\n <OverviewCard {...item} key={item.href || itemIndex} />\n ))}\n </div>\n </section>\n ))}\n </div>\n )\n}\n","type Repo = `${string}/${string}`\ntype TimestampType = `${number}.${number}`\n\nexport const RepoLink = ({ repo, timestamp }: { repo: Repo; timestamp: TimestampType }) => {\n if (!repo || repo.split('/').length !== 2) {\n throw new Error('Invalid repo')\n }\n\n return (\n <span className=\"inline-flex items-center gap-1\">\n <span className=\"bg-white font-mono font-bold h-fit px-1 text-sm!\">{timestamp}</span>\n <a href={`https://github.com/${repo}`} target=\"_blank\" rel=\"noopener\">\n GitHub > <code>{repo}</code>\n </a>\n </span>\n )\n}\n","import cm, { cmMerge } from '@classmatejs/react'\nimport type { ComponentPropsWithoutRef } from 'react'\n\nexport interface TableData {\n headers: string[]\n rows: string[][]\n}\n\nexport interface TableProps {\n size?: 'sm' | 'md' | 'lg'\n data: TableData\n}\n/** @deprecated - do not use pls */\nexport const Table = ({ size = 'md', data }: TableProps) => {\n return (\n <TableScrollContainer>\n <StyledTable $size={size}>\n <thead className=\"overflow-hidden rounded-t-box bg-base-200\">\n <tr>\n {data.headers.map((header, index) => (\n <th key={index}>{header}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.rows.map((row, rowIndex) => (\n <tr key={rowIndex}>\n {row.map((cell, cellIndex) => (\n <td key={cellIndex}>{cell}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </StyledTable>\n </TableScrollContainer>\n )\n}\n\nexport const MdxTable = ({ className, ...props }: ComponentPropsWithoutRef<'table'>) => {\n return (\n <TableScrollContainer>\n <table\n className={cmMerge(\n `\n table\n w-full\n min-w-[48rem]\n text-sm\n [&_code]:whitespace-nowrap\n [&_td]:align-top\n [&_td]:bg-base-200\n [&_td]:p-3\n [&_td]:[overflow-wrap:normal]\n [&_td]:[word-break:normal]\n [&_th]:align-top\n [&_th]:bg-base-muted-superlight\n [&_th]:font-semibold\n [&_th]:p-3\n [&_th]:[overflow-wrap:normal]\n [&_th]:[word-break:normal]\n [&_thead]:border-base-muted-light\n [&_tr]:border-base-muted-light\n `,\n className,\n )}\n {...props}\n />\n </TableScrollContainer>\n )\n}\n\nconst TableScrollContainer = cm.div`\n not-prose \n my-8 \n max-w-full overflow-x-auto \n rounded-box shadow\n`\n\nconst StyledTable = cm.table.variants<{ $size: TableProps['size'] }>({\n base: `\n table\n w-full\n min-w-[48rem]\n table-zebra\n [&_td]:[overflow-wrap:normal]\n [&_td]:[word-break:normal]\n [&_th]:[overflow-wrap:normal]\n [&_th]:[word-break:normal]\n `,\n variants: {\n $size: {\n sm: 'table-sm',\n md: 'table-md',\n lg: 'table-lg',\n },\n },\n defaultVariants: {\n $size: 'md',\n },\n})\n"],"mappings":"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","names":["jsx","jsx","useState","useState","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","cmMerge","useEffect","useId","useState","jsx","jsxs","jsx","useState","useId","useEffect","jsxs","cmMerge","cmMerge","Children","isValidElement","useRef","jsx","jsxs","asTrimmedString","Children","isValidElement","useRef","jsx","jsxs","cmMerge","cm","cmMerge","Check","Fragment","jsx","jsxs","cmMerge","Fragment","jsx","jsxs","cmMerge","cm","jsx","jsxs","assertUsage","cm","jsx","jsxs","cm","cmMerge","jsx","jsxs"]}
|
package/dist/index.js
CHANGED
package/dist/mdx.js
CHANGED
|
@@ -5,11 +5,12 @@ import {
|
|
|
5
5
|
FileAdded,
|
|
6
6
|
FileRemoved,
|
|
7
7
|
Link,
|
|
8
|
+
MdxTable,
|
|
8
9
|
Overview,
|
|
9
10
|
Pre,
|
|
10
11
|
RepoLink,
|
|
11
12
|
Table
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AEZVNXKM.js";
|
|
13
14
|
import "./chunk-KIBIF3Y6.js";
|
|
14
15
|
import "./chunk-7MAISHRP.js";
|
|
15
16
|
import "./chunk-PYYPYIBD.js";
|
|
@@ -27,6 +28,7 @@ var useMDXComponents = (components) => {
|
|
|
27
28
|
FileAdded,
|
|
28
29
|
FileRemoved,
|
|
29
30
|
pre: Pre,
|
|
31
|
+
table: MdxTable,
|
|
30
32
|
...components
|
|
31
33
|
};
|
|
32
34
|
};
|
package/dist/mdx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mdx/index.ts"],"sourcesContent":["import {\n Alert,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n Link,\n Overview,\n Pre,\n RepoLink,\n Table,\n} from '../index.js'\n\ntype MdxComponents = Record<string, unknown>\n\nexport const useMDXComponents = (components?: MdxComponents): MdxComponents => {\n return {\n Alert,\n Link,\n RepoLink,\n Table,\n Overview,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n pre: Pre,\n ...components,\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/mdx/index.ts"],"sourcesContent":["import {\n Alert,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n Link,\n Overview,\n Pre,\n RepoLink,\n Table,\n} from '../index.js'\nimport { MdxTable } from './components/Table.js'\n\ntype MdxComponents = Record<string, unknown>\n\nexport const useMDXComponents = (components?: MdxComponents): MdxComponents => {\n return {\n Alert,\n Link,\n RepoLink,\n Table,\n Overview,\n ChoiceGroup,\n CodeBlockTransformer,\n FileAdded,\n FileRemoved,\n pre: Pre,\n table: MdxTable,\n ...components,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBO,IAAM,mBAAmB,CAAC,eAA8C;AAC7E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;","names":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/mdx/code-blocks/renderMermaid.client.ts
|
|
2
|
+
var isMermaidInitialized = false;
|
|
3
|
+
var mermaidModulePromise = null;
|
|
4
|
+
var loadMermaid = async () => {
|
|
5
|
+
mermaidModulePromise ??= import("mermaid").then((module) => module.default);
|
|
6
|
+
return mermaidModulePromise;
|
|
7
|
+
};
|
|
8
|
+
var ensureMermaidInitialized = async () => {
|
|
9
|
+
const mermaid = await loadMermaid();
|
|
10
|
+
if (isMermaidInitialized) {
|
|
11
|
+
return mermaid;
|
|
12
|
+
}
|
|
13
|
+
mermaid.initialize({
|
|
14
|
+
startOnLoad: false,
|
|
15
|
+
suppressErrorRendering: true,
|
|
16
|
+
theme: "base"
|
|
17
|
+
});
|
|
18
|
+
isMermaidInitialized = true;
|
|
19
|
+
return mermaid;
|
|
20
|
+
};
|
|
21
|
+
var renderMermaidSvg = async (diagramId, source) => {
|
|
22
|
+
const mermaid = await ensureMermaidInitialized();
|
|
23
|
+
const { svg } = await mermaid.render(diagramId, source);
|
|
24
|
+
return svg;
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
renderMermaidSvg
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=renderMermaid.client-J5F5DPEX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mdx/code-blocks/renderMermaid.client.ts"],"sourcesContent":["export { renderMermaidSvg }\n\nlet isMermaidInitialized = false\nlet mermaidModulePromise: Promise<typeof import('mermaid').default> | null = null\n\nconst loadMermaid = async () => {\n mermaidModulePromise ??= import('mermaid').then((module) => module.default)\n return mermaidModulePromise\n}\n\nconst ensureMermaidInitialized = async () => {\n const mermaid = await loadMermaid()\n\n if (isMermaidInitialized) {\n return mermaid\n }\n\n mermaid.initialize({\n startOnLoad: false,\n suppressErrorRendering: true,\n theme: 'base',\n })\n isMermaidInitialized = true\n\n return mermaid\n}\n\nconst renderMermaidSvg = async (diagramId: string, source: string) => {\n const mermaid = await ensureMermaidInitialized()\n const { svg } = await mermaid.render(diagramId, source)\n return svg\n}\n"],"mappings":";AAEA,IAAI,uBAAuB;AAC3B,IAAI,uBAAyE;AAE7E,IAAM,cAAc,YAAY;AAC9B,2BAAyB,OAAO,SAAS,EAAE,KAAK,CAAC,WAAW,OAAO,OAAO;AAC1E,SAAO;AACT;AAEA,IAAM,2BAA2B,YAAY;AAC3C,QAAM,UAAU,MAAM,YAAY;AAElC,MAAI,sBAAsB;AACxB,WAAO;AAAA,EACT;AAEA,UAAQ,WAAW;AAAA,IACjB,aAAa;AAAA,IACb,wBAAwB;AAAA,IACxB,OAAO;AAAA,EACT,CAAC;AACD,yBAAuB;AAEvB,SAAO;AACT;AAEA,IAAM,mBAAmB,OAAO,WAAmB,WAAmB;AACpE,QAAM,UAAU,MAAM,yBAAyB;AAC/C,QAAM,EAAE,IAAI,IAAI,MAAM,QAAQ,OAAO,WAAW,MAAM;AACtD,SAAO;AACT;","names":[]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mdx/code-blocks/ChoiceGroup.tsx","../src/mdx/code-blocks/CodeBlockHeaderMeta.tsx","../src/mdx/code-blocks/CopyButton.tsx","../src/mdx/code-blocks/context.tsx","../src/mdx/code-blocks/useSelectedChoice.ts","../src/mdx/code-blocks/CodeBlockTransformer.tsx","../src/mdx/code-blocks/FileState.tsx","../src/mdx/code-blocks/MermaidDiagram.tsx","../src/mdx/code-blocks/Pre.tsx","../src/mdx/components/Alert.tsx","../src/mdx/components/Link.tsx","../src/mdx/components/Overview.tsx","../src/mdx/components/RepoLink.tsx","../src/mdx/components/Table.tsx"],"sourcesContent":["export { ChoiceGroup }\n\nimport { Children, isValidElement, type ReactElement, type ReactNode, useId, useRef } from 'react'\nimport { dispatchNivelAction } from '../../shared/nivelActionEvents.js'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { CodeBlockGroupProvider } from './context.js'\nimport { useSelectedChoice } from './useSelectedChoice.js'\n\ntype ChoiceGroupDescriptor = {\n default: string\n disabled: string[]\n name: string\n choices: string[]\n}\n\ntype ChoiceElementProps = {\n children?: ReactNode\n 'data-choice-value'?: string\n}\n\nconst isChoiceElement = (node: ReactNode): node is ReactElement<ChoiceElementProps> => {\n return isValidElement<ChoiceElementProps>(node) && typeof node.props?.['data-choice-value'] === 'string'\n}\n\nconst asTrimmedString = (value: unknown) => {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nconst getActiveCodeBlockMeta = (node: ReactNode): { env: string | null; hideCopy: boolean; title: string | null } => {\n for (const child of Children.toArray(node)) {\n if (!isValidElement(child)) {\n continue\n }\n\n const props = child.props as {\n children?: ReactNode\n 'data-code-env'?: string\n 'data-code-title'?: string\n 'hide-menu'?: string\n }\n const env = asTrimmedString(props['data-code-env'])\n const title = asTrimmedString(props['data-code-title'])\n const hideCopy = props['hide-menu'] === 'true'\n\n if (title || env || hideCopy) {\n return { env, hideCopy, title }\n }\n\n const nestedMeta = getActiveCodeBlockMeta(props.children)\n if (nestedMeta.title || nestedMeta.env || nestedMeta.hideCopy) {\n return nestedMeta\n }\n }\n\n return { env: null, hideCopy: false, title: null }\n}\n\nconst ChoiceGroup = ({\n children,\n choiceGroup,\n hide = false,\n}: {\n children: ReactNode\n choiceGroup: ChoiceGroupDescriptor\n hide?: boolean\n lvl?: number\n}) => {\n const [selectedChoice, setSelectedChoice] = useSelectedChoice(choiceGroup.name, choiceGroup.default)\n const bodyRef = useRef<HTMLDivElement>(null)\n const selectId = useId()\n const labelId = `${selectId}-label`\n // const previousPositionRef = useRestoreScroll([selectedChoice])\n const choiceElements = Children.toArray(children).filter(isChoiceElement)\n const activeChoiceElement =\n choiceElements.find((choiceElement) => choiceElement.props['data-choice-value'] === selectedChoice) ??\n choiceElements[0]\n\n if (!activeChoiceElement) {\n return <>{children}</>\n }\n\n const activeCodeBlockMeta = getActiveCodeBlockMeta(activeChoiceElement.props.children)\n const headerLabel = activeCodeBlockMeta.title ?? activeChoiceElement.props['data-choice-value'] ?? ''\n\n if (hide) {\n return <>{activeChoiceElement.props.children}</>\n }\n\n return (\n <div\n data-choice-group-outer\n data-nivel-component=\"code-choice-group\"\n className=\"my-6 flex h-full min-w-0 max-w-full flex-col overflow-hidden rounded-box border border-base-muted-light\"\n >\n <div\n className=\"not-prose flex min-h-10 items-center relative justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight px-4\"\n data-choice-group-header\n >\n <CodeBlockHeaderMeta label={headerLabel} env={activeCodeBlockMeta.env} />\n <div className=\"flex items-center gap-1\">\n <label className=\"select select-xs min-w-28 w-fit\" htmlFor={selectId}>\n <span id={labelId} className=\"sr-only\">\n Choose code example variant\n </span>\n <select\n id={selectId}\n aria-labelledby={labelId}\n name={`choicesFor-${choiceGroup.name}`}\n data-nivel-action=\"code.choice_change\"\n value={activeChoiceElement.props['data-choice-value']}\n onChange={(event) => {\n const choice = event.currentTarget.value\n setSelectedChoice(choice)\n dispatchNivelAction(event.currentTarget, {\n action: 'code.choice_change',\n choice,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n })\n }}\n >\n {choiceGroup.choices.map((choice) => (\n <option key={choice} value={choice} disabled={choiceGroup.disabled.includes(choice)}>\n {choice}\n </option>\n ))}\n </select>\n </label>\n {!activeCodeBlockMeta.hideCopy && (\n <CodeBlockCopyButton\n actionDetail={{\n action: 'code.copy',\n choice: activeChoiceElement.props['data-choice-value'] ?? null,\n choiceGroup: choiceGroup.name,\n component: 'code-choice-group',\n env: activeCodeBlockMeta.env,\n label: headerLabel,\n }}\n onCopy={async () => {\n const text = trimTrailingWhitespace(bodyRef.current?.textContent ?? '')\n\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }}\n />\n )}\n </div>\n </div>\n <div\n ref={bodyRef}\n className=\"h-full min-w-0 max-w-full flex-1 bg-base-200! [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\"\n >\n <CodeBlockGroupProvider value={true}>{activeChoiceElement.props.children}</CodeBlockGroupProvider>\n </div>\n </div>\n )\n}\n","import cm from '@classmatejs/react'\n\nexport { CodeBlockHeaderMeta }\n\nconst CodeBlockHeaderMeta = ({ env, label }: { env?: string | null; label: string }) => {\n const effectiveEnv = env === 'server' || env === 'client' ? env : undefined\n\n return (\n <div className=\"flex min-w-0 items-center gap-2\">\n {env && <StyledDivider $env={env === 'server' || env === 'client' ? env : undefined} />}\n {env && <StyledBgShade $env={env === 'server' || env === 'client' ? env : undefined} />}\n {env && <StyledBadge $env={effectiveEnv}>{env}</StyledBadge>}\n <div className=\"font-mono text-xs font-semibold text-base-muted\">{label}</div>\n </div>\n )\n}\n\nconst StyledDivider = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'absolute h-1 -bottom-px left-0 w-full pointer-events-none',\n variants: {\n $env: {\n server: 'border-info/50 border-b ',\n client: 'border-success/50 border-b',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n\nconst StyledBadge = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'shrink-0 badge badge-sm rounded-field badge-soft border pointer-events-none',\n variants: {\n $env: {\n server: 'badge-info border-info',\n client: 'badge-success border-success',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n\nconst StyledBgShade = cm.div.variants<{ $env?: 'server' | 'client' }>({\n base: 'absolute inset-0 opacity-5 bg-linear-to-t via-40% via-transparent pointer-events-none',\n variants: {\n $env: {\n server: 'from-info',\n client: 'from-success',\n },\n },\n defaultVariants: { $env: 'server' },\n})\n","export { CodeBlockCopyButton, trimTrailingWhitespace }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { Check, Copy } from 'lucide-react'\nimport { useState } from 'react'\nimport { dispatchNivelAction, type NivelActionEventDetail } from '../../shared/nivelActionEvents.js'\n\nconst trimTrailingWhitespace = (text: string) => {\n return text\n .split('\\n')\n .map((line) => line.trimEnd())\n .join('\\n')\n}\n\nconst CodeBlockCopyButton = ({\n actionDetail,\n onCopy,\n className = '',\n}: {\n actionDetail?: Omit<NivelActionEventDetail, 'success'>\n onCopy: () => Promise<boolean> | boolean\n className?: string\n}) => {\n const [copyState, setCopyState] = useState<'idle' | 'success' | 'error'>('idle')\n\n return (\n <button\n type=\"button\"\n className={cmMerge('btn btn-ghost btn-xs h-8 min-h-8 px-2 text-base-muted hover:text-base-content', className)}\n data-nivel-action={actionDetail?.action}\n onClick={async (event) => {\n const button = event.currentTarget\n const success = await onCopy()\n if (actionDetail) {\n dispatchNivelAction(button, {\n ...actionDetail,\n success,\n })\n }\n setCopyState(success ? 'success' : 'error')\n window.setTimeout(() => setCopyState('idle'), 900)\n }}\n aria-label={copyState === 'idle' ? 'Copy to clipboard' : copyState === 'success' ? 'Copied' : 'Copy failed'}\n >\n {copyState === 'success' ? <Check size={14} /> : <Copy size={14} />}\n </button>\n )\n}\n","import { createContext, useContext } from 'react'\n\nconst CodeBlockGroupContext = createContext(false)\n\nexport const CodeBlockGroupProvider = CodeBlockGroupContext.Provider\n\nexport const useIsInCodeBlockGroup = () => useContext(CodeBlockGroupContext)\n","import { useEffect, useState, useSyncExternalStore } from 'react'\nimport { useUniversalMdxRuntime } from '../components/UniversalMdxProvider.js'\n\nconst subscribeNoop = () => () => {}\nconst getServerSnapshot = () => null\n\nexport const useSelectedChoice = (choiceGroupName: string, defaultValue: string) => {\n const runtime = useUniversalMdxRuntime()\n const choiceStore = runtime?.codeBlockChoices\n const storedChoice = useSyncExternalStore(\n choiceStore?.subscribe ?? subscribeNoop,\n () => choiceStore?.getChoice(choiceGroupName) ?? null,\n getServerSnapshot,\n )\n const [localChoice, setLocalChoice] = useState(defaultValue)\n\n useEffect(() => {\n if (!choiceStore || storedChoice) {\n return\n }\n\n const legacyChoice = choiceStore.getLegacyChoice?.(choiceGroupName)\n if (legacyChoice) {\n choiceStore.setChoice(choiceGroupName, legacyChoice)\n }\n }, [choiceGroupName, choiceStore, storedChoice])\n\n if (choiceStore) {\n return [storedChoice ?? defaultValue, (value: string) => choiceStore.setChoice(choiceGroupName, value)] as const\n }\n\n return [localChoice, setLocalChoice] as const\n}\n","export { CodeBlockTransformer }\nexport type { LineBreak }\n\nimport type { ReactNode } from 'react'\n\ntype LineBreak = 'white-space' | 'break-word'\n\nconst CodeBlockTransformer = ({ children, lineBreak }: { children: ReactNode; lineBreak: LineBreak }) => {\n const className = `with-line-break_${lineBreak}` as const\n return <div className={className}>{children}</div>\n}\n","export { FileAdded, FileRemoved }\n\nimport type { ReactNode } from 'react'\n\nconst FileAdded = ({ children }: { children: ReactNode }) => {\n return <div className=\"doc-code-file-state doc-code-file-added\">{children}</div>\n}\n\nconst FileRemoved = ({ children }: { children: ReactNode }) => {\n return <div className=\"doc-code-file-state doc-code-file-removed\">{children}</div>\n}\n","export { MermaidDiagram }\n\nimport { cmMerge } from '@classmatejs/react'\nimport { useEffect, useId, useState } from 'react'\n\nlet isMermaidInitialized = false\nlet mermaidModulePromise: Promise<typeof import('mermaid').default> | null = null\nconst MERMAID_SVG_CLASS_NAME = 'nivel-mermaid-svg'\nconst MERMAID_ROOT_CLASS_NAME = 'nivel-mermaid'\n\nconst getMermaidSvgOverrideCss = (diagramId: string) => `\n#${diagramId}.${MERMAID_SVG_CLASS_NAME} {\n font-family: var(--font-sans);\n}\n\n#${diagramId} .node rect,\n#${diagramId} .node circle,\n#${diagramId} .node ellipse,\n#${diagramId} .node polygon,\n#${diagramId} .node path {\n fill: var(--nivel-mermaid-node-fill, var(--color-primary-muted-superlight));\n stroke: var(--nivel-mermaid-node-stroke, var(--color-primary-muted-medium));\n stroke-width: var(--nivel-mermaid-node-stroke-width, 1px);\n}\n\n#${diagramId} .node .label,\n#${diagramId} .node .label text,\n#${diagramId} .nodeLabel,\n#${diagramId} .nodeLabel *,\n#${diagramId} .cluster-label text,\n#${diagramId} .label text {\n background-color: transparent;\n fill: transparent;\n color: var(--nivel-mermaid-node-text, var(--color-base-content));\n}\n\n#${diagramId} .edgeLabel,\n#${diagramId} .edgeLabel *,\n#${diagramId} .edgeLabel span,\n#${diagramId} .edgeLabel p {\n background-color: var(--nivel-mermaid-edge-label-fill, var(--color-base-100));\n color: var(--nivel-mermaid-edge-label-text, var(--nivel-mermaid-node-text, var(--color-base-content)));\n}\n\n#${diagramId} .edgePath .path,\n#${diagramId} .flowchart-link,\n#${diagramId} .relationshipLine,\n#${diagramId} .messageLine0,\n#${diagramId} .messageLine1 {\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke-width: var(--nivel-mermaid-line-width, 1.5px);\n}\n\n#${diagramId} marker path,\n#${diagramId} .marker {\n fill: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n stroke: var(--nivel-mermaid-line-color, var(--color-primary-muted));\n}\n\n#${diagramId} .cluster rect {\n fill: var(--nivel-mermaid-cluster-fill, var(--color-base-100));\n stroke: var(--nivel-mermaid-cluster-stroke, var(--color-primary-muted-light));\n stroke-width: var(--nivel-mermaid-cluster-stroke-width, 1px);\n}\n`\n\nconst loadMermaid = async () => {\n mermaidModulePromise ??= import('mermaid').then((module) => module.default)\n return mermaidModulePromise\n}\n\nconst ensureMermaidInitialized = async () => {\n const mermaid = await loadMermaid()\n\n if (isMermaidInitialized) {\n return mermaid\n }\n\n mermaid.initialize({\n startOnLoad: false,\n suppressErrorRendering: true,\n theme: 'base',\n })\n isMermaidInitialized = true\n\n return mermaid\n}\n\nconst decorateSvg = (svg: string, diagramId: string) => {\n const svgWithClassName = svg.replace(/<svg\\b([^>]*?)>/, (match, attributes: string) => {\n const classMatch = attributes.match(/\\sclass=\"([^\"]*)\"/)\n if (classMatch) {\n const mergedClassNames = `${classMatch[1]} ${MERMAID_SVG_CLASS_NAME}`.trim()\n return `<svg${attributes.replace(/\\sclass=\"([^\"]*)\"/, ` class=\"${mergedClassNames}\"`)} data-mermaid-graphic=\"\">`\n }\n\n return `<svg${attributes} class=\"${MERMAID_SVG_CLASS_NAME}\" data-mermaid-graphic=\"\">`\n })\n\n return svgWithClassName.replace('</svg>', `<style>${getMermaidSvgOverrideCss(diagramId)}</style></svg>`)\n}\n\nconst MermaidSource = ({ source }: { source: string }) => {\n return (\n <pre className=\"sr-only\" data-mermaid-source=\"\">\n <code>{source}</code>\n </pre>\n )\n}\n\nconst MermaidDiagram = ({ className, source }: { className?: string; source: string }) => {\n const [svg, setSvg] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const diagramId = useId()\n\n useEffect(() => {\n let isActive = true\n\n const renderDiagram = async () => {\n try {\n const mermaid = await ensureMermaidInitialized()\n const { svg: renderedSvg } = await mermaid.render(`nivel-mermaid-${diagramId}`, source)\n\n if (!isActive) {\n return\n }\n\n setSvg(decorateSvg(renderedSvg, `nivel-mermaid-${diagramId}`))\n setError(null)\n } catch (renderError) {\n if (!isActive) {\n return\n }\n\n const message = renderError instanceof Error ? renderError.message : 'Failed to render Mermaid diagram.'\n setError(message)\n setSvg(null)\n }\n }\n\n void renderDiagram()\n\n return () => {\n isActive = false\n }\n }, [diagramId, source])\n\n if (error) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"error\"\n >\n <div className=\"rounded-box border border-error/30 bg-error/8 px-4 py-3 text-sm text-error\">{error}</div>\n <pre className=\"doc-code-pre m-0 overflow-x-auto bg-base-200! p-4 text-sm\">\n <code>{source}</code>\n </pre>\n </div>\n )\n }\n\n if (!svg) {\n return (\n <div\n className={cmMerge(MERMAID_ROOT_CLASS_NAME, 'space-y-3', className)}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"loading\"\n >\n <div className=\"px-4 py-10 text-center text-sm flex gap-2 items-center justify-center\">\n <span className=\"loading loading-spinner loading-md\"></span>\n Rendering diagram...\n </div>\n <MermaidSource source={source} />\n </div>\n )\n }\n\n return (\n <div\n className={cmMerge(\n MERMAID_ROOT_CLASS_NAME,\n 'overflow-x-auto bg-base-200 px-3 py-4 [&_svg]:mx-auto [&_svg]:h-auto [&_svg]:max-w-full',\n className,\n )}\n data-mermaid-diagram=\"\"\n data-mermaid-status=\"ready\"\n >\n <div dangerouslySetInnerHTML={{ __html: svg }} />\n <MermaidSource source={source} />\n </div>\n )\n}\n","export { Pre }\n\nimport { cmMerge } from '@classmatejs/react'\nimport {\n Children,\n type ComponentPropsWithoutRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useRef,\n} from 'react'\nimport { CodeBlockHeaderMeta } from './CodeBlockHeaderMeta.js'\nimport { CodeBlockCopyButton, trimTrailingWhitespace } from './CopyButton.js'\nimport { MermaidDiagram } from './MermaidDiagram.js'\nimport { useIsInCodeBlockGroup } from './context.js'\n\ntype PreProps = ComponentPropsWithoutRef<'pre'> & {\n 'data-code-env'?: string\n 'data-code-title'?: string\n 'data-language'?: string\n 'data-language-label'?: string\n 'file-added'?: string\n 'file-removed'?: string\n 'hide-menu'?: string\n render?: string\n}\n\nconst asTrimmedString = (value: unknown) => {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nconst getLanguageFromChildren = (children: ReactNode) => {\n const firstChild = Children.toArray(children)[0]\n if (!isValidElement(firstChild)) {\n return null\n }\n\n const props = (firstChild as ReactElement<{ className?: string; 'data-language'?: string }>).props\n const explicitLanguage = asTrimmedString(props['data-language'])\n if (explicitLanguage) {\n return explicitLanguage\n }\n\n const classNames = typeof props.className === 'string' ? props.className.split(/\\s+/) : []\n const languageClassName = classNames.find((className) => className.startsWith('language-'))\n return languageClassName ? languageClassName.slice('language-'.length) : null\n}\n\nconst getLanguageLabel = (props: PreProps) => {\n const explicitLabel = asTrimmedString(props['data-language-label'])\n if (explicitLabel) {\n return explicitLabel\n }\n\n const explicitLanguage = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(props.children)\n return explicitLanguage ? explicitLanguage.toUpperCase() : 'CODE'\n}\n\nconst getNodeText = (node: ReactNode): string => {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node)\n }\n\n if (Array.isArray(node)) {\n return node.map((child) => getNodeText(child)).join('')\n }\n\n if (!isValidElement(node)) {\n return ''\n }\n\n return getNodeText((node as ReactElement<{ children?: ReactNode }>).props.children)\n}\n\nconst Pre = ({ children, className, ...props }: PreProps) => {\n const preRef = useRef<HTMLPreElement>(null)\n const isInChoiceGroup = useIsInCodeBlockGroup()\n const language = asTrimmedString(props['data-language']) ?? getLanguageFromChildren(children)\n const label =\n asTrimmedString(props['data-code-title']) ??\n getLanguageLabel({ ...props, children, 'data-language': language ?? undefined })\n const env = asTrimmedString(props['data-code-env'])\n const fileState = props['file-added'] ? 'added' : props['file-removed'] ? 'removed' : null\n const hideMenu = props['hide-menu'] === 'true'\n const shouldRenderMermaid = language === 'mermaid' && props.render === 'true'\n const sourceText = trimTrailingWhitespace(getNodeText(children))\n\n const copyButton =\n hideMenu || isInChoiceGroup ? null : (\n <CodeBlockCopyButton\n actionDetail={{\n action: 'code.copy',\n component: 'code-block',\n env,\n label,\n language,\n }}\n onCopy={async () => {\n const text = shouldRenderMermaid ? sourceText : trimTrailingWhitespace(preRef.current?.textContent ?? '')\n\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n return false\n }\n }}\n />\n )\n\n return (\n <div\n className={cmMerge(\n 'group relative h-full min-w-0 max-w-full not-prose overflow-hidden',\n isInChoiceGroup ? '' : 'rounded-box border border-base-muted-light',\n className,\n )}\n data-code-block-frame=\"\"\n data-file-state={fileState ?? undefined}\n data-nivel-component=\"code-block\"\n >\n {!isInChoiceGroup && (\n <div\n className=\"flex min-h-10 relative items-center justify-between gap-3 border-b border-base-muted-light bg-base-muted-superlight! px-4\"\n data-code-block-header=\"\"\n >\n <CodeBlockHeaderMeta label={label} env={env} />\n {copyButton}\n </div>\n )}\n {shouldRenderMermaid ? (\n <MermaidDiagram className=\"min-w-0\" source={sourceText} />\n ) : (\n <pre\n {...props}\n ref={preRef}\n className={cmMerge(\n 'doc-code-pre m-0 h-full min-w-0 max-w-full overflow-x-auto bg-base-200! p-4 text-sm',\n className,\n )}\n data-code-block-content=\"\"\n >\n {children}\n </pre>\n )}\n </div>\n )\n}\n","import cm, { cmMerge } from '@classmatejs/react'\nimport { Check, CircleX, Info, TriangleAlert } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\nexport type AlertVariant = 'info' | 'warning' | 'error' | 'success'\n\nconst alertIconMap = {\n info: Info,\n warning: TriangleAlert,\n error: CircleX,\n success: Check,\n}\n\nexport const Alert = ({\n type = 'info',\n heading,\n children,\n icon = true,\n}: {\n type?: AlertVariant\n heading?: ReactNode\n children: ReactNode\n icon?: boolean | ReactNode\n}) => {\n const AlertIcon = icon === true ? alertIconMap[type] : typeof icon === 'object' ? () => <>{icon}</> : null\n\n const alertIconTextColorClass = {\n info: 'text-info',\n warning: 'text-warning',\n error: 'text-error',\n success: 'text-success',\n }[type]\n\n return (\n <AlertOuter $variant={type}>\n {!!heading && AlertIcon && (\n <div className=\"mb-3 flex items-center gap-2\">\n <AlertIcon className={cmMerge(alertIconTextColorClass, 'float-left h-5 w-5')} />\n <AlertHeading>{heading}</AlertHeading>\n </div>\n )}\n {!(!!heading && AlertIcon) && !!heading && <AlertHeading>{heading}</AlertHeading>}\n {!(!!heading && AlertIcon) && AlertIcon && (\n <div className={cmMerge(alertIconTextColorClass, 'float-left mr-2')}>\n <AlertIcon className=\"mt-1 h-5 w-5\" />\n </div>\n )}\n {children}\n </AlertOuter>\n )\n}\n\nconst AlertOuter = cm.section.variants<{ $variant: AlertVariant }>({\n base: `\n p-4\n my-6\n border\n rounded-lg\n prose-p:last:mb-0\n prose-p:mt-0\n prose-headings:first:mt-0\n prose-headings:last:mb-0\n prose-ul:first:mt-0\n prose-ul:last:mb-0\n text-sm\n `,\n variants: {\n $variant: {\n info: 'bg-info/10 border-info/30',\n warning: 'bg-warning/10 border-warning/30',\n error: 'bg-error/10 border-error/25',\n success: 'bg-success/10 border-success/35',\n },\n },\n defaultVariants: {\n $variant: 'info',\n },\n})\n\nconst AlertHeading = cm.header`\n font-bold\n text-base\n`\n","import { cmMerge } from '@classmatejs/react'\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react'\nimport { isExternalHref } from '../../docs/runtime.js'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport { useUniversalMdxRuntime } from './UniversalMdxProvider.js'\n\nexport type LinkProps = ComponentPropsWithoutRef<'a'> & {\n href?: string\n text?: string | ReactNode\n noBreadcrumb?: boolean\n doNotInferSectionTitle?: boolean\n noWarning?: boolean\n}\n\nfunction assertUsage(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`)\n }\n}\n\nconst assertWarning = (condition: unknown, message: string) => {\n const isDev = (import.meta as ImportMeta & { env?: { DEV?: boolean } }).env?.DEV === true\n\n if (condition || !isDev) {\n return\n }\n\n console.warn(`[UniversalMdxMods][Warning] ${message}`)\n}\n\nconst parseMarkdownMini = (markdown: string) => {\n type Part = { content: string; nodeType: 'code' | 'text' }\n const parts: Part[] = []\n let current: Part | undefined\n\n for (const letter of markdown.split('')) {\n if (letter === '`') {\n if (current?.nodeType === 'code') {\n parts.push(current)\n current = undefined\n } else {\n if (current) {\n parts.push(current)\n }\n current = { nodeType: 'code', content: '' }\n }\n continue\n }\n\n current ??= { nodeType: 'text', content: '' }\n current.content += letter\n }\n\n if (current) {\n parts.push(current)\n }\n\n return (\n <>\n {parts.map((part, index) =>\n part.nodeType === 'code' ? <code key={index}>{part.content}</code> : <span key={index}>{part.content}</span>,\n )}\n </>\n )\n}\n\nconst determineSectionTitle = (href: string) => {\n const hash = href.split('#')[1]\n\n if (!hash) {\n return null\n }\n\n return hash\n .split(':~:text')[0]\n ?.split('-')\n .map((word, index) => (index === 0 ? `${word[0]?.toUpperCase() ?? ''}${word.slice(1)}` : word))\n .join(' ')\n}\n\nconst isDocsRelativeHref = (href: string) => {\n return (\n !href.startsWith('/') &&\n !href.startsWith('#') &&\n !isExternalHref(href) &&\n !href.startsWith('./') &&\n !href.startsWith('../')\n )\n}\n\nconst renderLabelPart = (value: ReactNode) => {\n return typeof value === 'string' ? parseMarkdownMini(value) : value\n}\n\nconst getLinkText = ({\n isCurrentPage,\n breadcrumb,\n noBreadcrumb,\n sectionTitle,\n title,\n}: {\n isCurrentPage?: boolean\n breadcrumb?: ReactNode[]\n noBreadcrumb?: boolean\n sectionTitle?: ReactNode\n title?: ReactNode\n}) => {\n const breadcrumbParts: ReactNode[] = []\n\n if (breadcrumb) {\n breadcrumbParts.push(...breadcrumb.map((item) => renderLabelPart(item)))\n }\n\n if (title) {\n breadcrumbParts.push(renderLabelPart(title))\n }\n\n if (sectionTitle) {\n breadcrumbParts.push(renderLabelPart(sectionTitle))\n }\n\n if (noBreadcrumb || isCurrentPage) {\n return breadcrumbParts[breadcrumbParts.length - 1] ?? null\n }\n\n return (\n <>\n {breadcrumbParts.map((part, index) => (\n <span key={index}>\n {index > 0 ? ' > ' : null}\n {part}\n </span>\n ))}\n </>\n )\n}\n\nexport const Link = ({\n href,\n text,\n noBreadcrumb,\n doNotInferSectionTitle,\n noWarning,\n children,\n className,\n ...props\n}: LinkProps) => {\n const runtime = useUniversalMdxRuntime()\n\n if (typeof href !== 'string' || href === '') {\n assertWarning(false, '<Link /> is missing `href`.')\n\n return (\n <a className={cmMerge(className, 'inline-flex gap-1 items-center')} {...props}>\n {text ?? children ?? 'LINK-TARGET-NOT-FOUND'}\n </a>\n )\n }\n\n assertUsage(\n href.startsWith('/') || href.startsWith('#') || isExternalHref(href) || isDocsRelativeHref(href),\n `<Link href /> prop \\`href==='${href}'\\` but should be external, docs-relative, or start with '/' or '#'`,\n )\n assertUsage(!text || !children, 'Cannot use both `text` or `children`')\n\n const content = text ?? children\n const resolvedDocLink = runtime?.resolveDocLink?.({\n href,\n doNotInferSectionTitle,\n noWarning,\n })\n const localizedHref = resolvedDocLink?.href ?? runtime?.localizeHref?.(href) ?? withSiteBaseUrl(href)\n const inferredSectionTitle =\n resolvedDocLink?.sectionTitle ?? (!doNotInferSectionTitle ? determineSectionTitle(href) : null)\n const inferredText =\n content ??\n (resolvedDocLink\n ? getLinkText({\n breadcrumb: resolvedDocLink.breadcrumb,\n isCurrentPage: resolvedDocLink.isCurrentPage,\n noBreadcrumb,\n sectionTitle: inferredSectionTitle ?? undefined,\n title: resolvedDocLink.title,\n })\n : isExternalHref(href)\n ? href\n : (inferredSectionTitle ?? 'LINK-TARGET-NOT-FOUND'))\n\n return (\n <a href={localizedHref} className={cmMerge(className, '')} {...props}>\n {inferredText}\n </a>\n )\n}\n","import cm from '@classmatejs/react'\nimport type { ReactNode } from 'react'\nimport { withSiteBaseUrl } from '../../shared/assets.js'\nimport { renderInlineMarkdown } from '../../shared/renderInlineMarkdown.js'\nimport type { UniversalResolvedOverviewItem } from './types.js'\nimport { useUniversalMdxRuntime } from './UniversalMdxProvider.js'\n\ntype OverviewLinkItem = {\n title: ReactNode\n href: string\n excerpt?: ReactNode | null\n}\n\ntype OverviewDividerItem = {\n dividerText: ReactNode\n}\n\nexport type OverviewItem = OverviewLinkItem | OverviewDividerItem\n\ninterface OverviewProps {\n items: Array<string | OverviewItem>\n}\n\nconst isOverviewDividerItem = (item: string | OverviewItem): item is OverviewDividerItem =>\n typeof item === 'object' && item !== null && 'dividerText' in item\n\nfunction assertUsage(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(`[UniversalMdxMods][Wrong Usage] ${message}`)\n }\n}\n\nconst groupOverviewItems = (items: OverviewItem[]) => {\n const groups: { dividerText?: ReactNode; items: OverviewLinkItem[] }[] = []\n let currentGroup: { dividerText?: ReactNode; items: OverviewLinkItem[] } = {\n items: [],\n }\n\n const commitCurrentGroup = () => {\n if (currentGroup.items.length > 0) {\n groups.push(currentGroup)\n }\n }\n\n for (const item of items) {\n if (isOverviewDividerItem(item)) {\n commitCurrentGroup()\n currentGroup = {\n dividerText: item.dividerText,\n items: [],\n }\n continue\n }\n\n currentGroup.items.push(item)\n }\n\n commitCurrentGroup()\n\n return groups\n}\n\nconst OverviewCard = ({ href, title }: OverviewLinkItem) => {\n return (\n <StyleOverviewCard href={withSiteBaseUrl(href)}>\n <span className=\"text-lg font-semibold text-base-content\">{renderInlineMarkdown(title)}</span>\n </StyleOverviewCard>\n )\n}\n\nconst StyleOverviewCard = cm.a`\n flex h-full flex-col gap-3 \n rounded-box border \n border-base-muted-light hover:border-primary-muted\n hover:bg-primary-muted-superlight \n no-underline transition-colors \n shadow shadow-transparent hover:shadow-primary-muted-light\n p-5\n `\n\nconst normalizeOverviewItems = (\n items: Array<string | OverviewItem>,\n resolveOverviewItem?: (key: string) => UniversalResolvedOverviewItem | null,\n): OverviewItem[] => {\n return items.map((item) => {\n if (typeof item !== 'string') {\n return item\n }\n\n const resolvedItem = resolveOverviewItem?.(item)\n\n assertUsage(\n resolvedItem,\n `Overview item \"${item}\" requires runtime.resolveOverviewItem(). Pass { title, href, excerpt } manually when no resolver is available.`,\n )\n\n return resolvedItem\n })\n}\n\nexport const Overview = ({ items }: OverviewProps) => {\n const runtime = useUniversalMdxRuntime()\n const groups = groupOverviewItems(normalizeOverviewItems(items, runtime?.resolveOverviewItem))\n\n if (groups.length === 0) {\n return null\n }\n\n return (\n <div className=\"prose-headings:my-0 prose-p:my-0 my-5 flex flex-col gap-8\">\n {groups.map((group, groupIndex) => (\n <section className=\"flex flex-col gap-4\" key={groupIndex}>\n {group.dividerText ? (\n <p className=\"text-sm font-semibold uppercase tracking-wide\">{renderInlineMarkdown(group.dividerText)}</p>\n ) : null}\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {group.items.map((item, itemIndex) => (\n <OverviewCard {...item} key={item.href || itemIndex} />\n ))}\n </div>\n </section>\n ))}\n </div>\n )\n}\n","type Repo = `${string}/${string}`\ntype TimestampType = `${number}.${number}`\n\nexport const RepoLink = ({ repo, timestamp }: { repo: Repo; timestamp: TimestampType }) => {\n if (!repo || repo.split('/').length !== 2) {\n throw new Error('Invalid repo')\n }\n\n return (\n <span className=\"inline-flex items-center gap-1\">\n <span className=\"bg-white font-mono font-bold h-fit px-1 text-sm!\">{timestamp}</span>\n <a href={`https://github.com/${repo}`} target=\"_blank\" rel=\"noopener\">\n GitHub > <code>{repo}</code>\n </a>\n </span>\n )\n}\n","import cm from '@classmatejs/react'\n\nexport interface TableData {\n headers: string[]\n rows: string[][]\n}\n\nexport interface TableProps {\n size?: 'sm' | 'md' | 'lg'\n data: TableData\n}\n/** @deprecated - do not use pls */\nexport const Table = ({ size = 'md', data }: TableProps) => {\n return (\n <div className=\"overflow-x-auto\">\n <StyledTable $size={size}>\n <thead className=\"overflow-hidden rounded-t-box bg-base-200\">\n <tr>\n {data.headers.map((header, index) => (\n <th key={index}>{header}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.rows.map((row, rowIndex) => (\n <tr key={rowIndex}>\n {row.map((cell, cellIndex) => (\n <td key={cellIndex}>{cell}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </StyledTable>\n </div>\n )\n}\n\nconst StyledTable = cm.table.variants<{ $size: TableProps['size'] }>({\n base: `\n not-prose\n table\n w-full\n table-zebra\n mb-6\n `,\n variants: {\n $size: {\n sm: 'table-sm',\n md: 'table-md',\n lg: 'table-lg',\n },\n },\n defaultVariants: {\n $size: 'md',\n },\n})\n"],"mappings":"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","names":["jsx","jsx","useState","useState","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","cmMerge","useEffect","useId","useState","jsx","jsxs","jsx","useState","useId","useEffect","jsxs","cmMerge","cmMerge","Children","isValidElement","useRef","jsx","jsxs","asTrimmedString","Children","isValidElement","useRef","jsx","jsxs","cmMerge","cm","cmMerge","Check","Fragment","jsx","jsxs","cmMerge","Fragment","jsx","jsxs","cmMerge","cm","jsx","jsxs","assertUsage","cm","jsx","jsxs","cm","jsx","jsxs"]}
|