myst-to-react 0.2.9 → 0.3.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.
Files changed (167) hide show
  1. package/dist/cjs/admonitions.d.ts +1 -1
  2. package/dist/cjs/admonitions.d.ts.map +1 -1
  3. package/dist/cjs/basic.d.ts.map +1 -1
  4. package/dist/cjs/basic.js +1 -1
  5. package/dist/cjs/cite.d.ts +1 -2
  6. package/dist/cjs/cite.d.ts.map +1 -1
  7. package/dist/cjs/cite.js +2 -2
  8. package/dist/cjs/code.d.ts +1 -2
  9. package/dist/cjs/code.d.ts.map +1 -1
  10. package/dist/cjs/components/CopyIcon.d.ts +1 -2
  11. package/dist/cjs/components/CopyIcon.d.ts.map +1 -1
  12. package/dist/cjs/components/HoverPopover.d.ts +1 -1
  13. package/dist/cjs/components/HoverPopover.d.ts.map +1 -1
  14. package/dist/cjs/components/HoverPopover.js +1 -1
  15. package/dist/cjs/components/LinkCard.d.ts +1 -1
  16. package/dist/cjs/components/LinkCard.d.ts.map +1 -1
  17. package/dist/cjs/crossReference.d.ts +3 -2
  18. package/dist/cjs/crossReference.d.ts.map +1 -1
  19. package/dist/cjs/crossReference.js +89 -37
  20. package/dist/cjs/dropdown.d.ts +1 -1
  21. package/dist/cjs/dropdown.d.ts.map +1 -1
  22. package/dist/cjs/exercise.d.ts +1 -1
  23. package/dist/cjs/exercise.d.ts.map +1 -1
  24. package/dist/cjs/heading.d.ts +1 -1
  25. package/dist/cjs/heading.d.ts.map +1 -1
  26. package/dist/cjs/inlineError.d.ts +1 -2
  27. package/dist/cjs/inlineError.d.ts.map +1 -1
  28. package/dist/cjs/links/github.d.ts +1 -1
  29. package/dist/cjs/links/github.d.ts.map +1 -1
  30. package/dist/cjs/links/rrid.d.ts +1 -2
  31. package/dist/cjs/links/rrid.d.ts.map +1 -1
  32. package/dist/cjs/links/wiki.d.ts +1 -1
  33. package/dist/cjs/links/wiki.d.ts.map +1 -1
  34. package/dist/cjs/proof.d.ts +1 -1
  35. package/dist/cjs/proof.d.ts.map +1 -1
  36. package/dist/cjs/tabs.d.ts +2 -2
  37. package/dist/cjs/tabs.d.ts.map +1 -1
  38. package/dist/esm/admonitions.d.ts +34 -0
  39. package/dist/esm/admonitions.d.ts.map +1 -0
  40. package/dist/esm/admonitions.js +146 -0
  41. package/dist/esm/basic.d.ts +64 -0
  42. package/dist/esm/basic.d.ts.map +1 -0
  43. package/dist/esm/basic.js +128 -0
  44. package/dist/esm/card.d.ts +27 -0
  45. package/dist/esm/card.d.ts.map +1 -0
  46. package/dist/esm/card.js +54 -0
  47. package/dist/esm/cite.d.ts +11 -0
  48. package/dist/esm/cite.d.ts.map +1 -0
  49. package/dist/esm/cite.js +36 -0
  50. package/dist/esm/code.d.ts +61 -0
  51. package/dist/esm/code.d.ts.map +1 -0
  52. package/dist/esm/code.js +68 -0
  53. package/dist/esm/components/CopyIcon.d.ts +4 -0
  54. package/dist/esm/components/CopyIcon.d.ts.map +1 -0
  55. package/dist/esm/components/CopyIcon.js +20 -0
  56. package/dist/esm/components/HoverPopover.d.ts +11 -0
  57. package/dist/esm/components/HoverPopover.d.ts.map +1 -0
  58. package/dist/esm/components/HoverPopover.js +7 -0
  59. package/dist/esm/components/LinkCard.d.ts +11 -0
  60. package/dist/esm/components/LinkCard.d.ts.map +1 -0
  61. package/dist/esm/components/LinkCard.js +12 -0
  62. package/dist/esm/convertToReact.d.ts +6 -0
  63. package/dist/esm/convertToReact.d.ts.map +1 -0
  64. package/dist/esm/convertToReact.js +25 -0
  65. package/dist/esm/crossReference.d.ts +17 -0
  66. package/dist/esm/crossReference.d.ts.map +1 -0
  67. package/dist/esm/crossReference.js +153 -0
  68. package/dist/esm/dropdown.d.ts +22 -0
  69. package/dist/esm/dropdown.d.ts.map +1 -0
  70. package/dist/esm/dropdown.js +19 -0
  71. package/dist/esm/exercise.d.ts +22 -0
  72. package/dist/esm/exercise.d.ts.map +1 -0
  73. package/dist/esm/exercise.js +98 -0
  74. package/dist/esm/extensions/chemicalFormula.d.ts +7 -0
  75. package/dist/esm/extensions/chemicalFormula.d.ts.map +1 -0
  76. package/dist/esm/extensions/chemicalFormula.js +35 -0
  77. package/dist/esm/extensions/index.d.ts +4 -0
  78. package/dist/esm/extensions/index.d.ts.map +1 -0
  79. package/dist/esm/extensions/index.js +4 -0
  80. package/dist/esm/extensions/siunits.d.ts +7 -0
  81. package/dist/esm/extensions/siunits.d.ts.map +1 -0
  82. package/dist/esm/extensions/siunits.js +11 -0
  83. package/dist/esm/footnotes.d.ts +8 -0
  84. package/dist/esm/footnotes.d.ts.map +1 -0
  85. package/dist/esm/footnotes.js +23 -0
  86. package/dist/esm/grid.d.ts +11 -0
  87. package/dist/esm/grid.d.ts.map +1 -0
  88. package/dist/esm/grid.js +110 -0
  89. package/dist/esm/heading.d.ts +18 -0
  90. package/dist/esm/heading.d.ts.map +1 -0
  91. package/dist/esm/heading.js +37 -0
  92. package/dist/esm/iframe.d.ts +7 -0
  93. package/dist/esm/iframe.d.ts.map +1 -0
  94. package/dist/esm/iframe.js +43 -0
  95. package/dist/esm/image.d.ts +11 -0
  96. package/dist/esm/image.d.ts.map +1 -0
  97. package/dist/esm/image.js +56 -0
  98. package/dist/esm/index.d.ts +11 -0
  99. package/dist/esm/index.d.ts.map +1 -0
  100. package/dist/esm/index.js +40 -0
  101. package/dist/esm/inlineError.d.ts +7 -0
  102. package/dist/esm/inlineError.d.ts.map +1 -0
  103. package/dist/esm/inlineError.js +5 -0
  104. package/dist/esm/inlineExpression.d.ts +7 -0
  105. package/dist/esm/inlineExpression.d.ts.map +1 -0
  106. package/dist/esm/inlineExpression.js +17 -0
  107. package/dist/esm/links/github.d.ts +14 -0
  108. package/dist/esm/links/github.d.ts.map +1 -0
  109. package/dist/esm/links/github.js +100 -0
  110. package/dist/esm/links/index.d.ts +14 -0
  111. package/dist/esm/links/index.d.ts.map +1 -0
  112. package/dist/esm/links/index.js +64 -0
  113. package/dist/esm/links/rrid.d.ts +4 -0
  114. package/dist/esm/links/rrid.d.ts.map +1 -0
  115. package/dist/esm/links/rrid.js +27 -0
  116. package/dist/esm/links/wiki.d.ts +8 -0
  117. package/dist/esm/links/wiki.d.ts.map +1 -0
  118. package/dist/esm/links/wiki.js +32 -0
  119. package/dist/esm/math.d.ts +13 -0
  120. package/dist/esm/math.d.ts.map +1 -0
  121. package/dist/esm/math.js +23 -0
  122. package/dist/esm/proof.d.ts +36 -0
  123. package/dist/esm/proof.d.ts.map +1 -0
  124. package/dist/esm/proof.js +103 -0
  125. package/dist/esm/reactive.d.ts +88 -0
  126. package/dist/esm/reactive.d.ts.map +1 -0
  127. package/dist/esm/reactive.js +57 -0
  128. package/dist/esm/tabs.d.ts +27 -0
  129. package/dist/esm/tabs.d.ts.map +1 -0
  130. package/dist/esm/tabs.js +60 -0
  131. package/dist/esm/unknown.d.ts +8 -0
  132. package/dist/esm/unknown.d.ts.map +1 -0
  133. package/dist/esm/unknown.js +11 -0
  134. package/dist/types/admonitions.d.ts +1 -1
  135. package/dist/types/admonitions.d.ts.map +1 -1
  136. package/dist/types/basic.d.ts.map +1 -1
  137. package/dist/types/cite.d.ts +1 -2
  138. package/dist/types/cite.d.ts.map +1 -1
  139. package/dist/types/code.d.ts +1 -2
  140. package/dist/types/code.d.ts.map +1 -1
  141. package/dist/types/components/CopyIcon.d.ts +1 -2
  142. package/dist/types/components/CopyIcon.d.ts.map +1 -1
  143. package/dist/types/components/HoverPopover.d.ts +1 -1
  144. package/dist/types/components/HoverPopover.d.ts.map +1 -1
  145. package/dist/types/components/LinkCard.d.ts +1 -1
  146. package/dist/types/components/LinkCard.d.ts.map +1 -1
  147. package/dist/types/crossReference.d.ts +3 -2
  148. package/dist/types/crossReference.d.ts.map +1 -1
  149. package/dist/types/dropdown.d.ts +1 -1
  150. package/dist/types/dropdown.d.ts.map +1 -1
  151. package/dist/types/exercise.d.ts +1 -1
  152. package/dist/types/exercise.d.ts.map +1 -1
  153. package/dist/types/heading.d.ts +1 -1
  154. package/dist/types/heading.d.ts.map +1 -1
  155. package/dist/types/inlineError.d.ts +1 -2
  156. package/dist/types/inlineError.d.ts.map +1 -1
  157. package/dist/types/links/github.d.ts +1 -1
  158. package/dist/types/links/github.d.ts.map +1 -1
  159. package/dist/types/links/rrid.d.ts +1 -2
  160. package/dist/types/links/rrid.d.ts.map +1 -1
  161. package/dist/types/links/wiki.d.ts +1 -1
  162. package/dist/types/links/wiki.d.ts.map +1 -1
  163. package/dist/types/proof.d.ts +1 -1
  164. package/dist/types/proof.d.ts.map +1 -1
  165. package/dist/types/tabs.d.ts +2 -2
  166. package/dist/types/tabs.d.ts.map +1 -1
  167. package/package.json +7 -5
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export declare function HoverPopover({ children, openDelay, card, side, arrowClass, }: {
3
+ children: React.ReactNode;
4
+ openDelay?: number;
5
+ arrowClass?: string;
6
+ side?: 'top' | 'right' | 'bottom' | 'left';
7
+ card: React.ReactNode | ((args: {
8
+ load: boolean;
9
+ }) => React.ReactNode);
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=HoverPopover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverPopover.d.ts","sourceRoot":"","sources":["../../../src/components/HoverPopover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAe,EACf,IAAI,EACJ,IAAI,EACJ,UAAyB,GAC1B,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACxE,2CAmBA"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import * as HoverCard from '@radix-ui/react-hover-card';
4
+ export function HoverPopover({ children, openDelay = 400, card, side, arrowClass = 'fill-white', }) {
5
+ const [load, setLoad] = useState(false);
6
+ return (_jsxs(HoverCard.Root, Object.assign({ openDelay: openDelay }, { children: [_jsx(HoverCard.Trigger, Object.assign({ asChild: true, onMouseEnter: () => setLoad(true) }, { children: children })), _jsx(HoverCard.Portal, { children: _jsxs(HoverCard.Content, Object.assign({ className: "exclude-from-outline hover-card-content", sideOffset: 5, side: side }, { children: [typeof card === 'function' ? load && card({ load }) : card, _jsx(HoverCard.Arrow, { className: arrowClass })] })) })] })));
7
+ }
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export declare function LinkCard({ url, title, internal, loading, description, thumbnail, className, }: {
3
+ url: string;
4
+ internal?: boolean;
5
+ loading?: boolean;
6
+ title: React.ReactNode;
7
+ description?: React.ReactNode;
8
+ thumbnail?: string;
9
+ className?: string;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=LinkCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkCard.d.ts","sourceRoot":"","sources":["../../../src/components/LinkCard.tsx"],"names":[],"mappings":";AAIA,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,KAAK,EACL,QAAgB,EAChB,OAAe,EACf,WAAW,EACX,SAAS,EACT,SAAmE,GACpE,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAuCA"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLinkProvider, useBaseurl, withBaseurl } from '@myst-theme/providers';
3
+ import ExternalLinkIcon from '@heroicons/react/24/outline/ArrowTopRightOnSquareIcon';
4
+ import classNames from 'classnames';
5
+ export function LinkCard({ url, title, internal = false, loading = false, description, thumbnail, className = 'w-[300px] sm:max-w-[500px] bg-white rounded shadow-md', }) {
6
+ const Link = useLinkProvider();
7
+ const baseurl = useBaseurl();
8
+ const to = withBaseurl(url, baseurl);
9
+ return (_jsxs("div", Object.assign({ className: classNames('hover-card-content rounded overflow-hidden', className, {
10
+ 'animate-pulse': loading,
11
+ }) }, { children: [!loading && thumbnail && (_jsx("img", { src: thumbnail, className: "w-full h-[150px] object-cover object-top object-left m-0" })), loading && _jsx("div", { className: "animate-pulse bg-slate-100 dark:bg-slate-800 w-full h-[150px]" }), internal && (_jsx(Link, Object.assign({ to: to, className: "block text-sm font-semibold text-inherit hover:text-inherit px-3 mt-3", prefetch: "intent" }, { children: title }))), !internal && (_jsxs("a", Object.assign({ href: to, className: "block text-sm font-semibold text-inherit hover:text-inherit px-3 mt-3", target: "_blank", rel: "noreferrer" }, { children: [_jsx(ExternalLinkIcon, { className: "w-4 h-4 float-right" }), title] }))), !loading && description && (_jsx("div", Object.assign({ className: "p-3 prose text-sm max-h-[300px] overflow-hidden" }, { children: description })))] })));
12
+ }
@@ -0,0 +1,6 @@
1
+ import type React from 'react';
2
+ import type { NodeRenderer } from '@myst-theme/providers';
3
+ import type { GenericNode } from 'myst-common';
4
+ export declare function toReact(fragment: GenericNode[], replacements: Record<string, NodeRenderer>): React.ReactNode;
5
+ export declare function mystToReact(content: GenericNode, replacements: Record<string, NodeRenderer>): React.ReactNode;
6
+ //# sourceMappingURL=convertToReact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertToReact.d.ts","sourceRoot":"","sources":["../../src/convertToReact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,OAAO,CACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACzC,KAAK,CAAC,SAAS,CAiBjB;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACzC,KAAK,CAAC,SAAS,CAEjB"}
@@ -0,0 +1,25 @@
1
+ import { createElement as e } from 'react';
2
+ export function toReact(fragment, replacements) {
3
+ if (fragment.length === 0)
4
+ return undefined;
5
+ return fragment.map((node) => {
6
+ if (node.type === 'text')
7
+ return node.value;
8
+ const custom = replacements[node.type];
9
+ if (node.children) {
10
+ const children = toReact(node.children, replacements);
11
+ if (custom) {
12
+ return custom(node, children);
13
+ }
14
+ return e('div', { key: node.key }, children);
15
+ }
16
+ if (custom) {
17
+ return custom(node, node.value);
18
+ }
19
+ return e('span', { children: node.value, key: node.key });
20
+ });
21
+ }
22
+ export function mystToReact(content, replacements) {
23
+ var _a;
24
+ return toReact((_a = content.children) !== null && _a !== void 0 ? _a : [], replacements);
25
+ }
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import type { CrossReference } from 'myst-spec';
3
+ import type { NodeRenderer } from '@myst-theme/providers';
4
+ export declare function CrossReferenceHover({ url: urlIn, dataUrl: dataUrlIn, remote: remoteIn, children, identifier, htmlId, }: {
5
+ remote?: boolean;
6
+ url?: string;
7
+ dataUrl?: string;
8
+ identifier: string;
9
+ htmlId?: string;
10
+ children: React.ReactNode;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ export declare const CrossReferenceNode: NodeRenderer<CrossReference>;
13
+ declare const CROSS_REFERENCE_RENDERERS: {
14
+ crossReference: NodeRenderer<CrossReference>;
15
+ };
16
+ export default CROSS_REFERENCE_RENDERERS;
17
+ //# sourceMappingURL=crossReference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossReference.d.ts","sourceRoot":"","sources":["../../src/crossReference.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAahD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAyJ1D,wBAAgB,mBAAmB,CAAC,EAClC,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EACR,UAAU,EACV,MAAW,GACZ,EAAE;IACD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAuDA;AAED,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,cAAc,CAuB3D,CAAC;AAEF,QAAA,MAAM,yBAAyB;;CAE9B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,153 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { selectAll } from 'unist-util-select';
3
+ import { EXIT, SKIP, visit } from 'unist-util-visit';
4
+ import { useLinkProvider, useNodeRenderers, useReferences, useBaseurl, withBaseurl, XRefProvider, useXRefState, } from '@myst-theme/providers';
5
+ import { useParse } from '.';
6
+ import { InlineError } from './inlineError';
7
+ import useSWR from 'swr';
8
+ import { HoverPopover } from './components/HoverPopover';
9
+ const hiddenNodes = new Set(['comment', 'mystComment']);
10
+ function selectHeadingNodes(mdast, identifier, maxNodes = 3) {
11
+ let begin = false;
12
+ let htmlId = undefined;
13
+ const nodes = [];
14
+ visit(mdast, (node) => {
15
+ if ((begin && node.type === 'heading') || nodes.length >= maxNodes) {
16
+ return EXIT;
17
+ }
18
+ if (node.identifier === identifier && node.type === 'heading') {
19
+ begin = true;
20
+ htmlId = node.html_id || node.identifier;
21
+ }
22
+ if (begin) {
23
+ if (!hiddenNodes.has(node.type))
24
+ nodes.push(node);
25
+ return SKIP; // Don't traverse the children
26
+ }
27
+ });
28
+ return { htmlId, nodes };
29
+ }
30
+ function selectDefinitionTerm(mdast, identifier) {
31
+ var _a, _b;
32
+ let begin = false;
33
+ const nodes = [];
34
+ visit(mdast, (node) => {
35
+ if (begin && node.type === 'definitionTerm') {
36
+ if (nodes.length > 1)
37
+ return EXIT;
38
+ }
39
+ else if (begin && node.type !== 'definitionDescription') {
40
+ return EXIT;
41
+ }
42
+ if (node.identifier === identifier && node.type === 'definitionTerm') {
43
+ nodes.push(node);
44
+ begin = true;
45
+ }
46
+ if (begin) {
47
+ if (node.type === 'definitionDescription')
48
+ nodes.push(node);
49
+ return SKIP; // Don't traverse the children
50
+ }
51
+ });
52
+ return {
53
+ htmlId: ((_a = nodes === null || nodes === void 0 ? void 0 : nodes[0]) === null || _a === void 0 ? void 0 : _a.html_id) || ((_b = nodes === null || nodes === void 0 ? void 0 : nodes[0]) === null || _b === void 0 ? void 0 : _b.identifier),
54
+ nodes: [{ type: 'definitionList', key: 'dl', children: nodes }],
55
+ };
56
+ }
57
+ function selectMdastNodes(mdast, identifier) {
58
+ // Select the first identifier that is not a crossReference or citation
59
+ const node = selectAll(`[identifier=${identifier}],[key=${identifier}]`, mdast).filter(({ type }) => type !== 'crossReference' && type !== 'cite')[0];
60
+ if (!node)
61
+ return { nodes: [] };
62
+ switch (node.type) {
63
+ case 'heading':
64
+ return selectHeadingNodes(mdast, identifier);
65
+ case 'definitionTerm':
66
+ return selectDefinitionTerm(mdast, identifier);
67
+ default:
68
+ return { htmlId: node.html_id || node.identifier, nodes: [node] };
69
+ }
70
+ }
71
+ const fetcher = (...args) => fetch(...args).then((res) => {
72
+ if (res.status === 200)
73
+ return res.json();
74
+ throw new Error(`Content returned with status ${res.status}.`);
75
+ });
76
+ // This is a small component that must be distinct based on the nodes
77
+ // This is because the useParse can have different numbers of hooks, which breaks things
78
+ function XrefChildren({ load, remote, url, dataUrl, identifier, }) {
79
+ var _a;
80
+ const data = useSelectNodes({ load, remote, url, dataUrl, identifier });
81
+ const renderers = useNodeRenderers();
82
+ const children = useParse({ type: 'block', children: (_a = data === null || data === void 0 ? void 0 : data.nodes) !== null && _a !== void 0 ? _a : [] }, renderers);
83
+ if (!data)
84
+ return null;
85
+ if (data.loading) {
86
+ return _jsx(_Fragment, { children: "Loading..." });
87
+ }
88
+ if (data.error) {
89
+ return _jsx(_Fragment, { children: "Error loading remote page." });
90
+ }
91
+ if (!data.nodes || data.nodes.length === 0) {
92
+ return (_jsx(_Fragment, { children: _jsx(InlineError, { value: identifier || 'No Label', message: "Cross Reference Not Found" }) }));
93
+ }
94
+ return _jsx(_Fragment, { children: children });
95
+ }
96
+ function openDetails(el) {
97
+ if (!el)
98
+ return;
99
+ if (el.nodeName === 'DETAILS') {
100
+ el.open = true;
101
+ }
102
+ openDetails(el.parentElement);
103
+ }
104
+ function useSelectNodes({ load, remote, url, dataUrl, identifier, }) {
105
+ var _a, _b;
106
+ const baseurl = useBaseurl();
107
+ const references = useReferences();
108
+ // dataUrl should point directly to the cross reference mdast data.
109
+ // If dataUrl is not provided, it will be computed by appending .json to the url.
110
+ if (!load)
111
+ return;
112
+ const external = (_a = url === null || url === void 0 ? void 0 : url.startsWith('http')) !== null && _a !== void 0 ? _a : false;
113
+ const lookupUrl = external
114
+ ? `/api/lookup?url=${url}.json`
115
+ : dataUrl
116
+ ? `${withBaseurl(dataUrl, baseurl)}`
117
+ : `${withBaseurl(url, baseurl)}.json`;
118
+ const { data, error } = useSWR(remote ? lookupUrl : null, fetcher);
119
+ const mdast = (_b = data === null || data === void 0 ? void 0 : data.mdast) !== null && _b !== void 0 ? _b : references === null || references === void 0 ? void 0 : references.article;
120
+ const { nodes, htmlId } = selectMdastNodes(mdast, identifier);
121
+ return { htmlId, nodes, loading: remote && !data, error: remote && error };
122
+ }
123
+ export function CrossReferenceHover({ url: urlIn, dataUrl: dataUrlIn, remote: remoteIn, children, identifier, htmlId = '', }) {
124
+ var _a;
125
+ const Link = useLinkProvider();
126
+ const baseurl = useBaseurl();
127
+ const parent = useXRefState();
128
+ const remote = parent.remote || remoteIn;
129
+ const url = parent.remote ? urlIn !== null && urlIn !== void 0 ? urlIn : parent.url : urlIn;
130
+ const dataUrl = parent.remote ? dataUrlIn !== null && dataUrlIn !== void 0 ? dataUrlIn : parent.dataUrl : dataUrlIn;
131
+ const external = (_a = url === null || url === void 0 ? void 0 : url.startsWith('http')) !== null && _a !== void 0 ? _a : false;
132
+ const scroll = (e) => {
133
+ e.preventDefault();
134
+ if (!htmlId)
135
+ return;
136
+ const el = document.getElementById(htmlId);
137
+ openDetails(el);
138
+ el === null || el === void 0 ? void 0 : el.scrollIntoView({ behavior: 'smooth' });
139
+ history.replaceState(undefined, '', `#${htmlId}`);
140
+ };
141
+ return (_jsx(HoverPopover, Object.assign({ card: ({ load }) => (_jsx(XRefProvider, Object.assign({ remote: remote, url: url, dataUrl: dataUrl }, { children: _jsx("div", Object.assign({ className: "hover-document w-[500px] sm:max-w-[500px] px-3" }, { children: _jsx(XrefChildren, { load: load, remote: remote, url: url, dataUrl: dataUrl, identifier: identifier }) })) }))) }, { children: _jsxs("span", { children: [remote && external && (_jsx("a", Object.assign({ href: `${url}${htmlId ? `#${htmlId}` : ''}`, target: "_blank", className: "hover-link" }, { children: children }))), remote && !external && (_jsx(Link, Object.assign({ to: `${withBaseurl(url, baseurl)}${htmlId ? `#${htmlId}` : ''}`, prefetch: "intent", className: "hover-link" }, { children: children }))), !remote && (_jsx("a", Object.assign({ href: `#${htmlId}`, onClick: scroll, className: "hover-link" }, { children: children })))] }) })));
142
+ }
143
+ export const CrossReferenceNode = (node, children) => {
144
+ if (!children) {
145
+ return (_jsx(InlineError, { value: node.label || node.identifier || 'No Label', message: "Cross Reference Not Found" }, node.key));
146
+ }
147
+ const { remote, url, dataUrl, identifier, html_id } = node;
148
+ return (_jsx(CrossReferenceHover, Object.assign({ identifier: identifier, htmlId: html_id, remote: remote, url: url, dataUrl: dataUrl }, { children: children }), node.key));
149
+ };
150
+ const CROSS_REFERENCE_RENDERERS = {
151
+ crossReference: CrossReferenceNode,
152
+ };
153
+ export default CROSS_REFERENCE_RENDERERS;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { NodeRenderer } from '@myst-theme/providers';
3
+ type DropdownSpec = {
4
+ type: 'details';
5
+ open?: boolean;
6
+ };
7
+ type SummarySpec = {
8
+ type: 'summary';
9
+ };
10
+ export declare const SummaryTitle: NodeRenderer<SummarySpec>;
11
+ export declare function Details({ title, children, open, }: {
12
+ title: React.ReactNode;
13
+ children: React.ReactNode;
14
+ open?: boolean;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare const DetailsRenderer: NodeRenderer<DropdownSpec>;
17
+ declare const DROPDOWN_RENDERERS: {
18
+ details: NodeRenderer<DropdownSpec>;
19
+ summary: NodeRenderer<SummarySpec>;
20
+ };
21
+ export default DROPDOWN_RENDERERS;
22
+ //# sourceMappingURL=dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAIF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,WAAW,CAElD,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,IAAI,GACL,EAAE;IACD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,2CA4BA;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,YAAY,CAOtD,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;CAGvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import ChevronRightIcon from '@heroicons/react/24/solid/ChevronRightIcon';
3
+ import classNames from 'classnames';
4
+ const iconClass = 'h-8 w-8 inline-block pl-2 mr-2 -translate-y-[1px]';
5
+ export const SummaryTitle = (node, children) => {
6
+ return children;
7
+ };
8
+ export function Details({ title, children, open, }) {
9
+ return (_jsxs("details", Object.assign({ className: classNames('rounded-md my-5 shadow dark:shadow-2xl dark:shadow-neutral-900 overflow-hidden', 'bg-gray-50 dark:bg-stone-800'), open: open }, { children: [_jsx("summary", Object.assign({ className: classNames('m-0 text-lg font-medium py-1 min-h-[2em] pl-3', 'cursor-pointer hover:shadow-[inset_0_0_0px_30px_#00000003] dark:hover:shadow-[inset_0_0_0px_30px_#FFFFFF03]', 'bg-gray-100 dark:bg-slate-900') }, { children: _jsxs("span", Object.assign({ className: "text-neutral-900 dark:text-white" }, { children: [_jsx("span", Object.assign({ className: "block float-right font-thin text-sm text-neutral-700 dark:text-neutral-200" }, { children: _jsx(ChevronRightIcon, { className: classNames(iconClass, 'details-toggle', 'transition-transform') }) })), title] })) })), _jsx("div", Object.assign({ className: "px-4 py-1 details-body" }, { children: children }))] })));
10
+ }
11
+ export const DetailsRenderer = (node, children) => {
12
+ const [title, ...rest] = children;
13
+ return (_jsx(Details, Object.assign({ title: title, open: node.open }, { children: rest }), node.key));
14
+ };
15
+ const DROPDOWN_RENDERERS = {
16
+ details: DetailsRenderer,
17
+ summary: SummaryTitle,
18
+ };
19
+ export default DROPDOWN_RENDERERS;
@@ -0,0 +1,22 @@
1
+ import type { Admonition as AdmonitionSpec } from 'myst-spec';
2
+ import React from 'react';
3
+ import type { NodeRenderer } from '@myst-theme/providers';
4
+ type Color = 'gray' | 'blue' | 'green' | 'yellow' | 'orange' | 'red' | 'purple';
5
+ export declare function Callout({ title, color, dropdown, children, identifier, Icon, }: {
6
+ title?: React.ReactNode;
7
+ color?: Color;
8
+ children: React.ReactNode;
9
+ dropdown?: boolean;
10
+ identifier?: string;
11
+ Icon?: (props: {
12
+ className?: string;
13
+ }) => JSX.Element;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export declare const ExerciseRenderer: NodeRenderer<AdmonitionSpec>;
16
+ export declare const SolutionRenderer: NodeRenderer<AdmonitionSpec>;
17
+ declare const EXERCISE_RENDERERS: {
18
+ exercise: NodeRenderer<AdmonitionSpec>;
19
+ solution: NodeRenderer<AdmonitionSpec>;
20
+ };
21
+ export default EXERCISE_RENDERERS;
22
+ //# sourceMappingURL=exercise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exercise.d.ts","sourceRoot":"","sources":["../../src/exercise.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAkEhF,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,IAAI,GACL,EAAE;IACD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;CACvD,2CA0EA;AAED,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAmCzD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAkCzD,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;CAGvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import ChevronRightIcon from '@heroicons/react/24/solid/ChevronRightIcon';
3
+ import classNames from 'classnames';
4
+ import { HashLink } from './heading';
5
+ function getClasses(className) {
6
+ var _a;
7
+ 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 : [];
8
+ return [...new Set(classes)];
9
+ }
10
+ function getColor({ classes = [] }, defaultColor = 'blue') {
11
+ if (classes.includes('gray'))
12
+ return { color: 'gray' };
13
+ if (classes.includes('purple'))
14
+ return { color: 'purple' };
15
+ if (classes.includes('yellow'))
16
+ return { color: 'yellow' };
17
+ if (classes.includes('orange'))
18
+ return { color: 'orange' };
19
+ if (classes.includes('green'))
20
+ return { color: 'green' };
21
+ if (classes.includes('red'))
22
+ return { color: 'red' };
23
+ if (classes.includes('blue'))
24
+ return { color: 'blue' };
25
+ return { color: defaultColor };
26
+ }
27
+ const WrapperElement = ({ id, dropdown, className, children, }) => {
28
+ if (dropdown)
29
+ return (_jsx("details", Object.assign({ id: id, className: className }, { children: children })));
30
+ return (_jsx("aside", Object.assign({ id: id, className: className }, { children: children })));
31
+ };
32
+ const HeaderElement = ({ dropdown, className, children, }) => {
33
+ if (dropdown)
34
+ return _jsx("summary", Object.assign({ className: className }, { children: children }));
35
+ return _jsx("div", Object.assign({ className: className }, { children: children }));
36
+ };
37
+ const iconClass = 'h-8 w-8 inline-block pl-2 mr-2 self-center flex-none';
38
+ export function Callout({ title, color, dropdown, children, identifier, Icon, }) {
39
+ return (_jsxs(WrapperElement, Object.assign({ id: identifier, dropdown: dropdown, className: classNames('my-5 shadow dark:bg-stone-800 overflow-hidden', 'dark:border-l-4 border-slate-400', {
40
+ 'dark:border-gray-500/60': !color || color === 'gray',
41
+ 'dark:border-blue-500/60': color === 'blue',
42
+ 'dark:border-green-500/60': color === 'green',
43
+ 'dark:border-amber-500/70': color === 'yellow',
44
+ 'dark:border-orange-500/60': color === 'orange',
45
+ 'dark:border-red-500/60': color === 'red',
46
+ 'dark:border-purple-500/60': color === 'purple',
47
+ }) }, { children: [_jsxs(HeaderElement, Object.assign({ dropdown: dropdown, className: classNames('m-0 font-medium py-2 flex min-w-0', 'text-md', 'border-y dark:border-y-0', {
48
+ 'bg-gray-50/80 dark:bg-slate-900': !color || color === 'gray',
49
+ 'bg-blue-50/80 dark:bg-slate-900': color === 'blue',
50
+ 'bg-green-50/80 dark:bg-slate-900': color === 'green',
51
+ 'bg-amber-50/80 dark:bg-slate-900': color === 'yellow',
52
+ 'bg-orange-50/80 dark:bg-slate-900': color === 'orange',
53
+ 'bg-red-50/80 dark:bg-slate-900': color === 'red',
54
+ 'bg-purple-50/80 dark:bg-slate-900': color === 'purple',
55
+ 'cursor-pointer hover:shadow-[inset_0_0_0px_30px_#00000003] dark:hover:shadow-[inset_0_0_0px_30px_#FFFFFF03]': dropdown,
56
+ }) }, { children: [Icon && (_jsx(Icon, { className: classNames('h-8 w-8 inline-block pl-2 mr-2 self-center flex-none', classNames({
57
+ 'text-gray-600': !color || color === 'gray',
58
+ 'text-blue-600': color === 'blue',
59
+ 'text-green-600': color === 'green',
60
+ 'text-amber-600': color === 'yellow',
61
+ 'text-orange-600': color === 'orange',
62
+ 'text-red-600': color === 'red',
63
+ 'text-purple-600': color === 'purple',
64
+ })) })), _jsx("div", Object.assign({ className: classNames('text-neutral-900 dark:text-white grow self-center overflow-hidden break-words', { 'ml-4': !Icon }, // No icon!
65
+ 'group') }, { children: title })), dropdown && (_jsx("div", Object.assign({ className: "font-thin text-sm text-neutral-700 dark:text-neutral-200 self-center flex-none" }, { children: _jsx(ChevronRightIcon, { className: classNames(iconClass, 'transition-transform details-toggle') }) })))] })), _jsx("div", Object.assign({ className: classNames('px-4', { 'details-body': dropdown }) }, { children: children }))] })));
66
+ }
67
+ export const ExerciseRenderer = (node, children) => {
68
+ var _a, _b, _c;
69
+ if (node.hidden)
70
+ return null;
71
+ const [title, ...rest] = (_a = children) !== null && _a !== void 0 ? _a : [];
72
+ const classes = getClasses(node.class);
73
+ const { color } = getColor({ classes });
74
+ const isDropdown = classes.includes('dropdown');
75
+ const useTitle = ((_c = (_b = node.children) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) === 'admonitionTitle';
76
+ const identifier = node.html_id;
77
+ const enumerator = node.enumerator;
78
+ const titleNode = (_jsxs(_Fragment, { children: [_jsxs(HashLink, Object.assign({ id: identifier, kind: "Exercise" }, { children: [node.gate === 'start' && 'Start of ', node.gate === 'end' && 'End of ', "Exercise", enumerator != null && _jsxs(_Fragment, { children: [" ", enumerator] })] })), useTitle && _jsxs(_Fragment, { children: [" (", title, ")"] })] }));
79
+ return (_jsxs(Callout, Object.assign({ identifier: identifier, title: titleNode, color: color, dropdown: isDropdown }, { children: [!useTitle && title, rest] }), node.key));
80
+ };
81
+ export const SolutionRenderer = (node, children) => {
82
+ var _a, _b, _c;
83
+ if (node.hidden)
84
+ return null;
85
+ const [title, ...rest] = (_a = children) !== null && _a !== void 0 ? _a : [];
86
+ const classes = getClasses(node.class);
87
+ const { color } = getColor({ classes }, 'gray');
88
+ const isDropdown = classes.includes('dropdown');
89
+ const useTitle = ((_c = (_b = node.children) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) === 'admonitionTitle';
90
+ const identifier = node.html_id;
91
+ const titleNode = (_jsxs(_Fragment, { children: [node.gate === 'start' && 'Start of ', node.gate === 'end' && 'End of ', title, _jsx(HashLink, Object.assign({ id: identifier, kind: "Solution", hover: true, hideInPopup: true }, { children: ' #' }))] }));
92
+ return (_jsxs(Callout, Object.assign({ identifier: identifier, title: useTitle ? titleNode : undefined, color: color, dropdown: isDropdown }, { children: [!useTitle && title, rest] }), node.key));
93
+ };
94
+ const EXERCISE_RENDERERS = {
95
+ exercise: ExerciseRenderer,
96
+ solution: SolutionRenderer,
97
+ };
98
+ export default EXERCISE_RENDERERS;
@@ -0,0 +1,7 @@
1
+ import type { NodeRenderer } from '@myst-theme/providers';
2
+ export declare const ChemicalFormula: NodeRenderer;
3
+ declare const CHEM_RENDERERS: {
4
+ chemicalFormula: NodeRenderer<any>;
5
+ };
6
+ export default CHEM_RENDERERS;
7
+ //# sourceMappingURL=chemicalFormula.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chemicalFormula.d.ts","sourceRoot":"","sources":["../../../src/extensions/chemicalFormula.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAyB1D,eAAO,MAAM,eAAe,EAAE,YAU7B,CAAC;AAEF,QAAA,MAAM,cAAc;;CAEnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Separate numbers and letters so that numbers can be <sub>2</sub>
4
+ * @param formula a string H2O
5
+ * @returns ['H', '2', '0']
6
+ */
7
+ function parseFormula(formula) {
8
+ return [...(formula !== null && formula !== void 0 ? formula : '')].reduce((acc, letter) => {
9
+ const last = acc.pop();
10
+ const isNumber = letter.match(/[0-9]/);
11
+ const lastIsNumber = last === null || last === void 0 ? void 0 : last.match(/[0-9]/);
12
+ if (isNumber) {
13
+ if (lastIsNumber) {
14
+ return [...acc, `${last !== null && last !== void 0 ? last : ''}${letter}`];
15
+ }
16
+ return [...acc, last, letter].filter((v) => !!v);
17
+ }
18
+ if (lastIsNumber) {
19
+ return [...acc, last, letter].filter((v) => !!v);
20
+ }
21
+ return [...acc, `${last !== null && last !== void 0 ? last : ''}${letter}`];
22
+ }, []);
23
+ }
24
+ export const ChemicalFormula = (node) => {
25
+ const parts = parseFormula(node.value);
26
+ return (_jsx("code", Object.assign({ className: "text-inherit" }, { children: parts.map((letter, index) => {
27
+ if (letter.match(/[0-9]/))
28
+ return _jsx("sub", { children: letter }, index);
29
+ return _jsx("span", { children: letter }, index);
30
+ }) }), node.key));
31
+ };
32
+ const CHEM_RENDERERS = {
33
+ chemicalFormula: ChemicalFormula,
34
+ };
35
+ export default CHEM_RENDERERS;
@@ -0,0 +1,4 @@
1
+ import type { NodeRenderer } from '@myst-theme/providers';
2
+ declare const EXT_RENDERERS: Record<string, NodeRenderer>;
3
+ export default EXT_RENDERERS;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAG/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import CHEM_RENDERERS from './chemicalFormula';
2
+ import SI_RENDERERS from './siunits';
3
+ const EXT_RENDERERS = Object.assign(Object.assign({}, CHEM_RENDERERS), SI_RENDERERS);
4
+ export default EXT_RENDERERS;
@@ -0,0 +1,7 @@
1
+ import type { NodeRenderer } from '@myst-theme/providers';
2
+ export declare const SIUnits: NodeRenderer;
3
+ declare const SI_RENDERERS: {
4
+ si: NodeRenderer<any>;
5
+ };
6
+ export default SI_RENDERERS;
7
+ //# sourceMappingURL=siunits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siunits.d.ts","sourceRoot":"","sources":["../../../src/extensions/siunits.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,eAAO,MAAM,OAAO,EAAE,YAQrB,CAAC;AAEF,QAAA,MAAM,YAAY;;CAEjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const SIUnits = (node) => {
3
+ var _a;
4
+ const space = node.number == null ? '' : ' ';
5
+ const title = `${(_a = node.number) !== null && _a !== void 0 ? _a : ''}${space}${node.alt}`;
6
+ return (_jsx("span", Object.assign({ title: title }, { children: node.value }), node.key));
7
+ };
8
+ const SI_RENDERERS = {
9
+ si: SIUnits,
10
+ };
11
+ export default SI_RENDERERS;
@@ -0,0 +1,8 @@
1
+ import type { NodeRenderer } from '@myst-theme/providers';
2
+ export declare const FootnoteReference: NodeRenderer;
3
+ declare const FOOTNOTE_RENDERERS: {
4
+ footnoteReference: NodeRenderer<any>;
5
+ footnoteDefinition: () => null;
6
+ };
7
+ export default FOOTNOTE_RENDERERS;
8
+ //# sourceMappingURL=footnotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footnotes.d.ts","sourceRoot":"","sources":["../../src/footnotes.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAoB1D,eAAO,MAAM,iBAAiB,EAAE,YAY/B,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;CAIvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { XRefProvider, useNodeRenderers, useReferences } from '@myst-theme/providers';
3
+ import { useParse } from '.';
4
+ import { select } from 'unist-util-select';
5
+ import { HoverPopover } from './components/HoverPopover';
6
+ function FootnoteDefinition({ identifier }) {
7
+ var _a, _b;
8
+ const references = useReferences();
9
+ const renderers = useNodeRenderers();
10
+ const node = (_b = (_a = references === null || references === void 0 ? void 0 : references.footnotes) === null || _a === void 0 ? void 0 : _a[identifier]) !== null && _b !== void 0 ? _b : select(`footnoteDefinition[identifier=${identifier}]`, references === null || references === void 0 ? void 0 : references.article);
11
+ const children = useParse(node, renderers);
12
+ return (_jsx(XRefProvider, { children: _jsx("div", Object.assign({ className: "hover-document w-[500px] sm:max-w-[500px] px-3" }, { children: children })) }));
13
+ }
14
+ export const FootnoteReference = (node) => {
15
+ var _a;
16
+ return (_jsx(HoverPopover, Object.assign({ openDelay: 0, card: _jsx(FootnoteDefinition, { identifier: node.identifier }) }, { children: _jsx("span", { children: _jsxs("sup", Object.assign({ className: "hover-link" }, { children: ["[", (_a = node.number) !== null && _a !== void 0 ? _a : node.identifier, "]"] })) }) }), node.key));
17
+ };
18
+ const FOOTNOTE_RENDERERS = {
19
+ footnoteReference: FootnoteReference,
20
+ // Do not render the definitions, they get pulled in by a handler
21
+ footnoteDefinition: () => null,
22
+ };
23
+ export default FOOTNOTE_RENDERERS;
@@ -0,0 +1,11 @@
1
+ import type { NodeRenderer } from '@myst-theme/providers';
2
+ type GridSpec = {
3
+ type: 'grid';
4
+ columns: number[];
5
+ };
6
+ export declare const GridRenderer: NodeRenderer<GridSpec>;
7
+ declare const GRID_RENDERERS: {
8
+ grid: NodeRenderer<GridSpec>;
9
+ };
10
+ export default GRID_RENDERERS;
11
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AA6GF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,QAAQ,CAM/C,CAAC;AAEF,QAAA,MAAM,cAAc;;CAEnB,CAAC;AAEF,eAAe,cAAc,CAAC"}