myst-to-react 0.1.18 → 0.1.20
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/cjs/admonitions.d.ts +32 -0
- package/dist/cjs/admonitions.d.ts.map +1 -0
- package/dist/cjs/admonitions.js +126 -0
- package/dist/cjs/basic.d.ts +62 -0
- package/dist/cjs/basic.d.ts.map +1 -0
- package/dist/cjs/basic.js +125 -0
- package/dist/cjs/card.d.ts +27 -0
- package/dist/cjs/card.d.ts.map +1 -0
- package/dist/cjs/card.js +64 -0
- package/dist/cjs/cite.d.ts +6 -0
- package/dist/cjs/cite.d.ts.map +1 -0
- package/dist/cjs/cite.js +36 -0
- package/dist/cjs/code.d.ts +21 -0
- package/dist/cjs/code.d.ts.map +1 -0
- package/dist/cjs/code.js +66 -0
- package/dist/cjs/components/ClickPopover.d.ts +11 -0
- package/dist/cjs/components/ClickPopover.d.ts.map +1 -0
- package/dist/cjs/components/ClickPopover.js +18 -0
- package/dist/cjs/components/CopyIcon.d.ts +5 -0
- package/dist/cjs/components/CopyIcon.d.ts.map +1 -0
- package/dist/cjs/components/CopyIcon.js +28 -0
- package/dist/cjs/components/HoverPopover.d.ts +9 -0
- package/dist/cjs/components/HoverPopover.d.ts.map +1 -0
- package/dist/cjs/components/HoverPopover.js +32 -0
- package/dist/cjs/components/LinkCard.d.ts +11 -0
- package/dist/cjs/components/LinkCard.d.ts.map +1 -0
- package/dist/cjs/components/LinkCard.js +15 -0
- package/dist/cjs/convertToReact.d.ts +6 -0
- package/dist/cjs/convertToReact.d.ts.map +1 -0
- package/dist/cjs/convertToReact.js +30 -0
- package/dist/cjs/crossReference.d.ts +13 -0
- package/dist/cjs/crossReference.d.ts.map +1 -0
- package/dist/cjs/crossReference.js +92 -0
- package/dist/cjs/dropdown.d.ts +16 -0
- package/dist/cjs/dropdown.d.ts.map +1 -0
- package/dist/cjs/dropdown.js +27 -0
- package/dist/cjs/extensions/chemicalFormula.d.ts +7 -0
- package/dist/cjs/extensions/chemicalFormula.d.ts.map +1 -0
- package/dist/cjs/extensions/chemicalFormula.js +39 -0
- package/dist/cjs/extensions/index.d.ts +4 -0
- package/dist/cjs/extensions/index.d.ts.map +1 -0
- package/dist/cjs/extensions/index.js +9 -0
- package/dist/cjs/extensions/siunits.d.ts +7 -0
- package/dist/cjs/extensions/siunits.d.ts.map +1 -0
- package/dist/cjs/extensions/siunits.js +12 -0
- package/dist/cjs/footnotes.d.ts +11 -0
- package/dist/cjs/footnotes.d.ts.map +1 -0
- package/dist/cjs/footnotes.js +24 -0
- package/dist/cjs/grid.d.ts +11 -0
- package/dist/cjs/grid.d.ts.map +1 -0
- package/dist/cjs/grid.js +117 -0
- package/dist/cjs/heading.d.ts +14 -0
- package/dist/cjs/heading.d.ts.map +1 -0
- package/dist/cjs/heading.js +40 -0
- package/dist/cjs/iframe.d.ts +7 -0
- package/dist/cjs/iframe.d.ts.map +1 -0
- package/dist/cjs/iframe.js +24 -0
- package/dist/cjs/image.d.ts +11 -0
- package/dist/cjs/image.d.ts.map +1 -0
- package/dist/cjs/image.js +52 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/inlineError.d.ts +8 -0
- package/dist/cjs/inlineError.d.ts.map +1 -0
- package/dist/cjs/inlineError.js +9 -0
- package/dist/cjs/links/github.d.ts +12 -0
- package/dist/cjs/links/github.d.ts.map +1 -0
- package/dist/cjs/links/github.js +63 -0
- package/dist/cjs/links/index.d.ts +14 -0
- package/dist/cjs/links/index.d.ts.map +1 -0
- package/dist/cjs/links/index.js +68 -0
- package/dist/cjs/links/rrid.d.ts +5 -0
- package/dist/cjs/links/rrid.d.ts.map +1 -0
- package/dist/cjs/links/rrid.js +35 -0
- package/dist/cjs/links/wiki.d.ts +8 -0
- package/dist/cjs/links/wiki.d.ts.map +1 -0
- package/dist/cjs/links/wiki.js +39 -0
- package/dist/cjs/math.d.ts +13 -0
- package/dist/cjs/math.d.ts.map +1 -0
- package/dist/cjs/math.js +29 -0
- package/dist/cjs/reactive.d.ts +88 -0
- package/dist/cjs/reactive.d.ts.map +1 -0
- package/dist/cjs/reactive.js +64 -0
- package/dist/cjs/tabs.d.ts +12 -0
- package/dist/cjs/tabs.d.ts.map +1 -0
- package/dist/cjs/tabs.js +38 -0
- package/dist/types/admonitions.d.ts +32 -0
- package/dist/types/admonitions.d.ts.map +1 -0
- package/dist/types/basic.d.ts +62 -0
- package/dist/types/basic.d.ts.map +1 -0
- package/dist/types/card.d.ts +27 -0
- package/dist/types/card.d.ts.map +1 -0
- package/dist/types/cite.d.ts +6 -0
- package/dist/types/cite.d.ts.map +1 -0
- package/dist/types/code.d.ts +21 -0
- package/dist/types/code.d.ts.map +1 -0
- package/dist/types/components/ClickPopover.d.ts +11 -0
- package/dist/types/components/ClickPopover.d.ts.map +1 -0
- package/dist/types/components/CopyIcon.d.ts +5 -0
- package/dist/types/components/CopyIcon.d.ts.map +1 -0
- package/dist/types/components/HoverPopover.d.ts +9 -0
- package/dist/types/components/HoverPopover.d.ts.map +1 -0
- package/dist/types/components/LinkCard.d.ts +11 -0
- package/dist/types/components/LinkCard.d.ts.map +1 -0
- package/dist/types/convertToReact.d.ts +6 -0
- package/dist/types/convertToReact.d.ts.map +1 -0
- package/dist/types/crossReference.d.ts +13 -0
- package/dist/types/crossReference.d.ts.map +1 -0
- package/dist/types/dropdown.d.ts +16 -0
- package/dist/types/dropdown.d.ts.map +1 -0
- package/dist/types/extensions/chemicalFormula.d.ts +7 -0
- package/dist/types/extensions/chemicalFormula.d.ts.map +1 -0
- package/dist/types/extensions/index.d.ts +4 -0
- package/dist/types/extensions/index.d.ts.map +1 -0
- package/dist/types/extensions/siunits.d.ts +7 -0
- package/dist/types/extensions/siunits.d.ts.map +1 -0
- package/dist/types/footnotes.d.ts +11 -0
- package/dist/types/footnotes.d.ts.map +1 -0
- package/dist/types/grid.d.ts +11 -0
- package/dist/types/grid.d.ts.map +1 -0
- package/dist/types/heading.d.ts +14 -0
- package/dist/types/heading.d.ts.map +1 -0
- package/dist/types/iframe.d.ts +7 -0
- package/dist/types/iframe.d.ts.map +1 -0
- package/dist/types/image.d.ts +11 -0
- package/dist/types/image.d.ts.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/inlineError.d.ts +8 -0
- package/dist/types/inlineError.d.ts.map +1 -0
- package/dist/types/links/github.d.ts +12 -0
- package/dist/types/links/github.d.ts.map +1 -0
- package/dist/types/links/index.d.ts +14 -0
- package/dist/types/links/index.d.ts.map +1 -0
- package/dist/types/links/rrid.d.ts +5 -0
- package/dist/types/links/rrid.d.ts.map +1 -0
- package/dist/types/links/wiki.d.ts +8 -0
- package/dist/types/links/wiki.d.ts.map +1 -0
- package/dist/types/math.d.ts +13 -0
- package/dist/types/math.d.ts.map +1 -0
- package/dist/types/reactive.d.ts +88 -0
- package/dist/types/reactive.d.ts.map +1 -0
- package/dist/types/tabs.d.ts +12 -0
- package/dist/types/tabs.d.ts.map +1 -0
- package/package.json +18 -21
- package/src/admonitions.tsx +0 -183
- package/src/basic.tsx +0 -229
- package/src/card.tsx +0 -153
- package/src/cite.tsx +0 -43
- package/src/code.tsx +0 -119
- package/src/components/ClickPopover.tsx +0 -56
- package/src/components/CopyIcon.tsx +0 -40
- package/src/components/HoverPopover.tsx +0 -60
- package/src/components/LinkCard.tsx +0 -42
- package/src/convertToReact.ts +0 -33
- package/src/crossReference.tsx +0 -139
- package/src/dropdown.tsx +0 -69
- package/src/extensions/chemicalFormula.tsx +0 -42
- package/src/extensions/index.tsx +0 -10
- package/src/extensions/siunits.tsx +0 -15
- package/src/footnotes.tsx +0 -30
- package/src/grid.tsx +0 -127
- package/src/heading.tsx +0 -68
- package/src/iframe.tsx +0 -42
- package/src/image.tsx +0 -97
- package/src/index.tsx +0 -65
- package/src/inlineError.tsx +0 -15
- package/src/links/index.tsx +0 -132
- package/src/links/rrid.tsx +0 -81
- package/src/links/wiki.tsx +0 -119
- package/src/math.tsx +0 -81
- package/src/mermaid.tsx +0 -49
- package/src/myst.tsx +0 -226
- package/src/output/components.tsx +0 -34
- package/src/output/error.tsx +0 -20
- package/src/output/hooks.ts +0 -127
- package/src/output/index.tsx +0 -7
- package/src/output/jupyter.tsx +0 -86
- package/src/output/output.tsx +0 -79
- package/src/output/outputBlock.tsx +0 -21
- package/src/output/safe.tsx +0 -84
- package/src/output/selectors.ts +0 -15
- package/src/output/stream.tsx +0 -18
- package/src/reactive.tsx +0 -64
- package/src/tabs.tsx +0 -63
- package/src/types.ts +0 -6
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type * as spec from 'myst-spec';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { NodeRenderer } from '@myst-theme/providers';
|
|
4
|
+
export declare enum AdmonitionKind {
|
|
5
|
+
admonition = "admonition",
|
|
6
|
+
attention = "attention",
|
|
7
|
+
caution = "caution",
|
|
8
|
+
danger = "danger",
|
|
9
|
+
error = "error",
|
|
10
|
+
important = "important",
|
|
11
|
+
hint = "hint",
|
|
12
|
+
note = "note",
|
|
13
|
+
seealso = "seealso",
|
|
14
|
+
tip = "tip",
|
|
15
|
+
warning = "warning"
|
|
16
|
+
}
|
|
17
|
+
type Color = 'blue' | 'green' | 'yellow' | 'red';
|
|
18
|
+
export declare const AdmonitionTitle: NodeRenderer<spec.AdmonitionTitle>;
|
|
19
|
+
export declare function Admonition({ title, kind, color, dropdown, children, }: {
|
|
20
|
+
title?: React.ReactNode;
|
|
21
|
+
color?: Color;
|
|
22
|
+
kind?: AdmonitionKind;
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
dropdown?: boolean;
|
|
25
|
+
}): JSX.Element;
|
|
26
|
+
export declare const AdmonitionRenderer: NodeRenderer<spec.Admonition>;
|
|
27
|
+
declare const ADMONITION_RENDERERS: {
|
|
28
|
+
admonition: NodeRenderer<spec.Admonition>;
|
|
29
|
+
admonitionTitle: NodeRenderer<spec.AdmonitionTitle>;
|
|
30
|
+
};
|
|
31
|
+
export default ADMONITION_RENDERERS;
|
|
32
|
+
//# sourceMappingURL=admonitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admonitions.d.ts","sourceRoot":"","sources":["../../src/admonitions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AACvC,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAoB1D,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAuEjD,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,eAAe,CAE9D,CAAC;AAEF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,eAgDA;AAED,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAoB5D,CAAC;AAEF,QAAA,MAAM,oBAAoB;;;CAGzB,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AdmonitionRenderer = exports.Admonition = exports.AdmonitionTitle = exports.AdmonitionKind = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const outline_1 = require("@heroicons/react/24/outline");
|
|
10
|
+
const solid_1 = require("@heroicons/react/24/solid");
|
|
11
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
12
|
+
// import { AdmonitionKind } from 'mystjs';
|
|
13
|
+
// TODO: get this from myst-spec?
|
|
14
|
+
var AdmonitionKind;
|
|
15
|
+
(function (AdmonitionKind) {
|
|
16
|
+
AdmonitionKind["admonition"] = "admonition";
|
|
17
|
+
AdmonitionKind["attention"] = "attention";
|
|
18
|
+
AdmonitionKind["caution"] = "caution";
|
|
19
|
+
AdmonitionKind["danger"] = "danger";
|
|
20
|
+
AdmonitionKind["error"] = "error";
|
|
21
|
+
AdmonitionKind["important"] = "important";
|
|
22
|
+
AdmonitionKind["hint"] = "hint";
|
|
23
|
+
AdmonitionKind["note"] = "note";
|
|
24
|
+
AdmonitionKind["seealso"] = "seealso";
|
|
25
|
+
AdmonitionKind["tip"] = "tip";
|
|
26
|
+
AdmonitionKind["warning"] = "warning";
|
|
27
|
+
})(AdmonitionKind = exports.AdmonitionKind || (exports.AdmonitionKind = {}));
|
|
28
|
+
function getClasses(className) {
|
|
29
|
+
var _a;
|
|
30
|
+
const classes = (_a = className === null || className === void 0 ? void 0 : className.split(' ').map((s) => s.trim().toLowerCase()).filter((s) => !!s)) !== null && _a !== void 0 ? _a : [];
|
|
31
|
+
return [...new Set(classes)];
|
|
32
|
+
}
|
|
33
|
+
function getFirstKind({ kind, classes = [], }) {
|
|
34
|
+
if (kind === AdmonitionKind.note || classes.includes('note')) {
|
|
35
|
+
return { kind: AdmonitionKind.note, color: 'blue' };
|
|
36
|
+
}
|
|
37
|
+
if (kind === AdmonitionKind.important || classes.includes('important')) {
|
|
38
|
+
return { kind: AdmonitionKind.important, color: 'blue' };
|
|
39
|
+
}
|
|
40
|
+
if (kind === AdmonitionKind.hint || classes.includes('hint')) {
|
|
41
|
+
return { kind: AdmonitionKind.hint, color: 'green' };
|
|
42
|
+
}
|
|
43
|
+
if (kind === AdmonitionKind.seealso || classes.includes('seealso')) {
|
|
44
|
+
return { kind: AdmonitionKind.seealso, color: 'green' };
|
|
45
|
+
}
|
|
46
|
+
if (kind === AdmonitionKind.tip || classes.includes('tip')) {
|
|
47
|
+
return { kind: AdmonitionKind.tip, color: 'green' };
|
|
48
|
+
}
|
|
49
|
+
if (kind === AdmonitionKind.attention || classes.includes('attention')) {
|
|
50
|
+
return { kind: AdmonitionKind.attention, color: 'yellow' };
|
|
51
|
+
}
|
|
52
|
+
if (kind === AdmonitionKind.warning || classes.includes('warning')) {
|
|
53
|
+
return { kind: AdmonitionKind.warning, color: 'yellow' };
|
|
54
|
+
}
|
|
55
|
+
if (kind === AdmonitionKind.caution || classes.includes('caution')) {
|
|
56
|
+
return { kind: AdmonitionKind.caution, color: 'yellow' };
|
|
57
|
+
}
|
|
58
|
+
if (kind === AdmonitionKind.danger || classes.includes('danger')) {
|
|
59
|
+
return { kind: AdmonitionKind.danger, color: 'red' };
|
|
60
|
+
}
|
|
61
|
+
if (kind === AdmonitionKind.error || classes.includes('error')) {
|
|
62
|
+
return { kind: AdmonitionKind.error, color: 'red' };
|
|
63
|
+
}
|
|
64
|
+
return { kind: AdmonitionKind.note, color: 'blue' };
|
|
65
|
+
}
|
|
66
|
+
const iconClass = 'h-8 w-8 inline-block pl-2 mr-2 -translate-y-[1px]';
|
|
67
|
+
function AdmonitionIcon({ kind }) {
|
|
68
|
+
if (kind === AdmonitionKind.note)
|
|
69
|
+
return (0, jsx_runtime_1.jsx)(outline_1.InformationCircleIcon, { className: iconClass });
|
|
70
|
+
if (kind === AdmonitionKind.caution)
|
|
71
|
+
return (0, jsx_runtime_1.jsx)(outline_1.ExclamationCircleIcon, { className: iconClass });
|
|
72
|
+
if (kind === AdmonitionKind.warning)
|
|
73
|
+
return (0, jsx_runtime_1.jsx)(solid_1.ExclamationTriangleIcon, { className: iconClass });
|
|
74
|
+
if (kind === AdmonitionKind.danger)
|
|
75
|
+
return (0, jsx_runtime_1.jsx)(solid_1.ExclamationCircleIcon, { className: iconClass });
|
|
76
|
+
if (kind === AdmonitionKind.error)
|
|
77
|
+
return (0, jsx_runtime_1.jsx)(solid_1.XCircleIcon, { className: iconClass });
|
|
78
|
+
if (kind === AdmonitionKind.attention)
|
|
79
|
+
return (0, jsx_runtime_1.jsx)(outline_1.MegaphoneIcon, { className: iconClass });
|
|
80
|
+
if (kind === AdmonitionKind.tip)
|
|
81
|
+
return (0, jsx_runtime_1.jsx)(outline_1.PencilSquareIcon, { className: iconClass });
|
|
82
|
+
if (kind === AdmonitionKind.hint)
|
|
83
|
+
return (0, jsx_runtime_1.jsx)(outline_1.LightBulbIcon, { className: iconClass });
|
|
84
|
+
if (kind === AdmonitionKind.important)
|
|
85
|
+
return (0, jsx_runtime_1.jsx)(solid_1.BoltIcon, { className: iconClass });
|
|
86
|
+
if (kind === AdmonitionKind.seealso)
|
|
87
|
+
return (0, jsx_runtime_1.jsx)(outline_1.ArrowRightCircleIcon, { className: iconClass });
|
|
88
|
+
return (0, jsx_runtime_1.jsx)(outline_1.InformationCircleIcon, { className: iconClass });
|
|
89
|
+
}
|
|
90
|
+
const AdmonitionTitle = (node, children) => {
|
|
91
|
+
return children;
|
|
92
|
+
};
|
|
93
|
+
exports.AdmonitionTitle = AdmonitionTitle;
|
|
94
|
+
function Admonition({ title, kind, color, dropdown, children, }) {
|
|
95
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)("aside", Object.assign({ className: (0, classnames_1.default)('admonition rounded-md my-4 border-l-4 shadow-md dark:shadow-2xl dark:shadow-neutral-900', {
|
|
97
|
+
'border-blue-500': !color || color === 'blue',
|
|
98
|
+
'border-green-600': color === 'green',
|
|
99
|
+
'border-amber-600': color === 'yellow',
|
|
100
|
+
'border-red-600': color === 'red',
|
|
101
|
+
}) }, { children: [title && ((0, jsx_runtime_1.jsxs)("p", Object.assign({ className: (0, classnames_1.default)('admonition-header m-0 text-lg font-medium py-1', {
|
|
102
|
+
'text-blue-600 bg-blue-50 dark:bg-slate-900': !color || color === 'blue',
|
|
103
|
+
'text-green-600 bg-green-50 dark:bg-slate-900': color === 'green',
|
|
104
|
+
'text-amber-600 bg-amber-50 dark:bg-slate-900': color === 'yellow',
|
|
105
|
+
'text-red-600 bg-red-50 dark:bg-slate-900': color === 'red',
|
|
106
|
+
'cursor-pointer hover:shadow-[inset_0_0_0px_20px_#00000003] dark:hover:shadow-[inset_0_0_0px_20px_#FFFFFF03]': dropdown,
|
|
107
|
+
}), onClick: dropdown ? () => setOpen(!open) : undefined }, { children: [(0, jsx_runtime_1.jsx)(AdmonitionIcon, { kind: kind !== null && kind !== void 0 ? kind : AdmonitionKind.note }), (0, jsx_runtime_1.jsxs)("span", Object.assign({ className: "text-neutral-900 dark:text-white" }, { children: [dropdown && ((0, jsx_runtime_1.jsxs)("span", Object.assign({ className: "block float-right font-thin text-sm text-neutral-700 dark:text-neutral-200" }, { children: [!open && 'Click to show', (0, jsx_runtime_1.jsx)(solid_1.ChevronRightIcon, { className: (0, classnames_1.default)(iconClass, 'transition-transform', {
|
|
108
|
+
'rotate-90 -translate-y-[5px]': open,
|
|
109
|
+
}) })] }))), title] }))] }))), (!dropdown || open) && ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "px-4 py-1 bg-gray-50 dark:bg-stone-800" }, { children: children })))] })));
|
|
110
|
+
}
|
|
111
|
+
exports.Admonition = Admonition;
|
|
112
|
+
const AdmonitionRenderer = (node, children) => {
|
|
113
|
+
var _a;
|
|
114
|
+
const [title, ...rest] = children;
|
|
115
|
+
const classes = getClasses(node.class);
|
|
116
|
+
const { kind, color } = getFirstKind({ kind: node.kind, classes });
|
|
117
|
+
const isDropdown = classes.includes('dropdown');
|
|
118
|
+
const useTitle = ((_a = node.children) === null || _a === void 0 ? void 0 : _a[0].type) === 'admonitionTitle';
|
|
119
|
+
return ((0, jsx_runtime_1.jsxs)(Admonition, Object.assign({ title: useTitle ? title : undefined, kind: kind, color: color, dropdown: isDropdown }, { children: [!useTitle && title, rest] }), node.key));
|
|
120
|
+
};
|
|
121
|
+
exports.AdmonitionRenderer = AdmonitionRenderer;
|
|
122
|
+
const ADMONITION_RENDERERS = {
|
|
123
|
+
admonition: exports.AdmonitionRenderer,
|
|
124
|
+
admonitionTitle: exports.AdmonitionTitle,
|
|
125
|
+
};
|
|
126
|
+
exports.default = ADMONITION_RENDERERS;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type * as spec from 'myst-spec';
|
|
2
|
+
import type { NodeRenderer } from '@myst-theme/providers';
|
|
3
|
+
type TableExts = {
|
|
4
|
+
rowspan?: number;
|
|
5
|
+
colspan?: number;
|
|
6
|
+
};
|
|
7
|
+
type Delete = {
|
|
8
|
+
type: 'delete';
|
|
9
|
+
};
|
|
10
|
+
type Underline = {
|
|
11
|
+
type: 'underline';
|
|
12
|
+
};
|
|
13
|
+
type SmallCaps = {
|
|
14
|
+
type: 'smallcaps';
|
|
15
|
+
};
|
|
16
|
+
type DefinitionList = {
|
|
17
|
+
type: 'definitionList';
|
|
18
|
+
};
|
|
19
|
+
type DefinitionTerm = {
|
|
20
|
+
type: 'definitionTerm';
|
|
21
|
+
};
|
|
22
|
+
type DefinitionDescription = {
|
|
23
|
+
type: 'definitionDescription';
|
|
24
|
+
};
|
|
25
|
+
type CaptionNumber = {
|
|
26
|
+
type: 'captionNumber';
|
|
27
|
+
kind: string;
|
|
28
|
+
identifier: string;
|
|
29
|
+
};
|
|
30
|
+
type BasicNodeRenderers = {
|
|
31
|
+
strong: NodeRenderer<spec.Strong>;
|
|
32
|
+
emphasis: NodeRenderer<spec.Emphasis>;
|
|
33
|
+
link: NodeRenderer<spec.Link>;
|
|
34
|
+
paragraph: NodeRenderer<spec.Paragraph>;
|
|
35
|
+
break: NodeRenderer<spec.Break>;
|
|
36
|
+
inlineMath: NodeRenderer<spec.InlineMath>;
|
|
37
|
+
math: NodeRenderer<spec.Math>;
|
|
38
|
+
list: NodeRenderer<spec.List>;
|
|
39
|
+
listItem: NodeRenderer<spec.ListItem>;
|
|
40
|
+
container: NodeRenderer<spec.Container>;
|
|
41
|
+
caption: NodeRenderer<spec.Caption>;
|
|
42
|
+
blockquote: NodeRenderer<spec.Blockquote>;
|
|
43
|
+
thematicBreak: NodeRenderer<spec.ThematicBreak>;
|
|
44
|
+
subscript: NodeRenderer<spec.Subscript>;
|
|
45
|
+
superscript: NodeRenderer<spec.Superscript>;
|
|
46
|
+
abbreviation: NodeRenderer<spec.Abbreviation>;
|
|
47
|
+
table: NodeRenderer<spec.Table>;
|
|
48
|
+
tableRow: NodeRenderer<spec.TableRow>;
|
|
49
|
+
tableCell: NodeRenderer<spec.TableCell & TableExts>;
|
|
50
|
+
comment: NodeRenderer<spec.Comment>;
|
|
51
|
+
mystComment: NodeRenderer<spec.Comment>;
|
|
52
|
+
captionNumber: NodeRenderer<CaptionNumber>;
|
|
53
|
+
delete: NodeRenderer<Delete>;
|
|
54
|
+
underline: NodeRenderer<Underline>;
|
|
55
|
+
smallcaps: NodeRenderer<SmallCaps>;
|
|
56
|
+
definitionList: NodeRenderer<DefinitionList>;
|
|
57
|
+
definitionTerm: NodeRenderer<DefinitionTerm>;
|
|
58
|
+
definitionDescription: NodeRenderer<DefinitionDescription>;
|
|
59
|
+
};
|
|
60
|
+
declare const BASIC_RENDERERS: BasicNodeRenderers;
|
|
61
|
+
export default BASIC_RENDERERS;
|
|
62
|
+
//# sourceMappingURL=basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/basic.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const heading_1 = require("./heading");
|
|
5
|
+
const BASIC_RENDERERS = {
|
|
6
|
+
delete(node, children) {
|
|
7
|
+
return (0, jsx_runtime_1.jsx)("del", { children: children }, node.key);
|
|
8
|
+
},
|
|
9
|
+
strong(node, children) {
|
|
10
|
+
return (0, jsx_runtime_1.jsx)("strong", { children: children }, node.key);
|
|
11
|
+
},
|
|
12
|
+
emphasis(node, children) {
|
|
13
|
+
return (0, jsx_runtime_1.jsx)("em", { children: children }, node.key);
|
|
14
|
+
},
|
|
15
|
+
underline(node, children) {
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)("span", Object.assign({ style: { textDecoration: 'underline' } }, { children: children }), node.key));
|
|
17
|
+
},
|
|
18
|
+
smallcaps(node, children) {
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("span", Object.assign({ style: { fontVariant: 'small-caps' } }, { children: children }), node.key));
|
|
20
|
+
},
|
|
21
|
+
link(node, children) {
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)("a", Object.assign({ target: "_blank", href: node.url, rel: "noreferrer" }, { children: children }), node.key));
|
|
23
|
+
},
|
|
24
|
+
paragraph(node, children) {
|
|
25
|
+
return (0, jsx_runtime_1.jsx)("p", { children: children }, node.key);
|
|
26
|
+
},
|
|
27
|
+
break(node) {
|
|
28
|
+
return (0, jsx_runtime_1.jsx)("br", {}, node.key);
|
|
29
|
+
},
|
|
30
|
+
inlineMath(node) {
|
|
31
|
+
return (0, jsx_runtime_1.jsx)("code", { children: node.value }, node.key);
|
|
32
|
+
},
|
|
33
|
+
math(node) {
|
|
34
|
+
return (0, jsx_runtime_1.jsx)("code", { children: node.value }, node.key);
|
|
35
|
+
},
|
|
36
|
+
list(node, children) {
|
|
37
|
+
if (node.ordered) {
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)("ol", Object.assign({ start: node.start || undefined }, { children: children }), node.key));
|
|
39
|
+
}
|
|
40
|
+
return (0, jsx_runtime_1.jsx)("ul", { children: children }, node.key);
|
|
41
|
+
},
|
|
42
|
+
listItem(node, children) {
|
|
43
|
+
return (0, jsx_runtime_1.jsx)("li", { children: children }, node.key);
|
|
44
|
+
},
|
|
45
|
+
container(node, children) {
|
|
46
|
+
return ((0, jsx_runtime_1.jsx)("figure", Object.assign({ id: node.html_id || node.identifier || node.key, className: node.kind }, { children: children }), node.key));
|
|
47
|
+
},
|
|
48
|
+
caption(node, children) {
|
|
49
|
+
return ((0, jsx_runtime_1.jsx)("figcaption", Object.assign({ className: "group" }, { children: children }), node.key));
|
|
50
|
+
},
|
|
51
|
+
blockquote(node, children) {
|
|
52
|
+
return (0, jsx_runtime_1.jsx)("blockquote", { children: children }, node.key);
|
|
53
|
+
},
|
|
54
|
+
thematicBreak(node) {
|
|
55
|
+
return (0, jsx_runtime_1.jsx)("hr", {}, node.key);
|
|
56
|
+
},
|
|
57
|
+
captionNumber(node, children) {
|
|
58
|
+
function backwardsCompatibleLabel(value, kind) {
|
|
59
|
+
var _a, _b;
|
|
60
|
+
const capital = (_a = kind === null || kind === void 0 ? void 0 : kind.slice(0, 1).toUpperCase()) !== null && _a !== void 0 ? _a : 'F';
|
|
61
|
+
const body = (_b = kind === null || kind === void 0 ? void 0 : kind.slice(1)) !== null && _b !== void 0 ? _b : 'igure';
|
|
62
|
+
return `${capital}${body}: ${children}`;
|
|
63
|
+
}
|
|
64
|
+
const label = typeof children === 'string' ? backwardsCompatibleLabel(children, node.kind) : children;
|
|
65
|
+
const id = node.html_id || node.identifier || node.key;
|
|
66
|
+
return ((0, jsx_runtime_1.jsxs)("span", Object.assign({ className: "font-bold mr-1 select-none relative" }, { children: [(0, jsx_runtime_1.jsx)(heading_1.HashLink, { id: id, align: "left", kind: node.kind }), label] }), node.key));
|
|
67
|
+
},
|
|
68
|
+
table(node, children) {
|
|
69
|
+
// TODO: actually render the tbody on the server if it isn't included here.
|
|
70
|
+
return ((0, jsx_runtime_1.jsx)("table", { children: (0, jsx_runtime_1.jsx)("tbody", { children: children }) }, node.key));
|
|
71
|
+
},
|
|
72
|
+
tableRow(node, children) {
|
|
73
|
+
return (0, jsx_runtime_1.jsx)("tr", { children: children }, node.key);
|
|
74
|
+
},
|
|
75
|
+
tableCell(node, children) {
|
|
76
|
+
const ifGreaterThanOne = (num) => (num === 1 ? undefined : num);
|
|
77
|
+
const attrs = {
|
|
78
|
+
key: node.key,
|
|
79
|
+
rowSpan: ifGreaterThanOne(node.rowspan),
|
|
80
|
+
colSpan: ifGreaterThanOne(node.colspan),
|
|
81
|
+
};
|
|
82
|
+
if (node.header)
|
|
83
|
+
return (0, jsx_runtime_1.jsx)("th", Object.assign({}, attrs, { children: children }));
|
|
84
|
+
return (0, jsx_runtime_1.jsx)("td", Object.assign({}, attrs, { children: children }));
|
|
85
|
+
},
|
|
86
|
+
subscript(node, children) {
|
|
87
|
+
return (0, jsx_runtime_1.jsx)("sub", { children: children }, node.key);
|
|
88
|
+
},
|
|
89
|
+
superscript(node, children) {
|
|
90
|
+
return (0, jsx_runtime_1.jsx)("sup", { children: children }, node.key);
|
|
91
|
+
},
|
|
92
|
+
abbreviation(node, children) {
|
|
93
|
+
return ((0, jsx_runtime_1.jsx)("abbr", Object.assign({ title: node.title }, { children: children }), node.key));
|
|
94
|
+
},
|
|
95
|
+
mystComment() {
|
|
96
|
+
return null;
|
|
97
|
+
},
|
|
98
|
+
comment() {
|
|
99
|
+
return null;
|
|
100
|
+
},
|
|
101
|
+
definitionList(node, children) {
|
|
102
|
+
return (0, jsx_runtime_1.jsx)("dl", { children: children }, node.key);
|
|
103
|
+
},
|
|
104
|
+
definitionTerm(node, children) {
|
|
105
|
+
let strongChildren = children;
|
|
106
|
+
if (Array.isArray(children)) {
|
|
107
|
+
const allowedStrongTypes = new Set(['emphasis']);
|
|
108
|
+
strongChildren = children.map((child, i) => {
|
|
109
|
+
if (typeof child === 'string')
|
|
110
|
+
return (0, jsx_runtime_1.jsx)("strong", { children: child }, node.key + i);
|
|
111
|
+
if (allowedStrongTypes.has(child === null || child === void 0 ? void 0 : child.type))
|
|
112
|
+
return (0, jsx_runtime_1.jsx)("strong", { children: child }, node.key + i);
|
|
113
|
+
return child;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else if (typeof children === 'string') {
|
|
117
|
+
strongChildren = (0, jsx_runtime_1.jsx)("strong", { children: children }, node.key + '0');
|
|
118
|
+
}
|
|
119
|
+
return (0, jsx_runtime_1.jsx)("dt", { children: strongChildren }, node.key);
|
|
120
|
+
},
|
|
121
|
+
definitionDescription(node, children) {
|
|
122
|
+
return (0, jsx_runtime_1.jsx)("dd", { children: children }, node.key);
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
exports.default = BASIC_RENDERERS;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { NodeRenderer } from '@myst-theme/providers';
|
|
2
|
+
type CardSpec = {
|
|
3
|
+
type: 'card';
|
|
4
|
+
url?: string;
|
|
5
|
+
static?: boolean;
|
|
6
|
+
};
|
|
7
|
+
type CardTitleSpec = {
|
|
8
|
+
type: 'cardTitle';
|
|
9
|
+
};
|
|
10
|
+
type HeaderSpec = {
|
|
11
|
+
type: 'header';
|
|
12
|
+
};
|
|
13
|
+
type FooterSpec = {
|
|
14
|
+
type: 'footer';
|
|
15
|
+
};
|
|
16
|
+
export declare const Header: NodeRenderer<HeaderSpec>;
|
|
17
|
+
export declare const Footer: NodeRenderer<FooterSpec>;
|
|
18
|
+
export declare const CardTitle: NodeRenderer<CardTitleSpec>;
|
|
19
|
+
export declare const CardRenderer: NodeRenderer<CardSpec>;
|
|
20
|
+
declare const CARD_RENDERERS: {
|
|
21
|
+
card: NodeRenderer<CardSpec>;
|
|
22
|
+
cardTitle: NodeRenderer<CardTitleSpec>;
|
|
23
|
+
header: NodeRenderer<HeaderSpec>;
|
|
24
|
+
footer: NodeRenderer<FooterSpec>;
|
|
25
|
+
};
|
|
26
|
+
export default CARD_RENDERERS;
|
|
27
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AACF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AACF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AACF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,YAAY,CAAC,UAAU,CAS3C,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,YAAY,CAAC,UAAU,CAS3C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,YAAY,CAAC,aAAa,CAMjD,CAAC;AA0FF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,QAAQ,CAM/C,CAAC;AAEF,QAAA,MAAM,cAAc;;;;;CAKnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
package/dist/cjs/card.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CardRenderer = exports.CardTitle = exports.Footer = exports.Header = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
9
|
+
const providers_1 = require("@myst-theme/providers");
|
|
10
|
+
const Header = (node, children) => {
|
|
11
|
+
return ((0, jsx_runtime_1.jsx)("header", Object.assign({ className: "m-0 py-1 pl-3 bg-gray-50 dark:bg-slate-900 border-b border-gray-100 dark:border-gray-800" }, { children: children }), node.key));
|
|
12
|
+
};
|
|
13
|
+
exports.Header = Header;
|
|
14
|
+
const Footer = (node, children) => {
|
|
15
|
+
return ((0, jsx_runtime_1.jsx)("footer", Object.assign({ className: "m-0 py-1 pl-3 bg-gray-50 dark:bg-slate-900 border-t border-gray-100 dark:border-gray-800" }, { children: children }), node.key));
|
|
16
|
+
};
|
|
17
|
+
exports.Footer = Footer;
|
|
18
|
+
const CardTitle = (node, children) => {
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "pt-3 font-bold group-hover:underline" }, { children: children }), node.key));
|
|
20
|
+
};
|
|
21
|
+
exports.CardTitle = CardTitle;
|
|
22
|
+
function getParts(children) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
const parts = {};
|
|
25
|
+
if (!Array.isArray(children))
|
|
26
|
+
return parts;
|
|
27
|
+
const next = [...children];
|
|
28
|
+
if (((_a = next[0]) === null || _a === void 0 ? void 0 : _a.type) === 'header') {
|
|
29
|
+
parts.header = next.splice(0, 1);
|
|
30
|
+
}
|
|
31
|
+
if (((_b = next[next.length - 1]) === null || _b === void 0 ? void 0 : _b.type) === 'footer') {
|
|
32
|
+
parts.footer = next.splice(-1, 1);
|
|
33
|
+
}
|
|
34
|
+
parts.body = next;
|
|
35
|
+
return parts;
|
|
36
|
+
}
|
|
37
|
+
function ExternalOrInternalLink({ to, className, isStatic, prefetch = 'intent', children, }) {
|
|
38
|
+
const Link = (0, providers_1.useLinkProvider)();
|
|
39
|
+
const urlbase = (0, providers_1.useUrlbase)();
|
|
40
|
+
if (to.startsWith('http') || isStatic) {
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)("a", Object.assign({ href: to, className: className, target: "_blank", rel: "noopener noreferrer" }, { children: children })));
|
|
42
|
+
}
|
|
43
|
+
return ((0, jsx_runtime_1.jsx)(Link, Object.assign({ to: (0, providers_1.withUrlbase)(to, urlbase), className: className, prefetch: prefetch }, { children: children })));
|
|
44
|
+
}
|
|
45
|
+
function Card({ children, url, isStatic, }) {
|
|
46
|
+
const parts = getParts(children);
|
|
47
|
+
const link = !!url;
|
|
48
|
+
const sharedStyle = 'my-4 rounded-md shadow dark:shadow-neutral-800 overflow-hidden border border-gray-100 dark:border-gray-800 flex flex-col';
|
|
49
|
+
if (link) {
|
|
50
|
+
return ((0, jsx_runtime_1.jsxs)(ExternalOrInternalLink, Object.assign({ to: url, isStatic: isStatic, className: (0, classnames_1.default)(sharedStyle, 'block font-normal no-underline cursor-pointer group', 'hover:border-blue-500 dark:hover:border-blue-400') }, { children: [parts.header, (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "py-2 px-4 flex-grow" }, { children: parts.body })), parts.footer] })));
|
|
51
|
+
}
|
|
52
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: sharedStyle }, { children: [parts.header, (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "py-2 px-4 flex-grow" }, { children: parts.body })), parts.footer] })));
|
|
53
|
+
}
|
|
54
|
+
const CardRenderer = (node, children) => {
|
|
55
|
+
return ((0, jsx_runtime_1.jsx)(Card, Object.assign({ url: node.url, isStatic: node.static || false }, { children: children }), node.key));
|
|
56
|
+
};
|
|
57
|
+
exports.CardRenderer = CardRenderer;
|
|
58
|
+
const CARD_RENDERERS = {
|
|
59
|
+
card: exports.CardRenderer,
|
|
60
|
+
cardTitle: exports.CardTitle,
|
|
61
|
+
header: exports.Header,
|
|
62
|
+
footer: exports.Footer,
|
|
63
|
+
};
|
|
64
|
+
exports.default = CARD_RENDERERS;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NodeRenderer } from '@myst-theme/providers';
|
|
2
|
+
export declare const CiteGroup: NodeRenderer;
|
|
3
|
+
export declare const Cite: NodeRenderer;
|
|
4
|
+
declare const CITE_RENDERERS: Record<string, NodeRenderer>;
|
|
5
|
+
export default CITE_RENDERERS;
|
|
6
|
+
//# sourceMappingURL=cite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cite.d.ts","sourceRoot":"","sources":["../../src/cite.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAU1D,eAAO,MAAM,SAAS,EAAE,YAYvB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,YASlB,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAGhD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
package/dist/cjs/cite.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Cite = exports.CiteGroup = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
9
|
+
const providers_1 = require("@myst-theme/providers");
|
|
10
|
+
const ClickPopover_1 = require("./components/ClickPopover");
|
|
11
|
+
const inlineError_1 = require("./inlineError");
|
|
12
|
+
function CiteChild({ label }) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const references = (0, providers_1.useReferences)();
|
|
15
|
+
const { html } = (_b = (_a = references === null || references === void 0 ? void 0 : references.cite) === null || _a === void 0 ? void 0 : _a.data[label]) !== null && _b !== void 0 ? _b : {};
|
|
16
|
+
return (0, jsx_runtime_1.jsx)("div", { dangerouslySetInnerHTML: { __html: html || '' } });
|
|
17
|
+
}
|
|
18
|
+
const CiteGroup = (node, children) => {
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("span", Object.assign({ className: (0, classnames_1.default)('cite-group', {
|
|
20
|
+
narrative: node.kind === 'narrative',
|
|
21
|
+
parenthetical: node.kind === 'parenthetical',
|
|
22
|
+
}) }, { children: children }), node.key));
|
|
23
|
+
};
|
|
24
|
+
exports.CiteGroup = CiteGroup;
|
|
25
|
+
const Cite = (node, children) => {
|
|
26
|
+
if (node.error) {
|
|
27
|
+
return (0, jsx_runtime_1.jsx)(inlineError_1.InlineError, { value: node.label, message: 'Citation Not Found' }, node.key);
|
|
28
|
+
}
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)(ClickPopover_1.ClickPopover, Object.assign({ card: (0, jsx_runtime_1.jsx)(CiteChild, { label: node.label }) }, { children: children }), node.key));
|
|
30
|
+
};
|
|
31
|
+
exports.Cite = Cite;
|
|
32
|
+
const CITE_RENDERERS = {
|
|
33
|
+
citeGroup: exports.CiteGroup,
|
|
34
|
+
cite: exports.Cite,
|
|
35
|
+
};
|
|
36
|
+
exports.default = CITE_RENDERERS;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Code, InlineCode } from 'myst-spec';
|
|
3
|
+
import type { NodeRenderer } from '@myst-theme/providers';
|
|
4
|
+
type Props = {
|
|
5
|
+
value: string;
|
|
6
|
+
lang?: string;
|
|
7
|
+
showCopy?: boolean;
|
|
8
|
+
showLineNumbers?: boolean;
|
|
9
|
+
startingLineNumber?: number;
|
|
10
|
+
emphasizeLines?: number[];
|
|
11
|
+
filename?: string;
|
|
12
|
+
border?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function CodeBlock(props: Props): JSX.Element;
|
|
16
|
+
declare const CODE_RENDERERS: {
|
|
17
|
+
code: NodeRenderer<Code>;
|
|
18
|
+
inlineCode: NodeRenderer<InlineCode>;
|
|
19
|
+
};
|
|
20
|
+
export default CODE_RENDERERS;
|
|
21
|
+
//# sourceMappingURL=code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/code.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAQ1D,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,eA2DrC;AA2CD,QAAA,MAAM,cAAc;;;CAGnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
package/dist/cjs/code.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CodeBlock = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const providers_1 = require("@myst-theme/providers");
|
|
9
|
+
const react_syntax_highlighter_1 = require("react-syntax-highlighter");
|
|
10
|
+
const xcode_1 = __importDefault(require("react-syntax-highlighter/dist/cjs/styles/hljs/xcode"));
|
|
11
|
+
const vs2015_1 = __importDefault(require("react-syntax-highlighter/dist/cjs/styles/hljs/vs2015"));
|
|
12
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
13
|
+
const CopyIcon_1 = require("./components/CopyIcon");
|
|
14
|
+
function CodeBlock(props) {
|
|
15
|
+
const { isLight } = (0, providers_1.useTheme)();
|
|
16
|
+
const { value, lang, emphasizeLines, showLineNumbers, className, showCopy = true, startingLineNumber = 1, filename, border, } = props;
|
|
17
|
+
const highlightLines = new Set(emphasizeLines);
|
|
18
|
+
const borderClass = 'rounded shadow-md dark:shadow-2xl dark:shadow-neutral-900 my-8 text-sm border border-l-4 border-l-blue-400 border-gray-200 dark:border-l-blue-400 dark:border-gray-800';
|
|
19
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: (0, classnames_1.default)('relative group not-prose overflow-auto', className, {
|
|
20
|
+
[borderClass]: border,
|
|
21
|
+
}) }, { children: [filename && (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "leading-3 mt-1 p-1" }, { children: filename })), (0, jsx_runtime_1.jsx)(react_syntax_highlighter_1.LightAsync, Object.assign({ language: lang, startingLineNumber: startingLineNumber, showLineNumbers: showLineNumbers, style: isLight ? xcode_1.default : vs2015_1.default, wrapLines: true, lineNumberContainerStyle: {
|
|
22
|
+
// This stops page content shifts
|
|
23
|
+
display: 'inline-block',
|
|
24
|
+
float: 'left',
|
|
25
|
+
minWidth: '1.25em',
|
|
26
|
+
paddingRight: '1em',
|
|
27
|
+
textAlign: 'right',
|
|
28
|
+
userSelect: 'none',
|
|
29
|
+
borderLeft: '4px solid transparent',
|
|
30
|
+
}, lineProps: (line) => {
|
|
31
|
+
if (typeof line === 'boolean')
|
|
32
|
+
return {};
|
|
33
|
+
return highlightLines.has(line)
|
|
34
|
+
? {
|
|
35
|
+
'data-line-number': `${line}`,
|
|
36
|
+
'data-highlight': 'true',
|
|
37
|
+
}
|
|
38
|
+
: { 'data-line-number': `${line}` };
|
|
39
|
+
}, customStyle: { padding: '0.8rem' } }, { children: value })), showCopy && ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "absolute hidden top-1 right-1 group-hover:block" }, { children: (0, jsx_runtime_1.jsx)(CopyIcon_1.CopyIcon, { text: value }) })))] })));
|
|
40
|
+
}
|
|
41
|
+
exports.CodeBlock = CodeBlock;
|
|
42
|
+
const code = (node) => {
|
|
43
|
+
return ((0, jsx_runtime_1.jsx)(CodeBlock, { value: node.value || '', lang: node.lang, emphasizeLines: node.emphasizeLines, showLineNumbers: node.showLineNumbers, startingLineNumber: node.startingLineNumber, border: true }, node.key));
|
|
44
|
+
};
|
|
45
|
+
function isColor(maybeColorHash) {
|
|
46
|
+
if (!maybeColorHash || maybeColorHash.length > 9)
|
|
47
|
+
return undefined;
|
|
48
|
+
if (!new Set([4, 7, 9]).has(maybeColorHash.length))
|
|
49
|
+
return undefined;
|
|
50
|
+
const match = /^#([0-9A-Fa-f]{3,8})$/.exec(maybeColorHash);
|
|
51
|
+
if (!match)
|
|
52
|
+
return undefined;
|
|
53
|
+
const color = match[1];
|
|
54
|
+
return color;
|
|
55
|
+
}
|
|
56
|
+
const inlineCode = (node, children) => {
|
|
57
|
+
if (isColor(node.value)) {
|
|
58
|
+
return ((0, jsx_runtime_1.jsxs)("code", Object.assign({ className: "bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-100 px-1 rounded" }, { children: [children, (0, jsx_runtime_1.jsx)("span", { style: { backgroundColor: node.value }, className: "inline-block w-[10px] h-[10px] rounded-full ml-1" })] }), node.key));
|
|
59
|
+
}
|
|
60
|
+
return (0, jsx_runtime_1.jsx)("code", { children: children }, node.key);
|
|
61
|
+
};
|
|
62
|
+
const CODE_RENDERERS = {
|
|
63
|
+
code,
|
|
64
|
+
inlineCode,
|
|
65
|
+
};
|
|
66
|
+
exports.default = CODE_RENDERERS;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ElementType } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare function ClickPopover({ children, card, as, }: {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
card: React.ReactNode | ((args: {
|
|
6
|
+
open: boolean;
|
|
7
|
+
close: () => void;
|
|
8
|
+
}) => React.ReactNode);
|
|
9
|
+
as?: ElementType;
|
|
10
|
+
}): JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ClickPopover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClickPopover.d.ts","sourceRoot":"","sources":["../../../src/components/ClickPopover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,IAAI,EACJ,EAAW,GACZ,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1F,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB,eAyCA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ClickPopover = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const react_2 = require("@headlessui/react");
|
|
10
|
+
const react_popper_1 = require("react-popper");
|
|
11
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
12
|
+
function ClickPopover({ children, card, as = 'cite', }) {
|
|
13
|
+
const [referenceElement, setReferenceElement] = (0, react_1.useState)(null);
|
|
14
|
+
const [popperElement, setPopperElement] = (0, react_1.useState)(null);
|
|
15
|
+
const { styles, attributes } = (0, react_popper_1.usePopper)(referenceElement, popperElement);
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)(react_2.Popover, Object.assign({ as: "span" }, { children: ({ open, close }) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_2.Popover.Button, Object.assign({ ref: setReferenceElement, as: as, className: (0, classnames_1.default)({ 'border-dotted': !open }, 'cursor-zoom-in border-b-2 border-b-blue-600 hover:text-blue-600 hover:border-solid', { 'text-blue-600 border-solid': open }) }, { children: children })), (0, jsx_runtime_1.jsx)(react_2.Popover.Panel, Object.assign({ className: "exclude-from-outline absolute z-30 sm:max-w-[500px]", ref: setPopperElement, style: Object.assign({}, styles.popper) }, attributes.popper, { children: (0, jsx_runtime_1.jsx)(react_2.Transition, Object.assign({ className: "my-2 p-4 shadow-xl bg-white dark:bg-zinc-900 text-sm dark:text-white rounded border-2 border-slate-200 dark:border-zinc-500 break-words", enter: "transition ease-out duration-200", enterFrom: "opacity-0 translate-y-1", enterTo: "opacity-100 translate-y-0", leave: "transition ease-in duration-150", leaveFrom: "opacity-100 translate-y-0", leaveTo: "opacity-0 translate-y-1" }, { children: open && (typeof card === 'function' ? card({ open, close }) : card) })) }))] })) })));
|
|
17
|
+
}
|
|
18
|
+
exports.ClickPopover = ClickPopover;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyIcon.d.ts","sourceRoot":"","sources":["../../../src/components/CopyIcon.tsx"],"names":[],"mappings":";AAIA,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,eAkClD"}
|