myst-to-react 0.9.10 → 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 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;
@@ -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 = (_b = (_a = renderers[ast.type]) !== null && _a !== void 0 ? _a : renderers['DefaultComponent']) !== null && _b !== void 0 ? _b : DefaultComponent;
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
- var _a;
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
  }
@@ -16,7 +16,7 @@ export declare enum AdmonitionKind {
16
16
  }
17
17
  type Color = 'blue' | 'green' | 'yellow' | 'red';
18
18
  export declare const AdmonitionTitle: NodeRenderer<AdmonitionTitleSpec>;
19
- export declare function Admonition({ title, kind, color, simple, dropdown, children, hideIcon, className, }: {
19
+ export declare function Admonition({ title, kind, color, simple, dropdown, children, hideIcon, className, open, }: {
20
20
  title?: React.ReactNode;
21
21
  color?: Color;
22
22
  kind?: AdmonitionKind;
@@ -25,6 +25,7 @@ export declare function Admonition({ title, kind, color, simple, dropdown, child
25
25
  dropdown?: boolean;
26
26
  hideIcon?: boolean;
27
27
  className?: string;
28
+ open?: boolean;
28
29
  }): import("react/jsx-runtime").JSX.Element;
29
30
  export declare const AdmonitionRenderer: NodeRenderer<AdmonitionSpec>;
30
31
  declare const ADMONITION_RENDERERS: {
@@ -1 +1 @@
1
- {"version":3,"file":"admonitions.d.ts","sourceRoot":"","sources":["../src/admonitions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,IAAI,cAAc,EAC5B,eAAe,IAAI,mBAAmB,EACvC,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAsB1D,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;AAyEjD,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,mBAAmB,CAE7D,CAAC;AA4BF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,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,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAsEA;AAED,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,cAAc,CAuB3D,CAAC;AAEF,QAAA,MAAM,oBAAoB;;;CAGzB,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"admonitions.d.ts","sourceRoot":"","sources":["../src/admonitions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,IAAI,cAAc,EAC5B,eAAe,IAAI,mBAAmB,EACvC,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAsB1D,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;AAyEjD,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,mBAAmB,CAE7D,CAAC;AAmCF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,IAAI,GACL,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,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,2CAuEA;AAED,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,cAAc,CAyB3D,CAAC;AAEF,QAAA,MAAM,oBAAoB;;;CAGzB,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -86,9 +86,9 @@ function AdmonitionIcon({ kind, className }) {
86
86
  export const AdmonitionTitle = ({ node }) => {
87
87
  return _jsx(MyST, { ast: node.children });
88
88
  };
89
- const WrapperElement = ({ dropdown, className, children, }) => {
89
+ const WrapperElement = ({ dropdown, className, children, open, }) => {
90
90
  if (dropdown)
91
- return _jsx("details", { className: className, children: children });
91
+ return (_jsx("details", { className: className, open: open, children: children }));
92
92
  return _jsx("aside", { className: className, children: children });
93
93
  };
94
94
  const HeaderElement = ({ dropdown, className, children, }) => {
@@ -96,8 +96,8 @@ const HeaderElement = ({ dropdown, className, children, }) => {
96
96
  return _jsx("summary", { className: className, children: children });
97
97
  return _jsx("div", { className: className, children: children });
98
98
  };
99
- export function Admonition({ title, kind, color, simple, dropdown, children, hideIcon, className, }) {
100
- return (_jsxs(WrapperElement, { dropdown: dropdown, className: classNames('my-5 shadow-md dark:shadow-2xl dark:shadow-neutral-900', 'bg-gray-50/10 dark:bg-stone-800', 'overflow-hidden', {
99
+ export function Admonition({ title, kind, color, simple, dropdown, children, hideIcon, className, open, }) {
100
+ return (_jsxs(WrapperElement, { dropdown: dropdown, open: open, className: classNames('my-5 shadow-md dark:shadow-2xl dark:shadow-neutral-900', 'bg-gray-50/10 dark:bg-stone-800', 'overflow-hidden', {
101
101
  'rounded border-l-4': !simple,
102
102
  'border-l-2': simple,
103
103
  'border-blue-500': !color || color === 'blue',
@@ -128,8 +128,9 @@ export const AdmonitionRenderer = ({ node }) => {
128
128
  const isDropdown = classes.includes('dropdown');
129
129
  const isSimple = classes.includes('simple');
130
130
  const hideIcon = node.icon === false;
131
+ const isOpen = node.open === true;
131
132
  const useTitle = (title === null || title === void 0 ? void 0 : title.type) === 'admonitionTitle';
132
- return (_jsx(Admonition, { title: useTitle ? _jsx(MyST, { ast: [title] }) : undefined, kind: kind, color: color, dropdown: isDropdown, simple: isSimple, hideIcon: hideIcon, className: classNames(classes), children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
133
+ return (_jsx(Admonition, { title: useTitle ? _jsx(MyST, { ast: [title] }) : undefined, kind: kind, color: color, dropdown: isDropdown, open: isOpen, simple: isSimple, hideIcon: hideIcon, className: classNames(classes), children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
133
134
  };
134
135
  const ADMONITION_RENDERERS = {
135
136
  admonition: AdmonitionRenderer,
package/dist/basic.js CHANGED
@@ -16,10 +16,10 @@ const BASIC_RENDERERS = {
16
16
  return (_jsx(_Fragment, { children: text.map((v, i) => (_jsxs(React.Fragment, { children: [v, i < text.length - 1 && _jsx("wbr", {})] }, i))) }));
17
17
  },
18
18
  span({ node }) {
19
- return (_jsx("span", { className: node.class, style: node.style, children: _jsx(MyST, { ast: node.children }) }));
19
+ return (_jsx("span", { className: node.class, style: node.style, id: node.html_id, children: _jsx(MyST, { ast: node.children }) }));
20
20
  },
21
21
  div({ node }) {
22
- return (_jsx("div", { className: node.class, style: node.style, children: _jsx(MyST, { ast: node.children }) }));
22
+ return (_jsx("div", { className: node.class, style: node.style, id: node.html_id, children: _jsx(MyST, { ast: node.children }) }));
23
23
  },
24
24
  delete({ node }) {
25
25
  return (_jsx("del", { children: _jsx(MyST, { ast: node.children }) }));
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: Record<string, NodeRenderer>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAwB1D,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,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuB1D,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
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 = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASIC_RENDERERS), UNKNOWN_MYST_RENDERERS), IMAGE_RENDERERS), LINK_RENDERERS), CODE_RENDERERS), MATH_RENDERERS), CITE_RENDERERS), TAB_RENDERERS), IFRAME_RENDERERS), FOOTNOTE_RENDERERS), ADMONITION_RENDERERS), REACTIVE_RENDERERS), HEADING_RENDERERS), CROSS_REFERENCE_RENDERERS), DROPDOWN_RENDERERS), CARD_RENDERERS), GRID_RENDERERS), INLINE_EXPRESSION_RENDERERS), EXT_RENDERERS), PROOF_RENDERERS), EXERCISE_RENDERERS), ASIDE_RENDERERS);
31
- export { MyST } from './MyST.js';
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';
@@ -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 link: NodeRenderer<TransformedLink>;
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;AAQ1D,KAAK,eAAe,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA0CxE,eAAO,MAAM,IAAI,EAAE,YAAY,CAAC,eAAe,CA6C9C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,YAAY,CAAC,eAAe,CA8BnD,CAAC;AAEF,QAAA,MAAM,cAAc;;;CAGnB,CAAC;AAEF,eAAe,cAAc,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"}
@@ -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 link = ({ node }) => {
32
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
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
- const protocol = node.protocol;
35
- switch (protocol) {
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.9.10",
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.9.10",
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.5.0",
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",