@nuucognition/ncm-ui 0.1.0-dev.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/LICENSE +21 -0
- package/README.md +129 -0
- package/dist/blocks/admonition/index.d.ts +13 -0
- package/dist/blocks/admonition/index.js +1713 -0
- package/dist/blocks/aside/index.d.ts +13 -0
- package/dist/blocks/aside/index.js +1713 -0
- package/dist/blocks/attribution/index.d.ts +13 -0
- package/dist/blocks/attribution/index.js +32 -0
- package/dist/blocks/blockquote/index.d.ts +15 -0
- package/dist/blocks/blockquote/index.js +609 -0
- package/dist/blocks/chart/index.d.ts +14 -0
- package/dist/blocks/chart/index.js +29 -0
- package/dist/blocks/code/index.d.ts +15 -0
- package/dist/blocks/code/index.js +163 -0
- package/dist/blocks/container/index.d.ts +17 -0
- package/dist/blocks/container/index.js +633 -0
- package/dist/blocks/custom-code/index.d.ts +15 -0
- package/dist/blocks/custom-code/index.js +31 -0
- package/dist/blocks/dataview/index.d.ts +14 -0
- package/dist/blocks/dataview/index.js +29 -0
- package/dist/blocks/definition/index.d.ts +13 -0
- package/dist/blocks/definition/index.js +1713 -0
- package/dist/blocks/embed/index.d.ts +12 -0
- package/dist/blocks/embed/index.js +46 -0
- package/dist/blocks/embedding/index.d.ts +13 -0
- package/dist/blocks/embedding/index.js +763 -0
- package/dist/blocks/figure/index.d.ts +13 -0
- package/dist/blocks/figure/index.js +656 -0
- package/dist/blocks/footnote/index.d.ts +13 -0
- package/dist/blocks/footnote/index.js +1713 -0
- package/dist/blocks/frontmatter/index.d.ts +16 -0
- package/dist/blocks/frontmatter/index.js +38 -0
- package/dist/blocks/header/index.d.ts +9 -0
- package/dist/blocks/header/index.js +610 -0
- package/dist/blocks/horizontal-rule/index.d.ts +9 -0
- package/dist/blocks/horizontal-rule/index.js +19 -0
- package/dist/blocks/html/index.d.ts +31 -0
- package/dist/blocks/html/index.js +52 -0
- package/dist/blocks/index.d.ts +32 -0
- package/dist/blocks/index.js +1736 -0
- package/dist/blocks/latex/index.d.ts +9 -0
- package/dist/blocks/latex/index.js +107 -0
- package/dist/blocks/link/index.d.ts +14 -0
- package/dist/blocks/link/index.js +27 -0
- package/dist/blocks/list/index.d.ts +9 -0
- package/dist/blocks/list/index.js +675 -0
- package/dist/blocks/math/index.d.ts +13 -0
- package/dist/blocks/math/index.js +88 -0
- package/dist/blocks/mermaid/index.d.ts +14 -0
- package/dist/blocks/mermaid/index.js +29 -0
- package/dist/blocks/page-breaker/index.d.ts +16 -0
- package/dist/blocks/page-breaker/index.js +21 -0
- package/dist/blocks/paragraph/index.d.ts +9 -0
- package/dist/blocks/paragraph/index.js +608 -0
- package/dist/blocks/spoiler/index.d.ts +13 -0
- package/dist/blocks/spoiler/index.js +1713 -0
- package/dist/blocks/table/index.d.ts +9 -0
- package/dist/blocks/table/index.js +619 -0
- package/dist/blocks/task-list/index.d.ts +13 -0
- package/dist/blocks/task-list/index.js +670 -0
- package/dist/components/index.d.ts +599 -0
- package/dist/components/index.js +1840 -0
- package/dist/components/ncm-block.d.ts +28 -0
- package/dist/components/ncm-block.js +1712 -0
- package/dist/components/ncm-document.d.ts +48 -0
- package/dist/components/ncm-document.js +1839 -0
- package/dist/context/index.d.ts +7 -0
- package/dist/context/index.js +284 -0
- package/dist/hooks/index.d.ts +7 -0
- package/dist/hooks/index.js +1731 -0
- package/dist/hooks/use-block-renderer.d.ts +28 -0
- package/dist/hooks/use-block-renderer.js +1731 -0
- package/dist/hooks/use-ncm-config.d.ts +6 -0
- package/dist/hooks/use-ncm-config.js +11 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +1887 -0
- package/dist/inline/index.d.ts +108 -0
- package/dist/inline/index.js +598 -0
- package/dist/inline-DwUYUmk4.d.ts +75 -0
- package/dist/lib/defaults.d.ts +24 -0
- package/dist/lib/defaults.js +1713 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +10 -0
- package/dist/lib/katex.d.ts +3 -0
- package/dist/lib/katex.js +45 -0
- package/dist/lib/utils.d.ts +8 -0
- package/dist/lib/utils.js +10 -0
- package/dist/references-Bs5wJybr.d.ts +63 -0
- package/dist/renderers-C5f41FCy.d.ts +99 -0
- package/dist/styles/fonts/OpenDyslexic3-Bold.woff +0 -0
- package/dist/styles/fonts/OpenDyslexic3-Bold.woff2 +0 -0
- package/dist/styles/fonts/OpenDyslexic3-Regular.woff +0 -0
- package/dist/styles/fonts/OpenDyslexic3-Regular.woff2 +0 -0
- package/dist/styles/nuu.css +364 -0
- package/dist/styles/paper.css +332 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +2 -0
- package/dist/use-ncm-config-D0doMYTH.d.ts +114 -0
- package/package.json +99 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
|
+
import { twMerge } from 'tailwind-merge';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/lib/katex.ts
|
|
8
|
+
var katexPromise = null;
|
|
9
|
+
function loadKatex() {
|
|
10
|
+
if (!katexPromise) {
|
|
11
|
+
katexPromise = Promise.all([
|
|
12
|
+
import('katex'),
|
|
13
|
+
import('katex/dist/katex.min.css')
|
|
14
|
+
]).then(([module]) => module.default).catch(() => null);
|
|
15
|
+
}
|
|
16
|
+
return katexPromise;
|
|
17
|
+
}
|
|
18
|
+
function useKatexHtml(content, displayMode, enabled = true) {
|
|
19
|
+
const [katexModule, setKatexModule] = useState(null);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!enabled) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
let active = true;
|
|
25
|
+
loadKatex().then((loaded) => {
|
|
26
|
+
if (active) {
|
|
27
|
+
setKatexModule(loaded);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return () => {
|
|
31
|
+
active = false;
|
|
32
|
+
};
|
|
33
|
+
}, [enabled]);
|
|
34
|
+
return useMemo(() => {
|
|
35
|
+
if (!enabled || !katexModule) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
return katexModule.renderToString(content, {
|
|
40
|
+
throwOnError: false,
|
|
41
|
+
displayMode
|
|
42
|
+
});
|
|
43
|
+
} catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}, [content, displayMode, enabled, katexModule]);
|
|
47
|
+
}
|
|
48
|
+
function cn(...inputs) {
|
|
49
|
+
return twMerge(clsx(inputs));
|
|
50
|
+
}
|
|
51
|
+
function MathBlock({ block, className }) {
|
|
52
|
+
const html = useKatexHtml(block.content, true);
|
|
53
|
+
if (html) {
|
|
54
|
+
return /* @__PURE__ */ jsx(
|
|
55
|
+
"div",
|
|
56
|
+
{
|
|
57
|
+
role: "region",
|
|
58
|
+
"aria-label": "Mathematical expression",
|
|
59
|
+
"data-ncm-block": block.id,
|
|
60
|
+
"data-ncm-stable": block.stableId,
|
|
61
|
+
"data-ncm-type": block.type,
|
|
62
|
+
"data-block-id": block.id,
|
|
63
|
+
"data-ncm-math": "",
|
|
64
|
+
className: cn("overflow-x-auto", className),
|
|
65
|
+
dangerouslySetInnerHTML: { __html: html }
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
return /* @__PURE__ */ jsx(
|
|
70
|
+
"pre",
|
|
71
|
+
{
|
|
72
|
+
role: "region",
|
|
73
|
+
"aria-label": "Mathematical expression (source)",
|
|
74
|
+
"data-ncm-block": block.id,
|
|
75
|
+
"data-ncm-stable": block.stableId,
|
|
76
|
+
"data-ncm-type": block.type,
|
|
77
|
+
"data-block-id": block.id,
|
|
78
|
+
"data-ncm-math": "",
|
|
79
|
+
className: cn(
|
|
80
|
+
"overflow-x-auto rounded-lg border border-border bg-muted p-4 font-mono text-sm",
|
|
81
|
+
className
|
|
82
|
+
),
|
|
83
|
+
children: /* @__PURE__ */ jsx("code", { children: block.content })
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export { MathBlock };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { MermaidBlock as MermaidBlock$1 } from '@nuucognition/ncm';
|
|
3
|
+
import { a as BlockRendererProps } from '../../renderers-C5f41FCy.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
type MermaidBlockProps = BlockRendererProps<MermaidBlock$1>;
|
|
7
|
+
/**
|
|
8
|
+
* Mermaid renderer — the default emits the diagram *source* (no Mermaid runtime
|
|
9
|
+
* is bundled in this package). Consumers wire a live renderer by overriding the
|
|
10
|
+
* `mermaid` renderer key. `data-ncm-diagram-type` exposes the detected kind.
|
|
11
|
+
*/
|
|
12
|
+
declare function MermaidBlock({ block, className }: MermaidBlockProps): react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
export { MermaidBlock, type MermaidBlockProps };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
// src/lib/utils.ts
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return twMerge(clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
function MermaidBlock({ block, className }) {
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
|
+
"pre",
|
|
13
|
+
{
|
|
14
|
+
"data-ncm-block": block.id,
|
|
15
|
+
"data-ncm-stable": block.stableId,
|
|
16
|
+
"data-ncm-type": block.type,
|
|
17
|
+
"data-block-id": block.id,
|
|
18
|
+
"data-ncm-mermaid": "",
|
|
19
|
+
"data-ncm-diagram-type": block.diagramType,
|
|
20
|
+
className: cn(
|
|
21
|
+
"overflow-x-auto rounded-lg border border-border bg-muted p-4 font-mono text-sm",
|
|
22
|
+
className
|
|
23
|
+
),
|
|
24
|
+
children: /* @__PURE__ */ jsx("code", { children: block.content })
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { MermaidBlock };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { PageBreakerBlock as PageBreakerBlock$1 } from '@nuucognition/ncm';
|
|
3
|
+
import { a as BlockRendererProps } from '../../renderers-C5f41FCy.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
type PageBreakerBlockProps = BlockRendererProps<PageBreakerBlock$1>;
|
|
7
|
+
/**
|
|
8
|
+
* Page breaker — a non-rendered provenance marker.
|
|
9
|
+
*
|
|
10
|
+
* Emits a zero-height, aria-hidden anchor carrying `data-ncm-page` so consumers
|
|
11
|
+
* can locate where each source PDF page begins (e.g. to scroll-sync rendered
|
|
12
|
+
* markdown against the original PDF). It produces no visible output.
|
|
13
|
+
*/
|
|
14
|
+
declare function PageBreakerBlock({ block, className }: PageBreakerBlockProps): react_jsx_runtime.JSX.Element;
|
|
15
|
+
|
|
16
|
+
export { PageBreakerBlock, type PageBreakerBlockProps };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/blocks/page-breaker/page-breaker.tsx
|
|
5
|
+
function PageBreakerBlock({ block, className }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
"div",
|
|
8
|
+
{
|
|
9
|
+
"data-ncm-block": block.id,
|
|
10
|
+
"data-ncm-stable": block.stableId,
|
|
11
|
+
"data-ncm-type": block.type,
|
|
12
|
+
"data-block-id": block.id,
|
|
13
|
+
"data-ncm-page": block.page,
|
|
14
|
+
"aria-hidden": "true",
|
|
15
|
+
className,
|
|
16
|
+
style: { height: 0, margin: 0, padding: 0, border: 0 }
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { PageBreakerBlock };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ParagraphBlock as ParagraphBlock$1 } from '@nuucognition/ncm';
|
|
3
|
+
import { a as BlockRendererProps } from '../../renderers-C5f41FCy.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
type ParagraphBlockProps = BlockRendererProps<ParagraphBlock$1>;
|
|
7
|
+
declare function ParagraphBlock({ block, className }: ParagraphBlockProps): react_jsx_runtime.JSX.Element;
|
|
8
|
+
|
|
9
|
+
export { ParagraphBlock, type ParagraphBlockProps };
|