@rasenganjs/mdx 1.0.6 → 1.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## Unreleased
2
+
3
+ ## 1.1.0-beta.1 (2025-03-12)
4
+
5
+ ## 1.1.0-beta.0 (2025-03-07)
@@ -1,32 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createElement, useMemo } from 'react';
3
+ import { generateAnchor } from '../utils/extract-toc.js';
3
4
  export const Heading = ({ variant }) => {
4
5
  return ({ children }) => {
5
6
  const { text, id } = useMemo(() => {
6
- // Regex pattern to match links in the format [#link text]
7
- const regex = new RegExp('^\\[#.+\\]');
8
- // split the children into an array of strings based on space
9
- const childrenArray = children.split(' [#');
10
- let lastWord = '';
11
- let restOfTheWords = '';
12
- let link = '';
13
- // Check if we have more than one word and if the last word is a link
14
- if (childrenArray.length > 1 &&
15
- childrenArray.at(-1).includes(']') &&
16
- regex.test(`[#${childrenArray.at(-1)}`)) {
17
- lastWord = childrenArray.pop();
18
- }
19
- if (lastWord) {
20
- link = lastWord.replace(']', '').split(' ').join('-').toLowerCase();
21
- restOfTheWords = childrenArray[0];
22
- }
23
- else {
24
- link = children.split(' ').join('-').toLowerCase();
25
- restOfTheWords = children;
26
- }
7
+ const { id, text } = generateAnchor(children);
27
8
  return {
28
- id: variant === 'h1' ? undefined : link,
29
- text: restOfTheWords,
9
+ id: variant === 'h1' ? undefined : id,
10
+ text,
30
11
  };
31
12
  }, [children]);
32
13
  const heading = createElement(variant, {
@@ -34,7 +15,13 @@ export const Heading = ({ variant }) => {
34
15
  className: 'heading',
35
16
  children: text,
36
17
  });
37
- return (_jsxs("div", { className: "ra-heading-wrapper", children: [heading, id && (_jsx("a", { href: `#${id}`, children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "24", height: "24", color: "#ffffff", fill: "none", children: [_jsx("path", { d: "M10 13.229C10.1416 13.4609 10.3097 13.6804 10.5042 13.8828C11.7117 15.1395 13.5522 15.336 14.9576 14.4722C15.218 14.3121 15.4634 14.1157 15.6872 13.8828L18.9266 10.5114C20.3578 9.02184 20.3578 6.60676 18.9266 5.11718C17.4953 3.6276 15.1748 3.62761 13.7435 5.11718L13.03 5.85978", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }), _jsx("path", { d: "M10.9703 18.14L10.2565 18.8828C8.82526 20.3724 6.50471 20.3724 5.07345 18.8828C3.64218 17.3932 3.64218 14.9782 5.07345 13.4886L8.31287 10.1172C9.74413 8.62761 12.0647 8.6276 13.4959 10.1172C13.6904 10.3195 13.8584 10.539 14 10.7708", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }))] }));
18
+ const handleClick = (e, id) => {
19
+ e.preventDefault();
20
+ const element = document.getElementById(id);
21
+ element?.scrollIntoView({ behavior: 'smooth' });
22
+ history.pushState(null, '', `#${id}`); // Update the URL
23
+ };
24
+ return (_jsxs("div", { className: "ra-heading-wrapper", children: [heading, id && (_jsx("a", { href: `#${id}`, onClick: (e) => handleClick(e, id), children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "24", height: "24", color: "#ffffff", fill: "none", children: [_jsx("path", { d: "M10 13.229C10.1416 13.4609 10.3097 13.6804 10.5042 13.8828C11.7117 15.1395 13.5522 15.336 14.9576 14.4722C15.218 14.3121 15.4634 14.1157 15.6872 13.8828L18.9266 10.5114C20.3578 9.02184 20.3578 6.60676 18.9266 5.11718C17.4953 3.6276 15.1748 3.62761 13.7435 5.11718L13.03 5.85978", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }), _jsx("path", { d: "M10.9703 18.14L10.2565 18.8828C8.82526 20.3724 6.50471 20.3724 5.07345 18.8828C3.64218 17.3932 3.64218 14.9782 5.07345 13.4886L8.31287 10.1172C9.74413 8.62761 12.0647 8.6276 13.4959 10.1172C13.6904 10.3195 13.8584 10.539 14 10.7708", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }) }))] }));
38
25
  };
39
26
  };
40
27
  //# sourceMappingURL=heading.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG/C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAgB,EAAE,EAAE;IACnD,OAAO,CAAC,EAAE,QAAQ,EAAiB,EAAE,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;YAChC,0DAA0D;YAC1D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;YAEvC,6DAA6D;YAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,qEAAqE;YACrE,IACE,aAAa,CAAC,MAAM,GAAG,CAAC;gBACxB,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACvC,CAAC;gBACD,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;YACjC,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACpE,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnD,cAAc,GAAG,QAAQ,CAAC;YAC5B,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACvC,IAAI,EAAE,cAAc;aACrB,CAAC;QACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEf,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE;YACrC,EAAE;YACF,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aAChC,OAAO,EACP,EAAE,IAAI,CACL,YAAG,IAAI,EAAE,IAAI,EAAE,EAAE,YACf,eACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,MAAM,aAEX,eACE,CAAC,EAAC,uRAAuR,EACzR,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,GACrB,EACF,eACE,CAAC,EAAC,yOAAyO,EAC3O,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,GACrB,IACE,GACJ,CACL,IACG,CACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAgB,EAAE,EAAE;IACnD,OAAO,CAAC,EAAE,QAAQ,EAAiB,EAAE,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE9C,OAAO;gBACL,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBACrC,IAAI;aACL,CAAC;QACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEf,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE;YACrC,EAAE;YACF,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,CAClB,CAAkD,EAClD,EAAU,EACV,EAAE;YACF,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEhD,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB;QAC1D,CAAC,CAAC;QAEF,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aAChC,OAAO,EACP,EAAE,IAAI,CACL,YAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,YACnD,eACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,MAAM,aAEX,eACE,CAAC,EAAC,uRAAuR,EACzR,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,GACrB,EACF,eACE,CAAC,EAAC,yOAAyO,EAC3O,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,GACrB,IACE,GACJ,CACL,IACG,CACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { MDXRenderer } from './renderer.js';
2
2
  import { Markdown } from './markdown.js';
3
- export { Markdown, MDXRenderer };
3
+ import { TableOfContents } from './toc.js';
4
+ export { Markdown, MDXRenderer, TableOfContents };
@@ -1,6 +1,7 @@
1
1
  // Import statements
2
2
  import { MDXRenderer } from './renderer.js';
3
3
  import { Markdown } from './markdown.js';
4
+ import { TableOfContents } from './toc.js';
4
5
  // Export statements
5
- export { Markdown, MDXRenderer };
6
+ export { Markdown, MDXRenderer, TableOfContents };
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- declare function Markdown({ content, className, }: {
2
+ declare function Markdown({ content, className, overwriteStyle, }: {
3
3
  content: string;
4
4
  className?: React.ComponentProps<'section'>['className'];
5
+ overwriteStyle?: boolean;
5
6
  }): import("react/jsx-runtime").JSX.Element;
6
7
  export { Markdown };
@@ -8,8 +8,8 @@ import remarkParse from 'remark-parse';
8
8
  import remarkRehype from 'remark-rehype';
9
9
  // import rehypePrettyCode from "rehype-pretty-code";
10
10
  import { CodeBlock2 } from './codeblock2.js';
11
- function Markdown({ content, className, }) {
12
- return (_jsx("section", { className: 'rasengan-markdown-body ' + className, children: _jsx(MarkdownComponent, { children: content, remarkPlugins: [remarkParse, remarkGfm], rehypePlugins: [
11
+ function Markdown({ content, className, overwriteStyle, }) {
12
+ return (_jsx("section", { className: `${className} ${overwriteStyle ? '' : 'rasengan-markdown-body'}`, children: _jsx(MarkdownComponent, { children: content, remarkPlugins: [remarkParse, remarkGfm], rehypePlugins: [
13
13
  remarkRehype,
14
14
  rehypeStringify,
15
15
  // [rehypePrettyCode, {
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/components/markdown.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,iBAAiB,MAAM,gBAAgB,CAAC;AAC/C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,qDAAqD;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,SAAS,QAAQ,CAAC,EAChB,OAAO,EACP,SAAS,GAIV;IACC,OAAO,CACL,kBAAS,SAAS,EAAE,yBAAyB,GAAG,SAAS,YACvD,KAAC,iBAAiB,IAChB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACvC,aAAa,EAAE;gBACb,YAAY;gBACZ,eAAe;gBACf,uBAAuB;gBAEvB,KAAK;aACN,EACD,UAAU,EAAE;gBACV,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,KAAK;gBACZ,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC/B,GACD,GACM,CACX,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/components/markdown.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,iBAAiB,MAAM,gBAAgB,CAAC;AAC/C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,qDAAqD;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,SAAS,QAAQ,CAAC,EAChB,OAAO,EACP,SAAS,EACT,cAAc,GAKf;IACC,OAAO,CACL,kBACE,SAAS,EAAE,GAAG,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE,YAE3E,KAAC,iBAAiB,IAChB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACvC,aAAa,EAAE;gBACb,YAAY;gBACZ,eAAe;gBACf,uBAAuB;gBAEvB,KAAK;aACN,EACD,UAAU,EAAE;gBACV,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,KAAK;gBACZ,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC/B,GACD,GACM,CACX,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,7 +1,8 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CodeBlock } from './codeblock.js';
3
3
  import { Table } from './table.js';
4
4
  import { Heading } from './heading.js';
5
+ import TableOfContents from './toc.js';
5
6
  /**
6
7
  * Renders an MDX content component with a custom code block component.
7
8
  *
@@ -11,16 +12,16 @@ import { Heading } from './heading.js';
11
12
  * @returns {React.ReactElement} - The rendered MDX content with the custom code block component.
12
13
  */
13
14
  const MDXRenderer = ({ children: MDXContent, className, }) => {
14
- return (_jsx("section", { className: 'rasengan-markdown-body ' + className, children: _jsx(MDXContent, { components: {
15
- code: CodeBlock,
16
- table: Table,
17
- h1: Heading({ variant: 'h1' }),
18
- h2: Heading({ variant: 'h2' }),
19
- h3: Heading({ variant: 'h3' }),
20
- h4: Heading({ variant: 'h4' }),
21
- h5: Heading({ variant: 'h5' }),
22
- h6: Heading({ variant: 'h6' }),
23
- } }) }));
15
+ return (_jsxs("section", { className: MDXContent.toc ? 'rasengan-wrapper-with-toc' : 'rasengan-wrapper', children: [_jsx("section", { className: 'rasengan-markdown-body ' + className, children: _jsx(MDXContent, { components: {
16
+ code: CodeBlock,
17
+ table: Table,
18
+ h1: Heading({ variant: 'h1' }),
19
+ h2: Heading({ variant: 'h2' }),
20
+ h3: Heading({ variant: 'h3' }),
21
+ h4: Heading({ variant: 'h4' }),
22
+ h5: Heading({ variant: 'h5' }),
23
+ h6: Heading({ variant: 'h6' }),
24
+ } }) }), MDXContent.toc && (_jsx("aside", { className: "rasengan-toc", children: _jsx(TableOfContents, { items: MDXContent.toc }) }))] }));
24
25
  };
25
26
  export { MDXRenderer };
26
27
  //# sourceMappingURL=renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/components/renderer.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,EACnB,QAAQ,EAAE,UAAU,EACpB,SAAS,GACQ,EAAsB,EAAE;IACzC,OAAO,CACL,kBAAS,SAAS,EAAE,yBAAyB,GAAG,SAAS,YACvD,KAAC,UAAU,IACT,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,KAAK;gBACZ,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC/B,GACD,GACM,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/components/renderer.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,eAAe,MAAM,UAAU,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,CAAC,EACnB,QAAQ,EAAE,UAAU,EACpB,SAAS,GACQ,EAAsB,EAAE;IACzC,OAAO,CACL,mBACE,SAAS,EACP,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,kBAAkB,aAGnE,kBAAS,SAAS,EAAE,yBAAyB,GAAG,SAAS,YACvD,KAAC,UAAU,IACT,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,KAAK;wBACZ,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qBAC/B,GACD,GACM,EAET,UAAU,CAAC,GAAG,IAAI,CACjB,gBAAO,SAAS,EAAC,cAAc,YAC7B,KAAC,eAAe,IAAC,KAAK,EAAE,UAAU,CAAC,GAAG,GAAI,GACpC,CACT,IACO,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { TOCItem } from '../types/index.js';
3
+ interface TableOfContentsProps {
4
+ items: TOCItem[];
5
+ }
6
+ export declare const TableOfContents: React.FC<TableOfContentsProps>;
7
+ export default TableOfContents;
@@ -0,0 +1,73 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useState, useEffect, useRef, useCallback } from 'react';
3
+ export const TableOfContents = ({ items }) => {
4
+ const [activeId, setActiveId] = useState(null);
5
+ const observerRef = useRef(null);
6
+ useEffect(() => {
7
+ // Create an Intersection Observer to track which section is in view
8
+ const observerOptions = {
9
+ root: null,
10
+ rootMargin: '0px',
11
+ threshold: 0.4, // Trigger when 40% of the section is visible
12
+ };
13
+ observerRef.current = new IntersectionObserver((entries) => {
14
+ entries.forEach((entry) => {
15
+ if (entry.isIntersecting) {
16
+ const rect = entry.boundingClientRect;
17
+ if (rect.top >= 0) {
18
+ // Scrolling Down: Set the first intersecting element as active
19
+ setActiveId(entry.target.id);
20
+ }
21
+ }
22
+ });
23
+ // Sort entries by bottom position when scrolling down
24
+ const sortedEntries = entries
25
+ .filter((entry) => entry.isIntersecting)
26
+ .sort((a, b) => b.boundingClientRect.top - a.boundingClientRect.top);
27
+ if (sortedEntries.length > 0) {
28
+ setActiveId(sortedEntries[0].target.id);
29
+ }
30
+ }, observerOptions);
31
+ // Observe all sections with IDs matching TOC anchors
32
+ items.forEach((item) => {
33
+ // Observe items of level 2
34
+ const element = document.getElementById(item.anchor.id);
35
+ if (element && observerRef.current) {
36
+ observerRef.current.observe(element);
37
+ }
38
+ // Observe items of level 3
39
+ item.children.forEach((item) => {
40
+ const element = document.getElementById(item.anchor.id);
41
+ if (element && observerRef.current) {
42
+ observerRef.current.observe(element);
43
+ }
44
+ });
45
+ });
46
+ // Cleanup observer on unmount
47
+ return () => {
48
+ if (observerRef.current) {
49
+ observerRef.current.disconnect();
50
+ }
51
+ };
52
+ }, [items]);
53
+ const renderTOCItems = useCallback((items) => {
54
+ return items.map((item, index) => (_jsxs(React.Fragment, { children: [_jsx(Item, { item: item, activeId: activeId, onActive: setActiveId }), item.children && item.children.length > 0 && (_jsx("div", { className: "toc-item--children", children: renderTOCItems(item.children) }))] }, index)));
55
+ }, [items, activeId]);
56
+ return (_jsxs("div", { className: "table-of-contents", children: [_jsx("h2", { className: "title", children: "ON THIS PAGE" }), _jsx("div", { className: "items-container", children: renderTOCItems(items) }), _jsx("div", { className: "w-full h-[500px] mt-10 bg-red-200", style: { height: 500 } })] }));
57
+ };
58
+ const Item = ({ item, activeId, onActive }) => {
59
+ const handleClick = (e, id) => {
60
+ e.preventDefault();
61
+ onActive(id);
62
+ const element = document.getElementById(id);
63
+ element?.scrollIntoView({ behavior: 'smooth' });
64
+ history.pushState(null, '', `#${id}`); // Update the URL
65
+ };
66
+ return (_jsx("div", { className: `
67
+ toc-item
68
+ ${item.level === 2 ? 'level2' : 'level3'}
69
+ ${activeId === item.anchor.id ? 'active' : ''}
70
+ `, children: _jsx("a", { href: `#${item.anchor.id}`, onClick: (e) => handleClick(e, item.anchor.id), children: _jsx("div", { className: "toc-item--title", children: item.anchor.text }) }) }, item.anchor.id));
71
+ };
72
+ export default TableOfContents;
73
+ //# sourceMappingURL=toc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toc.js","sourceRoot":"","sources":["../../src/components/toc.tsx"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -5,5 +5,7 @@
5
5
  *
6
6
  * This package is inspired by @mdx-js/rollup to provide a custom implement of the MDX plugin for RasenganJs.
7
7
  */
8
+ import { extractTOC } from './utils/extract-toc.js';
8
9
  export * from './types/index.js';
9
10
  export * from './components/index.js';
11
+ export { extractTOC };
package/lib/index.js CHANGED
@@ -5,7 +5,11 @@
5
5
  *
6
6
  * This package is inspired by @mdx-js/rollup to provide a custom implement of the MDX plugin for RasenganJs.
7
7
  */
8
+ // Import statements
9
+ import { extractTOC } from './utils/extract-toc.js';
10
+ // import { defineMDXConfig } from "./utils/define-mdx-config.js";
8
11
  // Export statements
9
12
  export * from './types/index.js';
10
13
  export * from './components/index.js';
14
+ export { extractTOC };
11
15
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,kEAAkE;AAElE,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -1 +1 @@
1
- :root{--bg:transparent;--bg-light:#f5f5f5;--bg-code:#282c34;--bg-code-highlight:#30313e;--bg-code-highlight-2:#494c54;--fg:#333;--fg-code:#adbac7;--fg-light:#666;--fg-dark:#000;--fg-accent:#007bff;--border:#eee;--border-dark:#494c54;--table-border:#d1d5dc}.dark{--bg:#212121;--bg-light:#30313e55;--bg-code:#282c34;--bg-code-highlight:#30313e;--fg:#eee;--fg-code:#abb2bf;--fg-light:#ccc;--fg-dark:#fff;--fg-accent:#007bff;--border:#2f2f2f;--border-dark:#494c54;--table-border:#4b5563}.rasengan-markdown-body{box-sizing:border-box;margin:0;padding:0;font-weight:400}.rasengan-markdown-body .ra-heading-wrapper{display:flex;align-items:center;justify-content:start}.rasengan-markdown-body .ra-heading-wrapper:has(h2){border-bottom:1px solid var(--border);margin:2rem 0}.rasengan-markdown-body .ra-heading-wrapper a{margin:.67em 0;margin-left:.5em;color:var(--border);opacity:0;transition:all .3s}.rasengan-markdown-body .ra-heading-wrapper a>svg{color:var(--fg)}.rasengan-markdown-body .ra-heading-wrapper a:hover>svg{color:var(--fg-accent)}.rasengan-markdown-body .ra-heading-wrapper:has(h2) a{font-size:2em;text-decoration:none}.rasengan-markdown-body .ra-heading-wrapper:has(h3) a{font-size:1.5em;text-decoration:none}.rasengan-markdown-body .ra-heading-wrapper:has(h4) a{font-size:1em;text-decoration:none}.rasengan-markdown-body .ra-heading-wrapper:hover a{opacity:1;cursor:pointer}.rasengan-markdown-body .ra-heading-wrapper:hover a:hover{transform:scale(1.1)}.rasengan-markdown-body h1{font-size:2.5em;color:var(--fg);font-weight:700;margin:1em 0}.rasengan-markdown-body h2{font-size:2em;color:var(--fg);font-weight:700}.rasengan-markdown-body h3{font-size:1.5em;color:var(--fg);font-weight:700}.rasengan-markdown-body h4{font-size:1.17em;color:var(--fg);font-weight:700}.rasengan-markdown-body h5{font-size:1em;color:var(--fg);font-weight:700;margin:.67em 0}.rasengan-markdown-body h6{font-size:.83em;color:var(--fg);font-weight:700;margin:.67em 0}.rasengan-markdown-body h2:hover::after,.rasengan-markdown-body h3:hover::after,.rasengan-markdown-body h4:hover::after{opacity:1;cursor:pointer}.rasengan-markdown-body p{font-size:1em;color:var(--fg);margin:1em 0}.rasengan-markdown-body a{color:var(--fg-accent);text-decoration:none}.rasengan-markdown-body a:hover{text-decoration:underline}.rasengan-markdown-body hr{color:var(--border);margin:1em 0}.rasengan-markdown-body code.simple-block{font-size:.8em;font-family:'JetBrains Mono',monospace;border-radius:5px;padding:2px 3.6px;margin:auto 0;background-color:var(--bg-light);border:1px solid var(--border)}.rasengan-markdown-body figure:has(pre[data-language]){background-color:var(--bg-code);border-radius:8px;margin:10px 0;color:var(--fg-code);border:1px solid var(--border);overflow:hidden}.rasengan-markdown-body figure:has(pre[data-language]) figcaption{padding:10px 20px;font-size:14px;font-weight:400;background-color:var(--bg-code-highlight);border-bottom:1px solid var(--border-dark)}.rasengan-markdown-body code[data-line-numbers]{counter-reset:line}.rasengan-markdown-body pre[data-language]{position:relative;border-radius:8px;border:none;margin:0}.rasengan-markdown-body pre[data-language] code{font-family:'JetBrains Mono',monospace;font-size:14px;overflow-x:auto}.rasengan-markdown-body pre[data-language]>div code{display:grid;grid-template-columns:1fr;line-height:1.6;word-wrap:break-word;padding:16px 0}.rasengan-markdown-body pre[data-language] code>span{padding:0 16px;border-left:4px solid transparent}.rasengan-markdown-body pre[data-language] code[data-line-numbers]>span{padding:0 5px}.rasengan-markdown-body pre[data-language] mark[data-highlighted-chars]{background-color:var(--bg-code-highlight-2);border-radius:5px;padding:0 5px}.rasengan-markdown-body pre[data-language] span[data-highlighted-line]{background-color:var(--bg-code-highlight);border-left:4px solid var(--fg-accent)}.rasengan-markdown-body code[data-line-numbers] span[data-line]:before{counter-increment:line;content:counter(line);display:inline-block;width:2ch;color:#6a737d;text-align:right;margin-right:16px;opacity:.9}.rasengan-markdown-body code.code-block{position:relative;display:block;padding:20px 0;font-size:14px;max-height:800px;overflow:auto}.rasengan-markdown-body pre[data-language] button,.rasengan-markdown-body pre[data-language] span.lang{position:absolute;top:15px;right:15px;transition:all .2s;z-index:10}.rasengan-markdown-body pre[data-language] span.lang{font-size:12px;opacity:.8;color:var(--fg-code);padding:2px 5px;border-radius:5px;background-color:var(--bg-code-highlight);border:1px solid var(--border-dark)}.rasengan-markdown-body pre[data-language] code{font-family:'JetBrains Mono',monospace}.rasengan-markdown-body pre[data-language] button{opacity:.6;cursor:pointer;width:24px;height:24px;border-radius:5px;border:1px solid var(--border-dark);background-color:var(--bg-code-highlight);display:flex;align-items:center;justify-content:center}.rasengan-markdown-body pre[data-language]:hover>div button:hover{opacity:1}.rasengan-markdown-body .ra-table-wrapper{overflow-x:auto}.rasengan-markdown-body table{border-collapse:collapse;color:var(--fg);margin:.67em 0;width:100%;min-width:600px;overflow-x:auto}.rasengan-markdown-body th{background-color:transparent;color:var(--fg);font-weight:700}.rasengan-markdown-body td,.rasengan-markdown-body th{padding:10px 20px;border:1px solid var(--border);transition:all .3s;cursor:pointer}.rasengan-markdown-body tr:nth-child(2n){background-color:var(--bg-light)}.rasengan-markdown-body tr:nth-child(odd){background-color:transparent}.rasengan-markdown-body tr:hover{background-color:var(--bg-light)}.rasengan-markdown-body ol,.rasengan-markdown-body ul{margin:.67em 0;color:var(--fg);padding-left:15px}.rasengan-markdown-body ul{list-style:disc}.rasengan-markdown-body ul:has(li > input){list-style:none}.rasengan-markdown-body ol li,.rasengan-markdown-body ul li{margin:.67em 0;color:var(--fg)}.rasengan-markdown-body ol li input,.rasengan-markdown-body ul li input{margin-right:.3em}.rasengan-markdown-body ol li input:checked,.rasengan-markdown-body ul li input{background-color:var(--fg-accent);color:var(--bg)}.rasengan-markdown-body blockquote{border-left:4px solid var(--border);padding-left:1em;margin:1em 0}.rasengan-markdown-body blockquote p{margin:0}
1
+ :root{--bg:transparent;--bg-light:#f5f5f5;--bg-code:#282c34;--bg-code-highlight:#30313e;--bg-code-highlight-2:#494c54;--fg:#333;--fg-code:#adbac7;--fg-light:#666;--fg-dark:#000;--fg-accent:#007bff;--border:#eee;--border-dark:#494c54;--table-border:#d1d5dc;--container-2xs:18rem;--text-3xl:1.875rem;--text-2xl:1.5rem;--text-xl:1.25rem;--text-lg:1.125rem;--text-md:1rem;--text-sm:0.875rem;--ra-spacing:0.25;--mb-3xl:calc(var(--text-3xl) * var(--ra-spacing));--mb-2xl:calc(var(--text-2xl) * var(--ra-spacing));--mb-xl:calc(var(--text-xl) * var(--ra-spacing));--mb-lg:calc(var(--text-lg) * var(--ra-spacing));--mb-md:calc(var(--text-md) * var(--ra-spacing));--mb-sm:calc(var(--text-sm) * var(--ra-spacing))}.dark{--bg:#212121;--bg-light:#30313e55;--bg-code:#282c34;--bg-code-highlight:#30313e;--fg:#eee;--fg-code:#abb2bf;--fg-light:#ccc;--fg-dark:#fff;--fg-accent:#007bff;--border:#2f2f2f;--border-dark:#494c54;--table-border:#4b5563}.rasengan-wrapper,.rasengan-wrapper-with-toc{position:relative}.rasengan-wrapper-with-toc{margin-left:auto;margin-right:auto;display:grid;width:100%;max-width:42rem;grid-template-columns:1fr;gap:2.5rem;padding-left:2.5rem}.rasengan-markdown-body{position:relative;box-sizing:border-box;margin:0;font-weight:400;padding-left:1rem;padding-right:1rem;padding-top:2.5rem;padding-bottom:6rem}.rasengan-toc>.table-of-contents{position:sticky;top:3.5rem;max-height:calc(100svh - 3.5rem);overflow-x:hidden;padding-left:1.5rem;padding-right:1.5rem;padding-top:2.5rem;padding-bottom:6rem}.rasengan-toc>.table-of-contents .title{font-size:.675rem;margin-bottom:1rem;color:var(--fg-dark)}.rasengan-toc>.table-of-contents .items-container{display:flex;flex-direction:column}.rasengan-toc>.table-of-contents .toc-item{cursor:pointer;padding-left:.5rem;border-left:1px solid var(--border);transition:all .2s ease;color:var(--fg)}.rasengan-toc>.table-of-contents .toc-item:hover{border-left-color:var(--fg-accent);color:var(--fg-accent)}.rasengan-toc>.table-of-contents .toc-item.active{border-left-color:var(--fg-accent);color:var(--fg-accent)}.rasengan-toc>.table-of-contents .toc-item.active .toc-item--title{font-weight:700}.rasengan-toc>.table-of-contents .toc-item--title{font-size:.875rem;padding-top:.25rem;padding-bottom:.25rem}.rasengan-toc>.table-of-contents .level2{padding-left:1rem}.rasengan-toc>.table-of-contents .level3{padding-left:2rem}.rasengan-markdown-body .ra-heading-wrapper{display:flex;align-items:center;justify-content:start}.rasengan-markdown-body .ra-heading-wrapper:has(h1){margin-bottom:1rem}.rasengan-markdown-body .ra-heading-wrapper:has(h2){border-bottom:1px solid var(--border);margin-bottom:1rem;margin-top:2rem}.rasengan-markdown-body .ra-heading-wrapper:has(h3){margin-bottom:var(--mb-xl);margin-top:2rem}.rasengan-markdown-body .ra-heading-wrapper:has(h4){margin-bottom:var(--mb-lg);margin-top:2rem}.rasengan-markdown-body .ra-heading-wrapper:has(h5){margin-bottom:var(--mb-md);margin-top:2rem}.rasengan-markdown-body .ra-heading-wrapper:has(h6){margin-bottom:var(--mb-sm);margin-top:2rem}.rasengan-markdown-body .ra-heading-wrapper a{margin:.67em 0;margin-left:.5em;color:var(--border);opacity:0;transition:all .3s}.rasengan-markdown-body .ra-heading-wrapper a>svg{color:var(--fg)}.rasengan-markdown-body .ra-heading-wrapper a:hover>svg{color:var(--fg-accent)}.rasengan-markdown-body .ra-heading-wrapper:has(h2) a{font-size:2em;text-decoration:none}.rasengan-markdown-body .ra-heading-wrapper:has(h3) a{font-size:1.5em;text-decoration:none}.rasengan-markdown-body .ra-heading-wrapper:has(h4) a{font-size:1em;text-decoration:none}.rasengan-markdown-body .ra-heading-wrapper:hover a{opacity:1;cursor:pointer}.rasengan-markdown-body .ra-heading-wrapper:hover a:hover{transform:scale(1.1)}.rasengan-markdown-body h1{font-size:var(--text-3xl);color:var(--fg);font-weight:700;margin:0}.rasengan-markdown-body h2{font-size:var(--text-2xl);color:var(--fg);font-weight:700;margin-bottom:var(--mb-2xl)}.rasengan-markdown-body h3{font-size:var(--text-xl);color:var(--fg);font-weight:700;margin-bottom:var(--mb-xl)}.rasengan-markdown-body h4{font-size:var(--text-lg);color:var(--fg);font-weight:700;margin-bottom:var(--mb-lg)}.rasengan-markdown-body h5{font-size:var(--text-md);color:var(--fg);font-weight:700;margin-bottom:var(--mb-md)}.rasengan-markdown-body h6{font-size:var(--text-sm);color:var(--fg);font-weight:700;margin-bottom:var(--mb-sm)}.rasengan-markdown-body h2:hover::after,.rasengan-markdown-body h3:hover::after,.rasengan-markdown-body h4:hover::after{opacity:1;cursor:pointer}.rasengan-markdown-body p{font-size:var(--text-sm);color:var(--fg);margin:var(--mb-sm) 0;line-height:2}.rasengan-markdown-body a{color:var(--fg-accent);text-decoration:none}.rasengan-markdown-body a:hover{text-decoration:underline}.rasengan-markdown-body hr{color:var(--border);margin:var(--mb-sm) 0}.rasengan-markdown-body code.simple-block{font-size:.8em;font-family:'JetBrains Mono',monospace;border-radius:5px;padding:2px 3.6px;margin:auto 0;background-color:var(--bg-light);border:1px solid var(--border)}.rasengan-markdown-body figure:has(pre[data-language]){background-color:var(--bg-code);border-radius:8px;margin:10px 0;color:var(--fg-code);border:1px solid var(--border);overflow:hidden}.rasengan-markdown-body figure:has(pre[data-language]) figcaption{padding:10px 20px;font-size:14px;font-weight:400;background-color:var(--bg-code-highlight);border-bottom:1px solid var(--border-dark)}.rasengan-markdown-body code[data-line-numbers]{counter-reset:line}.rasengan-markdown-body pre[data-language]{position:relative;border-radius:8px;border:none;margin:0}.rasengan-markdown-body pre[data-language] code{font-family:'JetBrains Mono',monospace;font-size:14px;overflow-x:auto}.rasengan-markdown-body pre[data-language]>div code{display:grid;grid-template-columns:1fr;line-height:1.6;word-wrap:break-word;padding:16px 0}.rasengan-markdown-body pre[data-language] code>span{padding:0 16px;border-left:4px solid transparent}.rasengan-markdown-body pre[data-language] code[data-line-numbers]>span{padding:0 5px}.rasengan-markdown-body pre[data-language] mark[data-highlighted-chars]{background-color:var(--bg-code-highlight-2);border-radius:5px;padding:0 5px}.rasengan-markdown-body pre[data-language] span[data-highlighted-line]{background-color:var(--bg-code-highlight);border-left:4px solid var(--fg-accent)}.rasengan-markdown-body code[data-line-numbers] span[data-line]:before{counter-increment:line;content:counter(line);display:inline-block;width:2ch;color:#6a737d;text-align:right;margin-right:16px;opacity:.9}.rasengan-markdown-body code.code-block{position:relative;display:block;padding:20px 0;font-size:14px;max-height:800px;overflow:auto}.rasengan-markdown-body pre[data-language] button,.rasengan-markdown-body pre[data-language] span.lang{position:absolute;top:15px;right:15px;transition:all .2s;z-index:10}.rasengan-markdown-body pre[data-language] span.lang{font-size:12px;opacity:.8;color:var(--fg-code);padding:2px 5px;border-radius:5px;background-color:var(--bg-code-highlight);border:1px solid var(--border-dark)}.rasengan-markdown-body pre[data-language] code{font-family:'JetBrains Mono',monospace}.rasengan-markdown-body pre[data-language] button{opacity:.6;cursor:pointer;width:24px;height:24px;border-radius:5px;border:1px solid var(--border-dark);background-color:var(--bg-code-highlight);display:flex;align-items:center;justify-content:center}.rasengan-markdown-body pre[data-language]:hover>div button:hover{opacity:1}.rasengan-markdown-body .ra-table-wrapper{overflow-x:auto}.rasengan-markdown-body table{border-collapse:collapse;color:var(--fg);margin:.67em 0;width:100%;min-width:600px;overflow-x:auto}.rasengan-markdown-body th{background-color:transparent;color:var(--fg);font-weight:700}.rasengan-markdown-body td,.rasengan-markdown-body th{padding:10px 20px;border:1px solid var(--border);transition:all .3s;cursor:pointer}.rasengan-markdown-body tr:nth-child(2n){background-color:var(--bg-light)}.rasengan-markdown-body tr:nth-child(odd){background-color:transparent}.rasengan-markdown-body tr:hover{background-color:var(--bg-light)}.rasengan-markdown-body ol,.rasengan-markdown-body ul{margin:.67em 0;color:var(--fg);padding-left:15px}.rasengan-markdown-body ul{list-style:disc}.rasengan-markdown-body ul:has(li > input){list-style:none}.rasengan-markdown-body ol li,.rasengan-markdown-body ul li{margin:.67em 0;color:var(--fg)}.rasengan-markdown-body ol li input,.rasengan-markdown-body ul li input{margin-right:.3em}.rasengan-markdown-body ol li input:checked,.rasengan-markdown-body ul li input{background-color:var(--fg-accent);color:var(--bg)}.rasengan-markdown-body blockquote{border-left:4px solid var(--border);padding-left:1em;margin:1em 0}.rasengan-markdown-body blockquote p{margin:0}@media (min-width:1280px){.rasengan-wrapper-with-toc{max-width:80rem;grid-template-columns:minmax(0,1fr) var(--container-2xs)}.rasengan-markdown-body{padding-right:0;max-width:50rem;margin:0 auto}}@media (max-width:1279px){.rasengan-wrapper-with-toc>.rasengan-toc{display:none}.rasengan-wrapper-with-toc{display:block;max-width:60rem;padding-left:0}}@media (min-width:640px){.rasengan-markdown-body{padding-left:1.5rem;padding-right:1.5rem}}
@@ -1,4 +1,5 @@
1
1
  import { type Metadata } from 'rasengan';
2
+ import React from 'react';
2
3
  /**
3
4
  * A React functional component that represents an MDX page.
4
5
  *
@@ -11,6 +12,16 @@ export type MDXPageComponent = React.FC<any> & {
11
12
  path: string;
12
13
  metadata: Metadata;
13
14
  };
15
+ toc?: Array<TOCItem>;
16
+ };
17
+ export type TOCItem = {
18
+ title: string;
19
+ anchor: {
20
+ id: string;
21
+ text: string;
22
+ };
23
+ level: 2 | 3;
24
+ children: Array<Omit<TOCItem, 'children'>>;
14
25
  };
15
26
  /**
16
27
  * A React functional component that represents a simple block element.
@@ -24,6 +35,7 @@ export type ComponentWithTextChildrenProps = {
24
35
  export type MDXRendererProps = {
25
36
  children: MDXPageComponent;
26
37
  className?: string;
38
+ config?: MDXConfigProps;
27
39
  };
28
40
  /**
29
41
  * A React functional component that represents a simple block element.
@@ -43,3 +55,22 @@ export type NavigationStructure = {
43
55
  level: number;
44
56
  children?: NavigationStructure[];
45
57
  };
58
+ type HeadingConfigProps = {
59
+ fullText: string;
60
+ text: string;
61
+ id: string;
62
+ };
63
+ type TOCConfig = (toc: Array<TOCItem>) => React.ReactNode;
64
+ type ComponentConfig = {
65
+ h1?: (value: HeadingConfigProps) => React.ReactNode;
66
+ h2?: (value: HeadingConfigProps) => React.ReactNode;
67
+ h3?: (value: HeadingConfigProps) => React.ReactNode;
68
+ h4?: (value: HeadingConfigProps) => React.ReactNode;
69
+ h5?: (value: HeadingConfigProps) => React.ReactNode;
70
+ h6?: (value: HeadingConfigProps) => React.ReactNode;
71
+ };
72
+ export type MDXConfigProps = {
73
+ components?: ComponentConfig;
74
+ toc?: TOCConfig;
75
+ };
76
+ export {};
@@ -0,0 +1,2 @@
1
+ import { MDXConfigProps } from '../types/index.js';
2
+ export declare function defineMDXConfig(config: MDXConfigProps): MDXConfigProps;
@@ -0,0 +1,4 @@
1
+ export function defineMDXConfig(config) {
2
+ return config;
3
+ }
4
+ //# sourceMappingURL=define-mdx-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-mdx-config.js","sourceRoot":"","sources":["../../src/utils/define-mdx-config.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1,16 @@
1
- export declare function extractToc(markdown: string): Promise<string>;
1
+ import { TOCItem } from '../types/index.js';
2
+ /**
3
+ * This function is used to extract TOC (Table Of Content) from markdown text
4
+ * @param markdown
5
+ * @returns
6
+ */
7
+ export declare function extractTOC(markdown: string): TOCItem[];
8
+ /**
9
+ * This function is used to extract the link from a heading text coming from a markdown
10
+ * @param title
11
+ * @returns
12
+ */
13
+ export declare const generateAnchor: (title: string) => {
14
+ id: string;
15
+ text: string;
16
+ };
@@ -1,12 +1,66 @@
1
- import { remark } from 'remark';
2
- import remarkToc from 'remark-toc';
3
- export async function extractToc(markdown) {
4
- const file = await remark()
5
- .use(remarkToc, {
6
- heading: 'structure',
7
- maxDepth: 3,
8
- })
9
- .process(markdown);
10
- return String(file);
1
+ /**
2
+ * This function is used to extract TOC (Table Of Content) from markdown text
3
+ * @param markdown
4
+ * @returns
5
+ */
6
+ export function extractTOC(markdown) {
7
+ const lines = markdown.split('\n');
8
+ const toc = [];
9
+ lines.forEach((line) => {
10
+ const h2Match = line.match(/^## (.+)/); // Titres H2
11
+ const h3Match = line.match(/^### (.+)/); // Titres H3
12
+ if (h2Match) {
13
+ const title = h2Match[1].trim();
14
+ const anchor = generateAnchor(title);
15
+ toc.push({
16
+ title,
17
+ anchor,
18
+ level: 2,
19
+ children: [],
20
+ });
21
+ }
22
+ else if (h3Match && toc.length > 0) {
23
+ const title = h3Match[1].trim();
24
+ const anchor = generateAnchor(title);
25
+ toc[toc.length - 1].children.push({
26
+ title,
27
+ anchor,
28
+ level: 3,
29
+ });
30
+ }
31
+ });
32
+ return toc;
11
33
  }
34
+ /**
35
+ * This function is used to extract the link from a heading text coming from a markdown
36
+ * @param title
37
+ * @returns
38
+ */
39
+ export const generateAnchor = (title) => {
40
+ // Regex pattern to match links in the format [#link text]
41
+ const regex = new RegExp('^\\[#.+\\]');
42
+ // split the children into an array of strings based on space
43
+ const childrenArray = title.split(' [#');
44
+ let lastWord = '';
45
+ let remainingWords = '';
46
+ let id = '';
47
+ // Check if we have more than one word and if the last word is a link
48
+ if (childrenArray.length > 1 &&
49
+ childrenArray.at(-1).includes(']') &&
50
+ regex.test(`[#${childrenArray.at(-1)}`)) {
51
+ lastWord = childrenArray.pop();
52
+ }
53
+ if (lastWord) {
54
+ id = lastWord.replace(']', '').split(' ').join('-').toLowerCase();
55
+ remainingWords = childrenArray[0];
56
+ }
57
+ else {
58
+ id = title.split(' ').join('-').toLowerCase();
59
+ remainingWords = title;
60
+ }
61
+ return {
62
+ id,
63
+ text: remainingWords,
64
+ };
65
+ };
12
66
  //# sourceMappingURL=extract-toc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-toc.js","sourceRoot":"","sources":["../../src/utils/extract-toc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE;SACxB,GAAG,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,CAAC;KACZ,CAAC;SACD,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"extract-toc.js","sourceRoot":"","sources":["../../src/utils/extract-toc.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,GAAG,GAAc,EAAE,CAAC;IAE1B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;QAErD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK;gBACL,MAAM;gBACN,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,KAAK;gBACL,MAAM;gBACN,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;IAC9C,0DAA0D;IAC1D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IAEvC,6DAA6D;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IAEZ,qEAAqE;IACrE,IACE,aAAa,CAAC,MAAM,GAAG,CAAC;QACxB,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACvC,CAAC;QACD,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,cAAc,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO;QACL,EAAE;QACF,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -5,6 +5,7 @@ import rehypeStringify from 'rehype-stringify';
5
5
  import remarkParse from 'remark-parse';
6
6
  import remarkRehype from 'remark-rehype';
7
7
  import rehypePrettyCode from 'rehype-pretty-code';
8
+ import { extractTOC } from './extract-toc.js';
8
9
  /**
9
10
  * A Vite plugin that transforms MDX files into a format that can be used in a RasenganJs application.
10
11
  *
@@ -52,6 +53,9 @@ export default async function plugin() {
52
53
  return null;
53
54
  }
54
55
  const { content, data: frontmatter } = matter(code);
56
+ // Extract the table of content
57
+ const isTocVisible = frontmatter.toc !== undefined ? frontmatter.toc : false;
58
+ const toc = extractTOC(content);
55
59
  // Apply transformation of the mdx file
56
60
  const result = await mdxInstance.transform(content, id);
57
61
  // Extract the file name from the path
@@ -66,13 +70,14 @@ export default async function plugin() {
66
70
  title: fileName,
67
71
  },
68
72
  };
69
- // console.log(result.code)
70
73
  return {
71
74
  code: `
72
75
  ${result.code}
73
76
  const metadata = ${JSON.stringify(metadata)};
77
+ const toc = ${isTocVisible ? JSON.stringify(toc) : undefined};
74
78
 
75
79
  MDXContent.metadata = metadata;
80
+ MDXContent.toc = toc;
76
81
  `,
77
82
  map: result.map,
78
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,MAAM;IAalC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,IAAI,MAAe,CAAC;IACpB,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC;QACtB,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;QACvC,aAAa,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC;KACjE,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,0BAA0B;QAEhC,4DAA4D;QAC5D,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,MAAe,EAAE,GAAQ;YAC9B,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED;;;;WAIG;QACH,cAAc,CAAC,cAAuB;YACpC,4BAA4B;YAC5B,MAAM,GAAG,cAAc,CAAC;QAC1B,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,EAAU;YACtC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpD,uCAAuC;YACvC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAExD,sCAAsC;YACtC,MAAM,QAAQ,GAAG,EAAE;iBAChB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,EAAE;iBACL,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAE9B,2DAA2D;YAC3D,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,IAAI,QAAQ,EAAE;gBACxC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI;oBAChC,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC;YAEF,2BAA2B;YAE3B,OAAO;gBACL,IAAI,EAAE;YACF,MAAM,CAAC,IAAI;6BACM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;;SAG5C;gBACD,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,MAAM;IAalC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,IAAI,MAAe,CAAC;IACpB,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC;QACtB,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;QACvC,aAAa,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC;KACjE,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,0BAA0B;QAEhC,4DAA4D;QAC5D,OAAO,EAAE,KAAK;QAEd,MAAM,CAAC,MAAe,EAAE,GAAQ;YAC9B,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED;;;;WAIG;QACH,cAAc,CAAC,cAAuB;YACpC,4BAA4B;YAC5B,MAAM,GAAG,cAAc,CAAC;QAC1B,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,EAAU;YACtC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpD,+BAA+B;YAC/B,MAAM,YAAY,GAChB,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1D,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YAEhC,uCAAuC;YACvC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAExD,sCAAsC;YACtC,MAAM,QAAQ,GAAG,EAAE;iBAChB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,EAAE;iBACL,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAE9B,2DAA2D;YAC3D,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,IAAI,QAAQ,EAAE;gBACxC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI;oBAChC,KAAK,EAAE,QAAQ;iBAChB;aACF,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE;YACF,MAAM,CAAC,IAAI;6BACM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;wBAC7B,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;;;;SAI7D;gBACD,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rasenganjs/mdx",
3
3
  "private": false,
4
- "version": "1.0.6",
4
+ "version": "1.1.0-beta.1",
5
5
  "description": "RasenganJS plugin for MDX support",
6
6
  "type": "module",
7
7
  "main": "lib/index.js",
@@ -61,7 +61,7 @@
61
61
  "react-dom": "^19.0.0"
62
62
  },
63
63
  "scripts": {
64
- "build:clean": "rm -rf ./lib",
64
+ "build:clean": "rimraf ./lib",
65
65
  "build:css": "node ./src/scripts/compile-css.js",
66
66
  "build": "pnpm run build:clean && tsc && npm run build:css",
67
67
  "pack": "pnpm pack --pack-destination ./release",