myst-to-react 0.13.6 → 0.14.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 (62) hide show
  1. package/dist/MyST.d.ts +2 -1
  2. package/dist/MyST.d.ts.map +1 -1
  3. package/dist/MyST.js +6 -6
  4. package/dist/admonitions.js +4 -4
  5. package/dist/aside.js +3 -3
  6. package/dist/basic.d.ts.map +1 -1
  7. package/dist/basic.js +67 -67
  8. package/dist/block.d.ts +11 -0
  9. package/dist/block.d.ts.map +1 -0
  10. package/dist/block.js +28 -0
  11. package/dist/card.d.ts.map +1 -1
  12. package/dist/card.js +9 -9
  13. package/dist/cite.d.ts +2 -1
  14. package/dist/cite.d.ts.map +1 -1
  15. package/dist/cite.js +8 -8
  16. package/dist/code.d.ts.map +1 -1
  17. package/dist/code.js +6 -6
  18. package/dist/components/HoverPopover.d.ts +2 -1
  19. package/dist/components/HoverPopover.d.ts.map +1 -1
  20. package/dist/components/HoverPopover.js +3 -2
  21. package/dist/crossReference.d.ts.map +1 -1
  22. package/dist/crossReference.js +4 -4
  23. package/dist/dropdown.d.ts.map +1 -1
  24. package/dist/dropdown.js +4 -4
  25. package/dist/exercise.d.ts +2 -1
  26. package/dist/exercise.d.ts.map +1 -1
  27. package/dist/exercise.js +6 -6
  28. package/dist/extensions/chemicalFormula.d.ts.map +1 -1
  29. package/dist/extensions/chemicalFormula.js +3 -2
  30. package/dist/extensions/siunits.d.ts.map +1 -1
  31. package/dist/extensions/siunits.js +2 -2
  32. package/dist/footnotes.js +2 -2
  33. package/dist/grid.d.ts.map +1 -1
  34. package/dist/grid.js +4 -4
  35. package/dist/heading.d.ts.map +1 -1
  36. package/dist/heading.js +3 -2
  37. package/dist/iframe.js +2 -2
  38. package/dist/image.d.ts.map +1 -1
  39. package/dist/image.js +4 -5
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -0
  43. package/dist/inlineError.d.ts +2 -1
  44. package/dist/inlineError.d.ts.map +1 -1
  45. package/dist/inlineError.js +3 -2
  46. package/dist/inlineExpression.d.ts.map +1 -1
  47. package/dist/inlineExpression.js +5 -4
  48. package/dist/links/index.d.ts.map +1 -1
  49. package/dist/links/index.js +15 -14
  50. package/dist/math.d.ts.map +1 -1
  51. package/dist/math.js +6 -5
  52. package/dist/proof.d.ts +2 -1
  53. package/dist/proof.d.ts.map +1 -1
  54. package/dist/proof.js +4 -4
  55. package/dist/reactive.d.ts.map +1 -1
  56. package/dist/reactive.js +8 -4
  57. package/dist/tabs.d.ts +4 -2
  58. package/dist/tabs.d.ts.map +1 -1
  59. package/dist/tabs.js +8 -8
  60. package/dist/unknown.d.ts.map +1 -1
  61. package/dist/unknown.js +2 -2
  62. package/package.json +4 -4
package/dist/dropdown.js CHANGED
@@ -3,15 +3,15 @@ import { ChevronRightIcon } from '@heroicons/react/24/solid';
3
3
  import classNames from 'classnames';
4
4
  import { MyST } from './MyST.js';
5
5
  const iconClass = 'inline-block pl-2 mr-2 -translate-y-[1px]';
6
- export const SummaryTitle = ({ node }) => {
7
- return _jsx(MyST, { ast: node.children });
6
+ export const SummaryTitle = ({ node, className }) => {
7
+ return _jsx(MyST, { ast: node.children, className: className });
8
8
  };
9
9
  export function Details({ title, children, open, className, }) {
10
10
  return (_jsxs("details", { className: classNames('rounded-md my-5 shadow dark:shadow-2xl dark:shadow-neutral-900 overflow-hidden', 'bg-gray-50 dark:bg-stone-800', className), open: open, children: [_jsx("summary", { 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", { className: "text-neutral-900 dark:text-white", children: [_jsx("span", { className: "block float-right text-sm font-thin text-neutral-700 dark:text-neutral-200", children: _jsx(ChevronRightIcon, { width: "1.5rem", height: "1.5rem", className: classNames(iconClass, 'details-toggle', 'transition-transform') }) }), title] }) }), _jsx("div", { className: "px-4 py-1 details-body", children: children })] }));
11
11
  }
12
- export const DetailsRenderer = ({ node }) => {
12
+ export const DetailsRenderer = ({ node, className }) => {
13
13
  const [title, ...rest] = node.children;
14
- return (_jsx(Details, { title: _jsx(MyST, { ast: [title] }), open: node.open, className: node.class, children: _jsx(MyST, { ast: rest }) }));
14
+ return (_jsx(Details, { title: _jsx(MyST, { ast: [title] }), open: node.open, className: classNames(node.class, className), children: _jsx(MyST, { ast: rest }) }));
15
15
  };
16
16
  const DROPDOWN_RENDERERS = {
17
17
  details: DetailsRenderer,
@@ -2,12 +2,13 @@ import type { Admonition as AdmonitionSpec } from 'myst-spec';
2
2
  import React from 'react';
3
3
  import type { NodeRenderer } from '@myst-theme/providers';
4
4
  type Color = 'gray' | 'blue' | 'green' | 'yellow' | 'orange' | 'red' | 'purple';
5
- export declare function Callout({ title, color, dropdown, children, identifier, Icon, }: {
5
+ export declare function Callout({ title, color, dropdown, children, identifier, className, Icon, }: {
6
6
  title?: React.ReactNode;
7
7
  color?: Color;
8
8
  children: React.ReactNode;
9
9
  dropdown?: boolean;
10
10
  identifier?: string;
11
+ className?: string;
11
12
  Icon?: (props: {
12
13
  width?: string;
13
14
  height?: string;
@@ -1 +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;AAO1D,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,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;CACxF,2CA8EA;AAED,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAiCzD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAgCzD,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;CAGvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
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;AAO1D,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,SAAS,EACT,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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;CACxF,2CA+EA;AAED,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAuCzD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAiCzD,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;CAGvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
package/dist/exercise.js CHANGED
@@ -36,7 +36,7 @@ const HeaderElement = ({ dropdown, className, children, }) => {
36
36
  return _jsx("div", { className: className, children: children });
37
37
  };
38
38
  const iconClass = 'inline-block pl-2 mr-2 self-center flex-none';
39
- export function Callout({ title, color, dropdown, children, identifier, Icon, }) {
39
+ export function Callout({ title, color, dropdown, children, identifier, className, Icon, }) {
40
40
  return (_jsxs(WrapperElement, { id: identifier, dropdown: dropdown, className: classNames('my-5 shadow dark:bg-stone-800 overflow-hidden', 'dark:border-l-4 border-slate-400', {
41
41
  'dark:border-gray-500/60': !color || color === 'gray',
42
42
  'dark:border-blue-500/60': color === 'blue',
@@ -45,7 +45,7 @@ export function Callout({ title, color, dropdown, children, identifier, Icon, })
45
45
  'dark:border-orange-500/60': color === 'orange',
46
46
  'dark:border-red-500/60': color === 'red',
47
47
  'dark:border-purple-500/60': color === 'purple',
48
- }), children: [_jsxs(HeaderElement, { dropdown: dropdown, className: classNames('m-0 font-medium py-2 flex min-w-0', 'text-md', 'border-y dark:border-y-0', {
48
+ }, className), children: [_jsxs(HeaderElement, { dropdown: dropdown, className: classNames('m-0 font-medium py-2 flex min-w-0', 'text-md', 'border-y dark:border-y-0', {
49
49
  'bg-gray-50/80 dark:bg-slate-900': !color || color === 'gray',
50
50
  'bg-blue-50/80 dark:bg-slate-900': color === 'blue',
51
51
  'bg-green-50/80 dark:bg-slate-900': color === 'green',
@@ -65,7 +65,7 @@ export function Callout({ title, color, dropdown, children, identifier, Icon, })
65
65
  })) })), _jsx("div", { className: classNames('text-neutral-900 dark:text-white grow self-center overflow-hidden break-words', { 'ml-4': !Icon }, // No icon!
66
66
  'group'), children: title }), dropdown && (_jsx("div", { className: "self-center flex-none text-sm font-thin text-neutral-700 dark:text-neutral-200", children: _jsx(ChevronRightIcon, { width: "1.5rem", height: "1.5rem", className: classNames(iconClass, 'transition-transform details-toggle') }) }))] }), _jsx("div", { className: classNames('px-4', { 'details-body': dropdown }), children: children })] }));
67
67
  }
68
- export const ExerciseRenderer = ({ node }) => {
68
+ export const ExerciseRenderer = ({ node, className }) => {
69
69
  var _a, _b, _c;
70
70
  if (node.hidden)
71
71
  return null;
@@ -77,9 +77,9 @@ export const ExerciseRenderer = ({ node }) => {
77
77
  const identifier = node.html_id;
78
78
  const enumerator = node.enumerator;
79
79
  const titleNode = (_jsxs(_Fragment, { children: [_jsxs(HashLink, { 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: [' ', "(", _jsx(MyST, { ast: [title] }), ")"] }))] }));
80
- return (_jsx(Callout, { identifier: identifier, title: titleNode, color: color, dropdown: isDropdown, children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
80
+ return (_jsx(Callout, { identifier: identifier, title: titleNode, color: color, dropdown: isDropdown, className: className, children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
81
81
  };
82
- export const SolutionRenderer = ({ node }) => {
82
+ export const SolutionRenderer = ({ node, className }) => {
83
83
  var _a, _b, _c;
84
84
  if (node.hidden)
85
85
  return null;
@@ -90,7 +90,7 @@ export const SolutionRenderer = ({ node }) => {
90
90
  const useTitle = ((_c = (_b = node.children) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.type) === 'admonitionTitle';
91
91
  const identifier = node.html_id;
92
92
  const titleNode = (_jsxs(_Fragment, { children: [node.gate === 'start' && 'Start of ', node.gate === 'end' && 'End of ', _jsx(MyST, { ast: [title] }), _jsx(HashLink, { id: identifier, kind: "Solution", hover: true, hideInPopup: true, children: ' #' })] }));
93
- return (_jsx(Callout, { identifier: identifier, title: useTitle ? titleNode : undefined, color: color, dropdown: isDropdown, children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
93
+ return (_jsx(Callout, { identifier: identifier, title: useTitle ? titleNode : undefined, color: color, dropdown: isDropdown, className: className, children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
94
94
  };
95
95
  const EXERCISE_RENDERERS = {
96
96
  exercise: ExerciseRenderer,
@@ -1 +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;AA0B1D,eAAO,MAAM,eAAe,EAAE,YAU7B,CAAC;AAEF,QAAA,MAAM,cAAc;;CAEnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"chemicalFormula.d.ts","sourceRoot":"","sources":["../../src/extensions/chemicalFormula.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA2B1D,eAAO,MAAM,eAAe,EAAE,YAU7B,CAAC;AAEF,QAAA,MAAM,cAAc;;CAEnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
2
3
  /**
3
4
  * Separate numbers and letters so that numbers can be <sub>2</sub>
4
5
  * @param formula a string H2O
@@ -22,9 +23,9 @@ function parseFormula(formula) {
22
23
  return [...acc, `${last !== null && last !== void 0 ? last : ''}${letter}`];
23
24
  }, []);
24
25
  }
25
- export const ChemicalFormula = ({ node }) => {
26
+ export const ChemicalFormula = ({ node, className }) => {
26
27
  const parts = parseFormula(node.value);
27
- return (_jsx("span", { className: "text-inherit", "aria-roledescription": "Chemical Formula", children: parts.map((letter, index) => {
28
+ return (_jsx("span", { className: classNames('text-inherit', className), "aria-roledescription": "Chemical Formula", children: parts.map((letter, index) => {
28
29
  if (letter.match(/[0-9]/))
29
30
  return _jsx("sub", { children: letter }, index);
30
31
  return _jsx("span", { children: letter }, index);
@@ -1 +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,YAIrB,CAAC;AAEF,QAAA,MAAM,YAAY;;CAEjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
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"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export const SIUnits = ({ node }) => {
2
+ export const SIUnits = ({ node, className }) => {
3
3
  var _a;
4
4
  const space = node.number == null ? '' : ' ';
5
5
  const title = `${(_a = node.number) !== null && _a !== void 0 ? _a : ''}${space}${node.alt}`;
6
- return _jsx("span", { title: title, children: node.value });
6
+ return (_jsx("span", { title: title, className: className, children: node.value }));
7
7
  };
8
8
  const SI_RENDERERS = {
9
9
  si: SIUnits,
package/dist/footnotes.js CHANGED
@@ -10,9 +10,9 @@ function FootnoteDefinition({ identifier }) {
10
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
11
  return (_jsx(XRefProvider, { children: _jsx("div", { className: "hover-document article w-[500px] sm:max-w-[500px] px-3 text-sm", children: _jsx(MyST, { ast: node === null || node === void 0 ? void 0 : node.children }) }) }));
12
12
  }
13
- export const FootnoteReference = ({ node }) => {
13
+ export const FootnoteReference = ({ node, className }) => {
14
14
  var _a, _b;
15
- return (_jsx(HoverPopover, { openDelay: 0, card: _jsx(FootnoteDefinition, { identifier: node.identifier }), children: _jsx("span", { id: `fnref-${node.key}`, children: _jsx("sup", { className: "hover-link", children: _jsxs(HashLink, { id: `fn-${node.identifier}`, title: "Link to Footnote", scrollBehavior: "instant", canSelectText: true, children: ["[", (_b = (_a = node.enumerator) !== null && _a !== void 0 ? _a : node.number) !== null && _b !== void 0 ? _b : node.identifier, "]"] }) }) }) }));
15
+ return (_jsx(HoverPopover, { openDelay: 0, card: _jsx(FootnoteDefinition, { identifier: node.identifier }), children: _jsx("span", { id: `fnref-${node.key}`, className: className, children: _jsx("sup", { className: "hover-link", children: _jsxs(HashLink, { id: `fn-${node.identifier}`, title: "Link to Footnote", scrollBehavior: "instant", canSelectText: true, children: ["[", (_b = (_a = node.enumerator) !== null && _a !== void 0 ? _a : node.number) !== null && _b !== void 0 ? _b : node.identifier, "]"] }) }) }) }));
16
16
  };
17
17
  const FOOTNOTE_RENDERERS = {
18
18
  footnoteReference: FootnoteReference,
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../src/grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,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"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../src/grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAuHF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,QAAQ,CAM/C,CAAC;AAEF,QAAA,MAAM,cAAc;;CAEnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
package/dist/grid.js CHANGED
@@ -97,13 +97,13 @@ function gridColumnClasses(columns) {
97
97
  getColumnClassName(gridClassNames.xl, columns[3]),
98
98
  ].join(' ');
99
99
  }
100
- function Grid({ columns, children }) {
100
+ function Grid({ columns, children, className, }) {
101
101
  const gridClasses = gridColumnClasses(columns);
102
102
  const gutterClasses = 'gap-4';
103
- return (_jsx("div", { className: classNames('myst-grid grid my-5', gridClasses, gutterClasses), children: children }));
103
+ return (_jsx("div", { className: classNames('myst-grid grid my-5', gridClasses, gutterClasses, className), children: children }));
104
104
  }
105
- export const GridRenderer = ({ node }) => {
106
- return (_jsx(Grid, { columns: node.columns, children: _jsx(MyST, { ast: node.children }) }));
105
+ export const GridRenderer = ({ node, className }) => {
106
+ return (_jsx(Grid, { columns: node.columns, className: className, children: _jsx(MyST, { ast: node.children }) }));
107
107
  };
108
108
  const GRID_RENDERERS = {
109
109
  grid: GridRenderer,
@@ -1 +1 @@
1
- {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../src/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA4B1D,QAAA,MAAM,iBAAiB;;CAEtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../src/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA6B1D,QAAA,MAAM,iBAAiB;;CAEtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
package/dist/heading.js CHANGED
@@ -2,14 +2,15 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { createElement as e } from 'react';
3
3
  import { MyST } from './MyST.js';
4
4
  import { HashLink } from './hashLink.js';
5
- const Heading = ({ node }) => {
5
+ import classNames from 'classnames';
6
+ const Heading = ({ node, className }) => {
6
7
  const { enumerator, depth, key, identifier, html_id } = node;
7
8
  const id = html_id || identifier || key;
8
9
  const textContent = (_jsxs(_Fragment, { children: [enumerator && _jsx("span", { className: "mr-3 select-none", children: enumerator }), _jsx("span", { className: "heading-text", children: _jsx(MyST, { ast: node.children }) }), _jsx(HashLink, { id: id, kind: "Section", className: "px-2 font-normal", hover: true, hideInPopup: true })] }));
9
10
  // The `heading-text` class is picked up in the Outline to select without the enumerator and "#" link
10
11
  return e(`h${depth}`, {
11
12
  id,
12
- className: 'relative group',
13
+ className: classNames('relative group', className),
13
14
  }, textContent);
14
15
  };
15
16
  const HEADING_RENDERERS = {
package/dist/iframe.js CHANGED
@@ -22,9 +22,9 @@ function getStyleValue(width) {
22
22
  }
23
23
  return width;
24
24
  }
25
- export const IFrame = ({ node }) => {
25
+ export const IFrame = ({ node, className }) => {
26
26
  const width = getStyleValue(node.width) || 70;
27
- return (_jsx("div", { id: node.label || undefined, style: { textAlign: node.align || 'center' }, className: classNames('leading-[0]', node.class), children: _jsx("div", { className: "relative inline-block", style: {
27
+ return (_jsx("div", { id: node.label || undefined, style: { textAlign: node.align || 'center' }, className: classNames('leading-[0]', node.class, className), children: _jsx("div", { className: "relative inline-block", style: {
28
28
  paddingBottom: '60%',
29
29
  width: `min(max(${width}%, 500px), 100%)`,
30
30
  }, children: _jsx("iframe", { width: "100%", height: "100%", src: node.src, allowFullScreen: true, allow: "autoplay", style: {
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,KAAK,SAAS,GAAG,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgIrD,eAAO,MAAM,KAAK,EAAE,YAAY,CAAC,SAAS,CAezC,CAAC;AAEF,QAAA,MAAM,eAAe;;CAEpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,KAAK,SAAS,GAAG,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgIrD,eAAO,MAAM,KAAK,EAAE,YAAY,CAAC,SAAS,CAezC,CAAC;AAEF,QAAA,MAAM,eAAe;;CAEpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/dist/image.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
2
3
  function getStyleValue(width) {
3
4
  if (typeof width === 'number' && Number.isNaN(width)) {
4
5
  // If it is nan, return undefined.
@@ -32,9 +33,7 @@ function alignToMargin(align) {
32
33
  }
33
34
  }
34
35
  function Video({ className, id, src, urlSource, align = 'center', width, height, }) {
35
- return (_jsx("video", {
36
- // className={className}
37
- id: id, style: Object.assign({ width: getStyleValue(width), height: getStyleValue(height) }, alignToMargin(align)), src: src, "data-canonical-url": urlSource, autoPlay: true,
36
+ return (_jsx("video", { className: className, id: id, style: Object.assign({ width: getStyleValue(width), height: getStyleValue(height) }, alignToMargin(align)), src: src, "data-canonical-url": urlSource, autoPlay: true,
38
37
  // For autoplay, the element needs to be muted to actually start!
39
38
  muted: true, "webkit-playsinline": "true", playsInline: true, loop: true }));
40
39
  }
@@ -47,8 +46,8 @@ function Picture({ className, id, src, srcOptimized, urlSource, align = 'center'
47
46
  return image;
48
47
  return (_jsxs("picture", { className: className, children: [_jsx("source", { srcSet: srcOptimized, type: "image/webp" }), image] }));
49
48
  }
50
- export const Image = ({ node }) => {
51
- return (_jsx(Picture, { className: node.class, id: node.html_id || node.identifier || node.key, src: node.url, srcOptimized: node.urlOptimized, alt: node.alt || node.title, width: node.width || undefined, height: node.height || undefined, align: node.align,
49
+ export const Image = ({ node, className }) => {
50
+ return (_jsx(Picture, { className: classNames(node.class, className), id: node.html_id || node.identifier || node.key, src: node.url, srcOptimized: node.urlOptimized, alt: node.alt || node.title, width: node.width || undefined, height: node.height || undefined, align: node.align,
52
51
  // Note that sourceUrl is for backwards compatibility
53
52
  urlSource: node.urlSource || node.sourceUrl }));
54
53
  };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { Block } from './block.js';
1
2
  export { CopyIcon, HoverPopover, Tooltip, LinkCard } from './components/index.js';
2
3
  export { CodeBlock } from './code.js';
3
4
  export { HashLink, scrollToElement } from './hashLink.js';
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,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,wDA2B7B,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { mergeRenderers } from '@myst-theme/providers';
2
2
  import BASIC_RENDERERS from './basic.js';
3
3
  import ADMONITION_RENDERERS from './admonitions.js';
4
4
  import DROPDOWN_RENDERERS from './dropdown.js';
5
+ import BLOCK_RENDERERS from './block.js';
5
6
  import CARD_RENDERERS from './card.js';
6
7
  import GRID_RENDERERS from './grid.js';
7
8
  import CITE_RENDERERS from './cite.js';
@@ -21,6 +22,7 @@ import PROOF_RENDERERS from './proof.js';
21
22
  import EXERCISE_RENDERERS from './exercise.js';
22
23
  import ASIDE_RENDERERS from './aside.js';
23
24
  import UNKNOWN_MYST_RENDERERS from './unknown.js';
25
+ export { Block } from './block.js';
24
26
  export { CopyIcon, HoverPopover, Tooltip, LinkCard } from './components/index.js';
25
27
  export { CodeBlock } from './code.js';
26
28
  export { HashLink, scrollToElement } from './hashLink.js';
@@ -31,6 +33,7 @@ export { useFetchMdast } from './crossReference.js';
31
33
  export const DEFAULT_RENDERERS = mergeRenderers([
32
34
  BASIC_RENDERERS,
33
35
  UNKNOWN_MYST_RENDERERS,
36
+ BLOCK_RENDERERS,
34
37
  IMAGE_RENDERERS,
35
38
  LINK_RENDERERS,
36
39
  CODE_RENDERERS,
@@ -1,7 +1,8 @@
1
1
  interface Props {
2
2
  value: string;
3
3
  message?: string;
4
+ className?: string;
4
5
  }
5
- export declare function InlineError({ value, message }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export declare function InlineError({ value, message, className }: Props): import("react/jsx-runtime").JSX.Element;
6
7
  export {};
7
8
  //# sourceMappingURL=inlineError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inlineError.d.ts","sourceRoot":"","sources":["../src/inlineError.tsx"],"names":[],"mappings":"AAEA,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,2CAOpD"}
1
+ {"version":3,"file":"inlineError.d.ts","sourceRoot":"","sources":["../src/inlineError.tsx"],"names":[],"mappings":"AAGA,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,2CAO/D"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ExclamationCircleIcon } from '@heroicons/react/24/outline';
3
- export function InlineError({ value, message }) {
4
- return (_jsxs("span", { className: "text-yellow-600", title: message || value, children: [_jsx(ExclamationCircleIcon, { width: "1rem", height: "1rem", className: "inline mr-1" }), value] }));
3
+ import classNames from 'classnames';
4
+ export function InlineError({ value, message, className }) {
5
+ return (_jsxs("span", { className: classNames('text-yellow-600', className), title: message || value, children: [_jsx(ExclamationCircleIcon, { width: "1rem", height: "1rem", className: "inline mr-1" }), value] }));
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inlineExpression.d.ts","sourceRoot":"","sources":["../src/inlineExpression.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,eAAO,MAAM,gBAAgB,EAAE,YAe9B,CAAC;AAEF,QAAA,MAAM,2BAA2B;;CAEhC,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"inlineExpression.d.ts","sourceRoot":"","sources":["../src/inlineExpression.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAM1D,eAAO,MAAM,gBAAgB,EAAE,YAsB9B,CAAC;AAEF,QAAA,MAAM,2BAA2B;;CAEhC,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
@@ -2,16 +2,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { InlineError } from './inlineError.js';
3
3
  import { Tooltip } from './components/index.js';
4
4
  import { MyST } from './MyST.js';
5
- export const InlineExpression = ({ node }) => {
5
+ import classNames from 'classnames';
6
+ export const InlineExpression = ({ node, className }) => {
6
7
  var _a, _b, _c;
7
8
  if (!node.result) {
8
- return _jsx(InlineError, { value: `Unexecuted inline expression for: ${node.value}` });
9
+ return (_jsx(InlineError, { value: `Unexecuted inline expression for: ${node.value}`, className: className }));
9
10
  }
10
11
  if (((_a = node.result) === null || _a === void 0 ? void 0 : _a.status) !== 'ok') {
11
- return _jsx(InlineError, { value: `${(_b = node.result) === null || _b === void 0 ? void 0 : _b.ename}: ${(_c = node.result) === null || _c === void 0 ? void 0 : _c.evalue}` });
12
+ return (_jsx(InlineError, { value: `${(_b = node.result) === null || _b === void 0 ? void 0 : _b.ename}: ${(_c = node.result) === null || _c === void 0 ? void 0 : _c.evalue}`, className: className }));
12
13
  }
13
14
  // TODO: something with Thebe in the future!
14
- return (_jsx(Tooltip, { title: _jsx("code", { children: node.value }), children: _jsx("span", { className: "border-b border-dotted cursor-help", children: _jsx(MyST, { ast: node.children }) }) }));
15
+ return (_jsx(Tooltip, { title: _jsx("code", { children: node.value }), children: _jsx("span", { className: classNames('border-b border-dotted cursor-help', className), children: _jsx(MyST, { ast: node.children }) }) }));
15
16
  };
16
17
  const INLINE_EXPRESSION_RENDERERS = {
17
18
  inlineExpression: InlineExpression,
@@ -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,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;AAkDxE,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAW1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,eAAe,CAiB5D,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"}
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;AASzE,KAAK,eAAe,GAAG,IAAI,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAkDxE,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAW1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,eAAe,CAiB5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAI1D,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,eAAe,CAQzD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,eAAe,CAmBpD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,YAAY,CAAC,eAAe,CAmCnD,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,aAerB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -7,6 +7,7 @@ import { RRIDLink } from './rrid.js';
7
7
  import { RORLink } from './ror.js';
8
8
  import { GithubLink } from './github.js';
9
9
  import { MyST } from '../MyST.js';
10
+ import classNames from 'classnames';
10
11
  function getPageInfo(site, path) {
11
12
  var _a;
12
13
  if (!site)
@@ -28,40 +29,40 @@ function InternalLink({ url, children, className, }) {
28
29
  }
29
30
  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", className: className, children: children }) }));
30
31
  }
31
- export const WikiLinkRenderer = ({ node }) => {
32
+ export const WikiLinkRenderer = ({ node, className }) => {
32
33
  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, className: node.class, children: _jsx(MyST, { ast: node.children }) }));
34
+ 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, className: classNames(node.class, className), children: _jsx(MyST, { ast: node.children }) }));
34
35
  };
35
- export const GithubLinkRenderer = ({ node }) => {
36
+ export const GithubLinkRenderer = ({ node, className }) => {
36
37
  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, className: node.class, children: _jsx(MyST, { ast: node.children }) }));
38
+ 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, className: classNames(node.class, className), children: _jsx(MyST, { ast: node.children }) }));
38
39
  };
39
- export const RRIDLinkRenderer = ({ node }) => {
40
+ export const RRIDLinkRenderer = ({ node, className }) => {
40
41
  var _a;
41
- return _jsx(RRIDLink, { rrid: (_a = node.data) === null || _a === void 0 ? void 0 : _a.rrid, className: node.class });
42
+ return (_jsx(RRIDLink, { rrid: (_a = node.data) === null || _a === void 0 ? void 0 : _a.rrid, className: classNames(node.class, className) }));
42
43
  };
43
- export const RORLinkRenderer = ({ node }) => {
44
+ export const RORLinkRenderer = ({ node, className }) => {
44
45
  var _a;
45
- return _jsx(RORLink, { node: node, ror: (_a = node.data) === null || _a === void 0 ? void 0 : _a.ror, className: node.class });
46
+ return (_jsx(RORLink, { node: node, ror: (_a = node.data) === null || _a === void 0 ? void 0 : _a.ror, className: classNames(node.class, className) }));
46
47
  };
47
- export const SimpleLink = ({ node }) => {
48
+ export const SimpleLink = ({ node, className }) => {
48
49
  var _a;
49
50
  const internal = (_a = node.internal) !== null && _a !== void 0 ? _a : false;
50
51
  if (internal) {
51
- return (_jsx(InternalLink, { url: node.url, className: node.class, children: _jsx(MyST, { ast: node.children }) }));
52
+ return (_jsx(InternalLink, { url: node.url, className: classNames(node.class, className), children: _jsx(MyST, { ast: node.children }) }));
52
53
  }
53
- return (_jsx("a", { target: "_blank", rel: "noreferrer", href: node.url, className: node.class, children: _jsx(MyST, { ast: node.children }) }));
54
+ return (_jsx("a", { target: "_blank", rel: "noreferrer", href: node.url, className: classNames(node.class, className), children: _jsx(MyST, { ast: node.children }) }));
54
55
  };
55
- export const linkBlock = ({ node }) => {
56
+ export const linkBlock = ({ node, className }) => {
56
57
  var _a;
57
58
  const iconClass = 'self-center transition-transform flex-none ml-3';
58
59
  const containerClass = 'flex-1 p-4 my-5 block border font-normal hover:border-blue-500 dark:hover:border-blue-400 no-underline hover:text-blue-600 dark:hover:text-blue-400 text-gray-600 dark:text-gray-100 border-gray-200 dark:border-gray-500 rounded shadow-sm hover:shadow-lg dark:shadow-neutral-700';
59
60
  const internal = (_a = node.internal) !== null && _a !== void 0 ? _a : false;
60
61
  const nested = (_jsxs("div", { className: "flex h-full align-middle", children: [_jsxs("div", { className: "flex-grow", children: [node.title, _jsx("div", { className: "text-xs text-gray-500 dark:text-gray-400", children: _jsx(MyST, { ast: node.children }) })] }), internal && _jsx(LinkIcon, { width: "1.5rem", height: "1.5rem", className: iconClass }), !internal && _jsx(ExternalLinkIcon, { width: "1.5rem", height: "1.5rem", className: iconClass })] }));
61
62
  if (internal) {
62
- return (_jsx("a", { href: node.url, className: containerClass, children: nested }));
63
+ return (_jsx("a", { href: node.url, className: classNames(containerClass, className), children: nested }));
63
64
  }
64
- return (_jsx("a", { className: containerClass, target: "_blank", rel: "noopener noreferrer", href: node.url, children: nested }));
65
+ return (_jsx("a", { className: classNames(containerClass, className), target: "_blank", rel: "noopener noreferrer", href: node.url, children: nested }));
65
66
  };
66
67
  const LINK_RENDERERS = {
67
68
  link: {
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA2B1D,KAAK,QAAQ,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAwCF,QAAA,MAAM,cAAc;;;CAGnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA4B1D,KAAK,QAAQ,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAwCF,QAAA,MAAM,cAAc;;;CAGnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
package/dist/math.js CHANGED
@@ -2,18 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ExclamationCircleIcon } from '@heroicons/react/24/outline';
3
3
  import { InlineError } from './inlineError.js';
4
4
  import { HashLink } from './hashLink.js';
5
- const mathRenderer = ({ node }) => {
5
+ import classNames from 'classnames';
6
+ const mathRenderer = ({ node, className }) => {
6
7
  if (node.type === 'math') {
7
8
  if (node.error || !node.html) {
8
- return (_jsxs("pre", { title: node.message, children: [_jsxs("span", { className: "text-red-500", children: [_jsx(ExclamationCircleIcon, { width: "1rem", height: "1rem", className: "inline mr-1" }), node.message, '\n\n'] }), node.value] }));
9
+ return (_jsxs("pre", { title: node.message, className: className, children: [_jsxs("span", { className: "text-red-500", children: [_jsx(ExclamationCircleIcon, { width: "1rem", height: "1rem", className: "inline mr-1" }), node.message, '\n\n'] }), node.value] }));
9
10
  }
10
11
  const id = node.html_id || node.identifier || node.key;
11
- return (_jsxs("div", { id: id, className: "flex my-5 group", children: [_jsx("div", { dangerouslySetInnerHTML: { __html: node.html }, className: "flex-grow overflow-x-auto overflow-y-hidden" }), node.enumerator && (_jsx("div", { className: "relative self-center flex-none pl-2 m-0 text-right select-none", children: _jsxs(HashLink, { id: id, kind: "Equation", className: "text-inherit hover:text-inherit", children: ["(", node.enumerator, ")"] }) }))] }));
12
+ return (_jsxs("div", { id: id, className: classNames('flex my-5 group', className), children: [_jsx("div", { dangerouslySetInnerHTML: { __html: node.html }, className: "flex-grow overflow-x-auto overflow-y-hidden" }), node.enumerator && (_jsx("div", { className: "relative self-center flex-none pl-2 m-0 text-right select-none", children: _jsxs(HashLink, { id: id, kind: "Equation", className: "text-inherit hover:text-inherit", children: ["(", node.enumerator, ")"] }) }))] }));
12
13
  }
13
14
  if (node.error || !node.html) {
14
- return _jsx(InlineError, { value: node.value, message: node.message });
15
+ return _jsx(InlineError, { value: node.value, message: node.message, className: className });
15
16
  }
16
- return _jsx("span", { dangerouslySetInnerHTML: { __html: node.html } });
17
+ return _jsx("span", { dangerouslySetInnerHTML: { __html: node.html }, className: className });
17
18
  // return <Math html={node.html} value={node.value as string} />;
18
19
  };
19
20
  const MATH_RENDERERS = {
package/dist/proof.d.ts CHANGED
@@ -19,7 +19,7 @@ export declare enum ProofKind {
19
19
  theorem = "theorem"
20
20
  }
21
21
  type Color = 'gray' | 'blue' | 'green' | 'yellow' | 'orange' | 'red' | 'purple';
22
- export declare function Proof({ title, kind, color, dropdown, children, identifier, enumerator, }: {
22
+ export declare function Proof({ title, kind, color, dropdown, children, identifier, enumerator, className, }: {
23
23
  title?: React.ReactNode;
24
24
  color?: Color;
25
25
  kind?: ProofKind;
@@ -27,6 +27,7 @@ export declare function Proof({ title, kind, color, dropdown, children, identifi
27
27
  dropdown?: boolean;
28
28
  identifier?: string;
29
29
  enumerator?: string;
30
+ className?: string;
30
31
  }): import("react/jsx-runtime").JSX.Element;
31
32
  export declare const ProofRenderer: NodeRenderer<AdmonitionSpec>;
32
33
  declare const PROOF_RENDERERS: {
@@ -1 +1 @@
1
- {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../src/proof.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;AAO1D,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,OAAO,YAAY;CACpB;AAED,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAqFhF,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE;IACD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,2CA8DA;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,cAAc,CAoBtD,CAAC;AAEF,QAAA,MAAM,eAAe;;CAEpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../src/proof.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;AAO1D,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,OAAO,YAAY;CACpB;AAED,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAqFhF,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,GACV,EAAE;IACD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CA+DA;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,cAAc,CAqBtD,CAAC;AAEF,QAAA,MAAM,eAAe;;CAEpB,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/dist/proof.js CHANGED
@@ -69,7 +69,7 @@ const HeaderElement = ({ dropdown, className, children, }) => {
69
69
  return _jsx("div", { className: className, children: children });
70
70
  };
71
71
  const iconClass = 'inline-block pl-2 mr-2 self-center flex-none';
72
- export function Proof({ title, kind, color, dropdown, children, identifier, enumerator, }) {
72
+ export function Proof({ title, kind, color, dropdown, children, identifier, enumerator, className, }) {
73
73
  return (_jsxs(WrapperElement, { id: identifier, dropdown: dropdown, className: classNames('my-5 shadow dark:bg-stone-800 overflow-hidden', 'dark:border-l-4 border-slate-400', {
74
74
  'dark:border-gray-500/60': !color || color === 'gray',
75
75
  'dark:border-blue-500/60': color === 'blue',
@@ -78,7 +78,7 @@ export function Proof({ title, kind, color, dropdown, children, identifier, enum
78
78
  'dark:border-orange-500/60': color === 'orange',
79
79
  'dark:border-red-500/60': color === 'red',
80
80
  'dark:border-purple-500/60': color === 'purple',
81
- }), children: [_jsxs(HeaderElement, { dropdown: dropdown, className: classNames('m-0 font-medium py-2 flex min-w-0', 'text-md', 'border-y dark:border-y-0', {
81
+ }, className), children: [_jsxs(HeaderElement, { dropdown: dropdown, className: classNames('m-0 font-medium py-2 flex min-w-0', 'text-md', 'border-y dark:border-y-0', {
82
82
  'bg-gray-50/80 dark:bg-slate-900': !color || color === 'gray',
83
83
  'bg-blue-50/80 dark:bg-slate-900': color === 'blue',
84
84
  'bg-green-50/80 dark:bg-slate-900': color === 'green',
@@ -89,13 +89,13 @@ export function Proof({ title, kind, color, dropdown, children, identifier, enum
89
89
  'cursor-pointer hover:shadow-[inset_0_0_0px_30px_#00000003] dark:hover:shadow-[inset_0_0_0px_30px_#FFFFFF03]': dropdown,
90
90
  }), children: [_jsxs("div", { className: classNames('text-neutral-900 dark:text-white grow self-center overflow-hidden break-words', 'ml-4'), children: [_jsxs(HashLink, { id: identifier, kind: capitalize(kind), children: [capitalize(kind), " ", enumerator] }), ' ', title && _jsxs(_Fragment, { children: ["(", title, ")"] })] }), dropdown && (_jsx("div", { className: "self-center flex-none text-sm font-thin text-neutral-700 dark:text-neutral-200", children: _jsx(ChevronRightIcon, { width: "1.5rem", height: "1.5rem", className: classNames(iconClass, 'transition-transform details-toggle') }) }))] }), _jsx("div", { className: classNames('px-4', { 'details-body': dropdown }), children: children })] }));
91
91
  }
92
- export const ProofRenderer = ({ node }) => {
92
+ export const ProofRenderer = ({ node, className }) => {
93
93
  const [title, ...rest] = node.children;
94
94
  const classes = getClasses(node.class);
95
95
  const { color } = getColor({ kind: node.kind, classes });
96
96
  const isDropdown = classes.includes('dropdown');
97
97
  const useTitle = (title === null || title === void 0 ? void 0 : title.type) === 'admonitionTitle';
98
- return (_jsx(Proof, { identifier: node.html_id, title: useTitle ? _jsx(MyST, { ast: [title] }) : undefined, kind: node.kind, enumerator: node.enumerator, color: color, dropdown: isDropdown, children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
98
+ return (_jsx(Proof, { identifier: node.html_id, title: useTitle ? _jsx(MyST, { ast: [title] }) : undefined, kind: node.kind, enumerator: node.enumerator, color: color, dropdown: isDropdown, className: className, children: useTitle ? _jsx(MyST, { ast: rest }) : _jsx(MyST, { ast: node.children }) }));
99
99
  };
100
100
  const PROOF_RENDERERS = {
101
101
  proof: ProofRenderer,
@@ -1 +1 @@
1
- {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../src/reactive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,eAAO,MAAM,IAAI,EAAE,YAOlB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,YAOtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,YActB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,YAapB,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;;;CAKvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../src/reactive.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,eAAO,MAAM,IAAI,EAAE,YAQlB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,YAQtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,YAetB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,YAcpB,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;;;CAKvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
package/dist/reactive.js CHANGED
@@ -1,21 +1,23 @@
1
1
  import { createElement as e } from 'react';
2
- export const RVar = ({ node }) => {
2
+ export const RVar = ({ node, className }) => {
3
3
  return e('r-var', {
4
4
  name: node.name,
5
5
  value: node.value,
6
6
  ':value': node.valueFunction,
7
7
  format: node.format,
8
+ className: className,
8
9
  });
9
10
  };
10
- export const RDisplay = ({ node }) => {
11
+ export const RDisplay = ({ node, className }) => {
11
12
  return e('r-display', {
12
13
  name: node.name,
13
14
  value: node.value,
14
15
  ':value': node.valueFunction,
15
16
  format: node.format,
17
+ className: className,
16
18
  });
17
19
  };
18
- export const RDynamic = ({ node }) => {
20
+ export const RDynamic = ({ node, className }) => {
19
21
  return e('r-dynamic', {
20
22
  name: node.name,
21
23
  value: node.value,
@@ -28,9 +30,10 @@ export const RDynamic = ({ node }) => {
28
30
  ':step': node.stepFunction,
29
31
  ':change': node.changeFunction,
30
32
  format: node.format,
33
+ className: className,
31
34
  });
32
35
  };
33
- export const RRange = ({ node }) => {
36
+ export const RRange = ({ node, className }) => {
34
37
  return e('r-range', {
35
38
  name: node.name,
36
39
  value: node.value,
@@ -42,6 +45,7 @@ export const RRange = ({ node }) => {
42
45
  step: node.step,
43
46
  ':step': node.stepFunction,
44
47
  ':change': node.changeFunction,
48
+ className: className,
45
49
  });
46
50
  };
47
51
  const REACTIVE_RENDERERS = {
package/dist/tabs.d.ts CHANGED
@@ -13,12 +13,14 @@ type Tab = {
13
13
  sync?: string;
14
14
  selected?: boolean;
15
15
  };
16
- export declare function TabSet({ tabs, children }: {
16
+ export declare function TabSet({ tabs, children, className, }: {
17
17
  tabs: Tab[];
18
18
  children: React.ReactNode;
19
+ className?: string;
19
20
  }): import("react/jsx-runtime").JSX.Element;
20
- export declare function TabItem({ id, children, }: Omit<Tab, 'title' | 'sync'> & {
21
+ export declare function TabItem({ id, children, className, }: Omit<Tab, 'title' | 'sync'> & {
21
22
  children: React.ReactNode;
23
+ className?: string;
22
24
  }): import("react/jsx-runtime").JSX.Element;
23
25
  export declare const TabSetRenderer: NodeRenderer;
24
26
  export declare const TabItemRenderer: NodeRenderer<TabItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../src/tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrE,UAAU,OAAQ,SAAQ,WAAW;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD,KAAK,GAAG,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CA+CpF;AAED,wBAAgB,OAAO,CAAC,EACtB,EAAE,EACF,QAAQ,GACT,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAI7D;AAED,eAAO,MAAM,cAAc,EAAE,YAY5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,CAMjD,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAG/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../src/tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrE,UAAU,OAAQ,SAAQ,WAAW;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD,KAAK,GAAG,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,EAAE;IACD,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CA+CA;AAED,wBAAgB,OAAO,CAAC,EACtB,EAAE,EACF,QAAQ,EACR,SAAS,GACV,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAIjF;AAED,eAAO,MAAM,cAAc,EAAE,YAY5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,CAMjD,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAG/C,CAAC;AAEF,eAAe,aAAa,CAAC"}