myst-to-react 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MyST.d.ts +2 -0
- package/dist/MyST.d.ts.map +1 -1
- package/dist/MyST.js +11 -4
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -2
- package/dist/links/index.d.ts +7 -6
- package/dist/links/index.d.ts.map +1 -1
- package/dist/links/index.js +34 -18
- package/package.json +3 -3
package/dist/MyST.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { NodeRenderersValidated } from '@myst-theme/providers';
|
|
1
2
|
import type { GenericNode } from 'myst-common';
|
|
3
|
+
export declare function selectRenderer(renderers: NodeRenderersValidated, node: GenericNode): import("@myst-theme/providers").NodeRenderer<any>;
|
|
2
4
|
export declare function MyST({ ast }: {
|
|
3
5
|
ast?: GenericNode | GenericNode[];
|
|
4
6
|
}): import("react/jsx-runtime").JSX.Element | null;
|
package/dist/MyST.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MyST.d.ts","sourceRoot":"","sources":["../src/MyST.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW/C,wBAAgB,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;CAAE,kDAelE"}
|
|
1
|
+
{"version":3,"file":"MyST.d.ts","sourceRoot":"","sources":["../src/MyST.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW/C,wBAAgB,cAAc,CAAC,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,qDAMlF;AAED,wBAAgB,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;CAAE,kDAelE"}
|
package/dist/MyST.js
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { matches } from 'unist-util-select';
|
|
2
3
|
import { useNodeRenderers } from '@myst-theme/providers';
|
|
3
4
|
function DefaultComponent({ node }) {
|
|
4
5
|
if (!node.children)
|
|
5
6
|
return _jsx("span", { children: node.value });
|
|
6
7
|
return (_jsx("div", { children: _jsx(MyST, { ast: node.children }) }));
|
|
7
8
|
}
|
|
9
|
+
export function selectRenderer(renderers, node) {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
const componentRenderers = (_a = renderers[node.type]) !== null && _a !== void 0 ? _a : renderers['DefaultComponent'];
|
|
12
|
+
const SpecificComponent = (_b = Object.entries(componentRenderers !== null && componentRenderers !== void 0 ? componentRenderers : {})
|
|
13
|
+
.reverse()
|
|
14
|
+
.find(([selector]) => selector !== 'base' && matches(selector, node))) === null || _b === void 0 ? void 0 : _b[1];
|
|
15
|
+
return (_c = SpecificComponent !== null && SpecificComponent !== void 0 ? SpecificComponent : componentRenderers === null || componentRenderers === void 0 ? void 0 : componentRenderers.base) !== null && _c !== void 0 ? _c : DefaultComponent;
|
|
16
|
+
}
|
|
8
17
|
export function MyST({ ast }) {
|
|
9
|
-
var _a, _b;
|
|
10
18
|
const renderers = useNodeRenderers();
|
|
11
19
|
if (!ast || ast.length === 0)
|
|
12
20
|
return null;
|
|
13
21
|
if (!Array.isArray(ast)) {
|
|
14
|
-
const Component = (
|
|
22
|
+
const Component = selectRenderer(renderers, ast);
|
|
15
23
|
return _jsx(Component, { node: ast }, ast.key);
|
|
16
24
|
}
|
|
17
25
|
return (_jsx(_Fragment, { children: ast === null || ast === void 0 ? void 0 : ast.map((node) => {
|
|
18
|
-
|
|
19
|
-
const Component = (_a = renderers[node.type]) !== null && _a !== void 0 ? _a : DefaultComponent;
|
|
26
|
+
const Component = selectRenderer(renderers, node);
|
|
20
27
|
return _jsx(Component, { node: node }, node.key);
|
|
21
28
|
}) }));
|
|
22
29
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { NodeRenderer } from '@myst-theme/providers';
|
|
2
1
|
export { CopyIcon, HoverPopover, Tooltip, LinkCard } from './components/index.js';
|
|
3
2
|
export { CodeBlock } from './code.js';
|
|
4
3
|
export { HashLink, scrollToElement } from './hashLink.js';
|
|
@@ -6,6 +5,6 @@ export { Admonition, AdmonitionKind } from './admonitions.js';
|
|
|
6
5
|
export { Details } from './dropdown.js';
|
|
7
6
|
export { TabSet, TabItem } from './tabs.js';
|
|
8
7
|
export { useFetchMdast } from './crossReference.js';
|
|
9
|
-
export declare const DEFAULT_RENDERERS:
|
|
10
|
-
export { MyST } from './MyST.js';
|
|
8
|
+
export declare const DEFAULT_RENDERERS: import("@myst-theme/providers").NodeRenderersValidated;
|
|
9
|
+
export { MyST, selectRenderer } from './MyST.js';
|
|
11
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,wDA0B7B,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mergeRenderers } from '@myst-theme/providers';
|
|
1
2
|
import BASIC_RENDERERS from './basic.js';
|
|
2
3
|
import ADMONITION_RENDERERS from './admonitions.js';
|
|
3
4
|
import DROPDOWN_RENDERERS from './dropdown.js';
|
|
@@ -27,5 +28,28 @@ export { Admonition, AdmonitionKind } from './admonitions.js';
|
|
|
27
28
|
export { Details } from './dropdown.js';
|
|
28
29
|
export { TabSet, TabItem } from './tabs.js';
|
|
29
30
|
export { useFetchMdast } from './crossReference.js';
|
|
30
|
-
export const DEFAULT_RENDERERS =
|
|
31
|
-
|
|
31
|
+
export const DEFAULT_RENDERERS = mergeRenderers([
|
|
32
|
+
BASIC_RENDERERS,
|
|
33
|
+
UNKNOWN_MYST_RENDERERS,
|
|
34
|
+
IMAGE_RENDERERS,
|
|
35
|
+
LINK_RENDERERS,
|
|
36
|
+
CODE_RENDERERS,
|
|
37
|
+
MATH_RENDERERS,
|
|
38
|
+
CITE_RENDERERS,
|
|
39
|
+
TAB_RENDERERS,
|
|
40
|
+
IFRAME_RENDERERS,
|
|
41
|
+
FOOTNOTE_RENDERERS,
|
|
42
|
+
ADMONITION_RENDERERS,
|
|
43
|
+
REACTIVE_RENDERERS,
|
|
44
|
+
HEADING_RENDERERS,
|
|
45
|
+
CROSS_REFERENCE_RENDERERS,
|
|
46
|
+
DROPDOWN_RENDERERS,
|
|
47
|
+
CARD_RENDERERS,
|
|
48
|
+
GRID_RENDERERS,
|
|
49
|
+
INLINE_EXPRESSION_RENDERERS,
|
|
50
|
+
EXT_RENDERERS,
|
|
51
|
+
PROOF_RENDERERS,
|
|
52
|
+
EXERCISE_RENDERERS,
|
|
53
|
+
ASIDE_RENDERERS,
|
|
54
|
+
], true);
|
|
55
|
+
export { MyST, selectRenderer } from './MyST.js';
|
package/dist/links/index.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { Link } from 'myst-spec';
|
|
2
|
-
import type { NodeRenderer } from '@myst-theme/providers';
|
|
2
|
+
import type { NodeRenderer, NodeRenderers } from '@myst-theme/providers';
|
|
3
3
|
type TransformedLink = Link & {
|
|
4
4
|
internal?: boolean;
|
|
5
5
|
protocol?: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const WikiLinkRenderer: NodeRenderer<TransformedLink>;
|
|
8
|
+
export declare const GithubLinkRenderer: NodeRenderer<TransformedLink>;
|
|
9
|
+
export declare const RRIDLinkRenderer: NodeRenderer<TransformedLink>;
|
|
10
|
+
export declare const RORLinkRenderer: NodeRenderer<TransformedLink>;
|
|
11
|
+
export declare const SimpleLink: NodeRenderer<TransformedLink>;
|
|
8
12
|
export declare const linkBlock: NodeRenderer<TransformedLink>;
|
|
9
|
-
declare const LINK_RENDERERS:
|
|
10
|
-
link: NodeRenderer<TransformedLink>;
|
|
11
|
-
linkBlock: NodeRenderer<TransformedLink>;
|
|
12
|
-
};
|
|
13
|
+
declare const LINK_RENDERERS: NodeRenderers;
|
|
13
14
|
export default LINK_RENDERERS;
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/links/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/links/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOtC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQzE,KAAK,eAAe,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA0CxE,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAM1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,eAAe,CAgB5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAE1D,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,eAAe,CAEzD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,eAAe,CAcpD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,YAAY,CAAC,eAAe,CA8BnD,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,aAerB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
package/dist/links/index.js
CHANGED
|
@@ -28,25 +28,29 @@ function InternalLink({ url, children }) {
|
|
|
28
28
|
}
|
|
29
29
|
return (_jsx(HoverPopover, { card: _jsx(LinkCard, { internal: true, url: url, title: page.title, description: page.description, thumbnail: page.thumbnailOptimized || page.thumbnail }), children: _jsx(Link, { to: withBaseurl(url, baseurl), prefetch: "intent", children: children }) }));
|
|
30
30
|
}
|
|
31
|
-
export const
|
|
32
|
-
var _a, _b
|
|
31
|
+
export const WikiLinkRenderer = ({ node }) => {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
return (_jsx(WikiLink, { url: node.url, page: (_a = node.data) === null || _a === void 0 ? void 0 : _a.page, wiki: (_b = node.data) === null || _b === void 0 ? void 0 : _b.wiki, children: _jsx(MyST, { ast: node.children }) }));
|
|
34
|
+
};
|
|
35
|
+
export const GithubLinkRenderer = ({ node }) => {
|
|
36
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
37
|
+
return (_jsx(GithubLink, { kind: (_a = node.data) === null || _a === void 0 ? void 0 : _a.kind, url: node.url, org: (_b = node.data) === null || _b === void 0 ? void 0 : _b.org, repo: (_c = node.data) === null || _c === void 0 ? void 0 : _c.repo, raw: (_d = node.data) === null || _d === void 0 ? void 0 : _d.raw, file: (_e = node.data) === null || _e === void 0 ? void 0 : _e.file, from: (_f = node.data) === null || _f === void 0 ? void 0 : _f.from, to: (_g = node.data) === null || _g === void 0 ? void 0 : _g.to, issue_number: (_h = node.data) === null || _h === void 0 ? void 0 : _h.issue_number, children: _jsx(MyST, { ast: node.children }) }));
|
|
38
|
+
};
|
|
39
|
+
export const RRIDLinkRenderer = ({ node }) => {
|
|
40
|
+
var _a;
|
|
41
|
+
return (_jsx(RRIDLink, { rrid: (_a = node.data) === null || _a === void 0 ? void 0 : _a.rrid }));
|
|
42
|
+
};
|
|
43
|
+
export const RORLinkRenderer = ({ node }) => {
|
|
44
|
+
var _a;
|
|
45
|
+
return (_jsx(RORLink, { node: node, ror: (_a = node.data) === null || _a === void 0 ? void 0 : _a.ror }));
|
|
46
|
+
};
|
|
47
|
+
export const SimpleLink = ({ node }) => {
|
|
48
|
+
var _a;
|
|
33
49
|
const internal = (_a = node.internal) !== null && _a !== void 0 ? _a : false;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
case 'wiki':
|
|
37
|
-
return (_jsx(WikiLink, { url: node.url, page: (_b = node.data) === null || _b === void 0 ? void 0 : _b.page, wiki: (_c = node.data) === null || _c === void 0 ? void 0 : _c.wiki, children: _jsx(MyST, { ast: node.children }) }));
|
|
38
|
-
case 'github':
|
|
39
|
-
return (_jsx(GithubLink, { kind: (_d = node.data) === null || _d === void 0 ? void 0 : _d.kind, url: node.url, org: (_e = node.data) === null || _e === void 0 ? void 0 : _e.org, repo: (_f = node.data) === null || _f === void 0 ? void 0 : _f.repo, raw: (_g = node.data) === null || _g === void 0 ? void 0 : _g.raw, file: (_h = node.data) === null || _h === void 0 ? void 0 : _h.file, from: (_j = node.data) === null || _j === void 0 ? void 0 : _j.from, to: (_k = node.data) === null || _k === void 0 ? void 0 : _k.to, issue_number: (_l = node.data) === null || _l === void 0 ? void 0 : _l.issue_number, children: _jsx(MyST, { ast: node.children }) }));
|
|
40
|
-
case 'rrid':
|
|
41
|
-
return _jsx(RRIDLink, { rrid: (_m = node.data) === null || _m === void 0 ? void 0 : _m.rrid });
|
|
42
|
-
case 'ror':
|
|
43
|
-
return _jsx(RORLink, { node: node, ror: (_o = node.data) === null || _o === void 0 ? void 0 : _o.ror });
|
|
44
|
-
default:
|
|
45
|
-
if (internal) {
|
|
46
|
-
return (_jsx(InternalLink, { url: node.url, children: _jsx(MyST, { ast: node.children }) }));
|
|
47
|
-
}
|
|
48
|
-
return (_jsx("a", { target: "_blank", href: node.url, rel: "noreferrer", children: _jsx(MyST, { ast: node.children }) }));
|
|
50
|
+
if (internal) {
|
|
51
|
+
return (_jsx(InternalLink, { url: node.url, children: _jsx(MyST, { ast: node.children }) }));
|
|
49
52
|
}
|
|
53
|
+
return (_jsx("a", { target: "_blank", href: node.url, rel: "noreferrer", children: _jsx(MyST, { ast: node.children }) }));
|
|
50
54
|
};
|
|
51
55
|
export const linkBlock = ({ node }) => {
|
|
52
56
|
var _a;
|
|
@@ -60,7 +64,19 @@ export const linkBlock = ({ node }) => {
|
|
|
60
64
|
return (_jsx("a", { className: containerClass, target: "_blank", rel: "noopener noreferrer", href: node.url, children: nested }));
|
|
61
65
|
};
|
|
62
66
|
const LINK_RENDERERS = {
|
|
63
|
-
link
|
|
67
|
+
link: {
|
|
68
|
+
base: SimpleLink,
|
|
69
|
+
// Then duplicate the renderers for protocols
|
|
70
|
+
'link[protocol=github]': GithubLinkRenderer,
|
|
71
|
+
'link[protocol=wiki]': WikiLinkRenderer,
|
|
72
|
+
'link[protocol=rrid]': RRIDLinkRenderer,
|
|
73
|
+
'link[protocol=ror]': RORLinkRenderer,
|
|
74
|
+
// Put the kinds last as they will match first in the future
|
|
75
|
+
'link[kind=github]': GithubLinkRenderer,
|
|
76
|
+
'link[kind=wiki]': WikiLinkRenderer,
|
|
77
|
+
'link[kind=rrid]': RRIDLinkRenderer,
|
|
78
|
+
'link[kind=ror]': RORLinkRenderer,
|
|
79
|
+
},
|
|
64
80
|
linkBlock,
|
|
65
81
|
};
|
|
66
82
|
export default LINK_RENDERERS;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "myst-to-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@heroicons/react": "^2.0.18",
|
|
24
|
-
"@myst-theme/providers": "^0.
|
|
24
|
+
"@myst-theme/providers": "^0.11.0",
|
|
25
25
|
"@scienceicons/react": "^0.0.6",
|
|
26
26
|
"@radix-ui/react-hover-card": "^1.0.6",
|
|
27
27
|
"buffer": "^6.0.3",
|
|
28
28
|
"classnames": "^2.3.2",
|
|
29
|
-
"myst-common": "^1.
|
|
29
|
+
"myst-common": "^1.6.0",
|
|
30
30
|
"myst-config": "^1.5.0",
|
|
31
31
|
"myst-spec": "^0.0.5",
|
|
32
32
|
"nanoid": "^4.0.2",
|