robindoc 2.5.0 → 3.0.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 (63) hide show
  1. package/lib/components/blocks/contents/index.js +1 -1
  2. package/lib/components/blocks/contents/index.js.map +1 -1
  3. package/lib/components/blocks/header-social/index.js +1 -1
  4. package/lib/components/blocks/header-social/index.js.map +1 -1
  5. package/lib/components/elements/article/document.d.ts +3 -3
  6. package/lib/components/elements/article/document.d.ts.map +1 -1
  7. package/lib/components/elements/article/document.js +1 -1
  8. package/lib/components/elements/article/document.js.map +1 -1
  9. package/lib/components/elements/article/utils.d.ts +19 -3
  10. package/lib/components/elements/article/utils.d.ts.map +1 -1
  11. package/lib/components/elements/article/utils.js +1 -1
  12. package/lib/components/elements/article/utils.js.map +1 -1
  13. package/lib/components/ui/blockquote/data.d.ts +24 -0
  14. package/lib/components/ui/blockquote/data.d.ts.map +1 -0
  15. package/lib/components/ui/blockquote/data.js +2 -0
  16. package/lib/components/ui/blockquote/data.js.map +1 -0
  17. package/lib/components/ui/blockquote/icons.d.ts +7 -0
  18. package/lib/components/ui/blockquote/icons.d.ts.map +1 -0
  19. package/lib/components/ui/blockquote/icons.js +2 -0
  20. package/lib/components/ui/blockquote/icons.js.map +1 -0
  21. package/lib/components/ui/blockquote/index.d.ts +2 -0
  22. package/lib/components/ui/blockquote/index.d.ts.map +1 -1
  23. package/lib/components/ui/blockquote/index.js +1 -1
  24. package/lib/components/ui/blockquote/index.js.map +1 -1
  25. package/lib/components/ui/tabs/tabs-header/index.js +1 -1
  26. package/lib/components/ui/tabs/tabs-header/index.js.map +1 -1
  27. package/lib/core/utils/content-tools.d.ts +3 -0
  28. package/lib/core/utils/content-tools.d.ts.map +1 -0
  29. package/lib/core/utils/content-tools.js +2 -0
  30. package/lib/core/utils/content-tools.js.map +1 -0
  31. package/lib/core/utils/{get-meta.d.ts → get-metadata.d.ts} +3 -3
  32. package/lib/core/utils/get-metadata.d.ts.map +1 -0
  33. package/lib/core/utils/get-metadata.js +2 -0
  34. package/lib/core/utils/get-metadata.js.map +1 -0
  35. package/lib/core/utils/{git-data.d.ts → git-tools.d.ts} +1 -1
  36. package/lib/core/utils/git-tools.d.ts.map +1 -0
  37. package/lib/core/utils/{git-data.js → git-tools.js} +1 -1
  38. package/lib/core/utils/git-tools.js.map +1 -0
  39. package/lib/core/utils/initialize-robindoc.d.ts +5 -5
  40. package/lib/core/utils/initialize-robindoc.d.ts.map +1 -1
  41. package/lib/core/utils/initialize-robindoc.js +1 -1
  42. package/lib/core/utils/initialize-robindoc.js.map +1 -1
  43. package/lib/core/utils/load-content.d.ts.map +1 -1
  44. package/lib/core/utils/load-content.js.map +1 -1
  45. package/lib/core/utils/parse-structure.js +1 -1
  46. package/lib/core/utils/parse-structure.js.map +1 -1
  47. package/lib/core/utils/path-tools.d.ts +5 -3
  48. package/lib/core/utils/path-tools.d.ts.map +1 -1
  49. package/lib/core/utils/path-tools.js +1 -1
  50. package/lib/core/utils/path-tools.js.map +1 -1
  51. package/lib/core/utils/{tabs-store.d.ts → tabs-tools.d.ts} +1 -1
  52. package/lib/core/utils/tabs-tools.d.ts.map +1 -0
  53. package/lib/core/utils/{tabs-store.js → tabs-tools.js} +1 -1
  54. package/lib/core/utils/{tabs-store.js.map → tabs-tools.js.map} +1 -1
  55. package/lib/styles.css +1 -1
  56. package/lib/styles.css.map +1 -1
  57. package/package.json +8 -2
  58. package/lib/core/utils/get-meta.d.ts.map +0 -1
  59. package/lib/core/utils/get-meta.js +0 -2
  60. package/lib/core/utils/get-meta.js.map +0 -1
  61. package/lib/core/utils/git-data.d.ts.map +0 -1
  62. package/lib/core/utils/git-data.js.map +0 -1
  63. package/lib/core/utils/tabs-store.d.ts.map +0 -1
@@ -1,3 +1,3 @@
1
1
  'use client';
2
- import e,{useRef as t,useEffect as n}from"react";import r from"clsx";import{useHeadingIndex as s}from"../../contexts/contents/use-heading-index.js";import{detectGitType as c}from"../../../core/utils/git-data.js";const o=({headings:o,hideContents:a,editUri:l,translations:i})=>{const m=t(null),d=t(null),h=t(null),p=s(),{onThisPage:u="On this page",editOnService:f="Edit on {service}"}=i||{};return n((()=>{h.current&&d.current&&d.current.style.setProperty("--drop-height",h.current.offsetHeight+"px")}),[]),e.createElement("div",{className:"r-contents"},e.createElement("div",{className:"r-contents-sticky",ref:m},o.length>0&&!a&&e.createElement(e.Fragment,null,e.createElement("input",{type:"checkbox",className:"r-contents-control",id:"r-contents"}),e.createElement("div",{className:"r-contents-details"},e.createElement("label",{className:"r-contents-title",htmlFor:"r-contents"},u,e.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"r-contents-chevron"},e.createElement("path",{d:"m6 9 6 6 6-6"}))),e.createElement("div",{className:"r-contents-list",ref:d},e.createElement("div",{className:"r-contents-list-content",ref:h},o.map(((t,n)=>e.createElement("a",{href:`#${t.id}`,key:t.id,className:r("r-contents-link",t.nested&&"_nested",null!==p&&n<=p&&"_passed",p===n&&"_active"),ref:e=>{e?.offsetTop&&m.current&&m.current.scrollHeight>m.current.clientHeight&&p===n&&m.current.scrollTo({top:Math.max(e.offsetTop-Math.ceil(window.innerHeight/2),0)})}},t.title))))))),l?.match(/^https?:\/\//)&&e.createElement("div",{className:"r-contents-actions"},e.createElement("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"r-contents-git"},f.replace("{service}",c(l).name)))))};export{o as Contents};
2
+ import e,{useRef as t,useEffect as n}from"react";import r from"clsx";import{useHeadingIndex as s}from"../../contexts/contents/use-heading-index.js";import{detectGitType as c}from"../../../core/utils/git-tools.js";const o=({headings:o,hideContents:l,editUri:a,translations:i})=>{const m=t(null),d=t(null),h=t(null),p=s(),{onThisPage:u="On this page",editOnService:f="Edit on {service}"}=i||{};return n((()=>{h.current&&d.current&&d.current.style.setProperty("--drop-height",h.current.offsetHeight+"px")}),[]),e.createElement("div",{className:"r-contents"},e.createElement("div",{className:"r-contents-sticky",ref:m},o.length>0&&!l&&e.createElement(e.Fragment,null,e.createElement("input",{type:"checkbox",className:"r-contents-control",id:"r-contents"}),e.createElement("div",{className:"r-contents-details"},e.createElement("label",{className:"r-contents-title",htmlFor:"r-contents"},u,e.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"r-contents-chevron"},e.createElement("path",{d:"m6 9 6 6 6-6"}))),e.createElement("div",{className:"r-contents-list",ref:d},e.createElement("div",{className:"r-contents-list-content",ref:h},o.map(((t,n)=>e.createElement("a",{href:`#${t.id}`,key:t.id,className:r("r-contents-link",t.nested&&"_nested",null!==p&&n<=p&&"_passed",p===n&&"_active"),ref:e=>{e?.offsetTop&&m.current&&m.current.scrollHeight>m.current.clientHeight&&p===n&&m.current.scrollTo({top:Math.max(e.offsetTop-Math.ceil(window.innerHeight/2),0)})}},t.title))))))),a?.match(/^https?:\/\//)&&e.createElement("div",{className:"r-contents-actions"},e.createElement("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"r-contents-git"},f.replace("{service}",c(a).name)))))};export{o as Contents};
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/contents/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useHeadingIndex } from \"@src/components/contexts/contents/use-heading-index\";\nimport { detectGitType } from \"@src/core/utils/git-data\";\n\nimport \"./contents.scss\";\n\nexport interface ContentsProps extends React.PropsWithChildren {\n headings: { id: string; nested: boolean; title: string | JSX.Element }[];\n hideContents?: boolean;\n editUri?: string | null;\n translations?: {\n /** On this page */\n onThisPage?: string;\n /** Edit on {service} */\n editOnService?: string;\n };\n}\n\nexport const Contents: React.FC<ContentsProps> = ({ headings, hideContents, editUri, translations }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const dropdownContentRef = useRef<HTMLDivElement>(null);\n const headingIndex = useHeadingIndex();\n const { onThisPage = \"On this page\", editOnService = \"Edit on {service}\" } = translations || {};\n\n useEffect(() => {\n if (dropdownContentRef.current && dropdownRef.current) {\n dropdownRef.current.style.setProperty(\"--drop-height\", dropdownContentRef.current.offsetHeight + \"px\");\n }\n }, []);\n\n return (\n <div className=\"r-contents\">\n <div className=\"r-contents-sticky\" ref={containerRef}>\n {headings.length > 0 && !hideContents && (\n <>\n <input type=\"checkbox\" className=\"r-contents-control\" id=\"r-contents\" />\n <div className=\"r-contents-details\">\n <label className=\"r-contents-title\" htmlFor=\"r-contents\">\n {onThisPage}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-contents-chevron\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </label>\n <div className=\"r-contents-list\" ref={dropdownRef}>\n <div className=\"r-contents-list-content\" ref={dropdownContentRef}>\n {headings.map((heading, index) => (\n <a\n href={`#${heading.id}`}\n key={heading.id}\n className={clsx(\n \"r-contents-link\",\n heading.nested && \"_nested\",\n headingIndex !== null && index <= headingIndex && \"_passed\",\n headingIndex === index && \"_active\",\n )}\n ref={(node) => {\n if (\n node?.offsetTop &&\n containerRef.current &&\n containerRef.current.scrollHeight >\n containerRef.current.clientHeight &&\n headingIndex === index\n ) {\n containerRef.current.scrollTo({\n top: Math.max(\n node.offsetTop - Math.ceil(window.innerHeight / 2),\n 0,\n ),\n });\n }\n }}\n >\n {heading.title}\n </a>\n ))}\n </div>\n </div>\n </div>\n </>\n )}\n {editUri?.match(/^https?:\\/\\//) && (\n <div className=\"r-contents-actions\">\n <a href={editUri} target=\"_blank\" rel=\"noopener noreferrer\" className=\"r-contents-git\">\n {editOnService.replace(\"{service}\", detectGitType(editUri).name)}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["Contents","headings","hideContents","editUri","translations","containerRef","useRef","dropdownRef","dropdownContentRef","headingIndex","useHeadingIndex","onThisPage","editOnService","useEffect","current","style","setProperty","offsetHeight","React","createElement","className","ref","length","Fragment","type","id","htmlFor","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","map","heading","index","href","key","clsx","nested","node","offsetTop","scrollHeight","clientHeight","scrollTo","top","Math","max","ceil","window","innerHeight","title","match","target","rel","replace","detectGitType","name"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/contents/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useHeadingIndex } from \"@src/components/contexts/contents/use-heading-index\";\nimport { detectGitType } from \"@src/core/utils/git-tools\";\n\nimport \"./contents.scss\";\n\nexport interface ContentsProps extends React.PropsWithChildren {\n headings: { id: string; nested: boolean; title: string | JSX.Element }[];\n hideContents?: boolean;\n editUri?: string | null;\n translations?: {\n /** On this page */\n onThisPage?: string;\n /** Edit on {service} */\n editOnService?: string;\n };\n}\n\nexport const Contents: React.FC<ContentsProps> = ({ headings, hideContents, editUri, translations }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const dropdownContentRef = useRef<HTMLDivElement>(null);\n const headingIndex = useHeadingIndex();\n const { onThisPage = \"On this page\", editOnService = \"Edit on {service}\" } = translations || {};\n\n useEffect(() => {\n if (dropdownContentRef.current && dropdownRef.current) {\n dropdownRef.current.style.setProperty(\"--drop-height\", dropdownContentRef.current.offsetHeight + \"px\");\n }\n }, []);\n\n return (\n <div className=\"r-contents\">\n <div className=\"r-contents-sticky\" ref={containerRef}>\n {headings.length > 0 && !hideContents && (\n <>\n <input type=\"checkbox\" className=\"r-contents-control\" id=\"r-contents\" />\n <div className=\"r-contents-details\">\n <label className=\"r-contents-title\" htmlFor=\"r-contents\">\n {onThisPage}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-contents-chevron\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </label>\n <div className=\"r-contents-list\" ref={dropdownRef}>\n <div className=\"r-contents-list-content\" ref={dropdownContentRef}>\n {headings.map((heading, index) => (\n <a\n href={`#${heading.id}`}\n key={heading.id}\n className={clsx(\n \"r-contents-link\",\n heading.nested && \"_nested\",\n headingIndex !== null && index <= headingIndex && \"_passed\",\n headingIndex === index && \"_active\",\n )}\n ref={(node) => {\n if (\n node?.offsetTop &&\n containerRef.current &&\n containerRef.current.scrollHeight >\n containerRef.current.clientHeight &&\n headingIndex === index\n ) {\n containerRef.current.scrollTo({\n top: Math.max(\n node.offsetTop - Math.ceil(window.innerHeight / 2),\n 0,\n ),\n });\n }\n }}\n >\n {heading.title}\n </a>\n ))}\n </div>\n </div>\n </div>\n </>\n )}\n {editUri?.match(/^https?:\\/\\//) && (\n <div className=\"r-contents-actions\">\n <a href={editUri} target=\"_blank\" rel=\"noopener noreferrer\" className=\"r-contents-git\">\n {editOnService.replace(\"{service}\", detectGitType(editUri).name)}\n </a>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["Contents","headings","hideContents","editUri","translations","containerRef","useRef","dropdownRef","dropdownContentRef","headingIndex","useHeadingIndex","onThisPage","editOnService","useEffect","current","style","setProperty","offsetHeight","React","createElement","className","ref","length","Fragment","type","id","htmlFor","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","map","heading","index","href","key","clsx","nested","node","offsetTop","scrollHeight","clientHeight","scrollTo","top","Math","max","ceil","window","innerHeight","title","match","target","rel","replace","detectGitType","name"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"react";import{detectGitType as r}from"../../../core/utils/git-data.js";import{GithubLogo as t,GitlabLogo as o,GitLogo as i}from"../../ui/git-logos/index.js";const a={github:t,gitlab:o,git:i},l=({git:t})=>{const o="string"==typeof t?{uri:t,logo:a[r(t).key]}:t,i=o.logo;return e.createElement("div",{className:"r-header-social"},e.createElement("a",{href:o.uri,className:"r-header-social-git",target:"_blank",rel:"noopener noreferrer"},e.createElement(i,null)))};export{l as HeaderSocial};
1
+ import e from"react";import{detectGitType as r}from"../../../core/utils/git-tools.js";import{GithubLogo as t,GitlabLogo as o,GitLogo as i}from"../../ui/git-logos/index.js";const l={github:t,gitlab:o,git:i},a=({git:t})=>{const o="string"==typeof t?{uri:t,logo:l[r(t).key]}:t,i=o.logo;return e.createElement("div",{className:"r-header-social"},e.createElement("a",{href:o.uri,className:"r-header-social-git",target:"_blank",rel:"noopener noreferrer"},e.createElement(i,null)))};export{a as HeaderSocial};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/header-social/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { detectGitType } from \"@src/core/utils/git-data\";\nimport { GithubLogo, GitlabLogo, GitLogo } from \"@src/components/ui/git-logos\";\n\nimport \"./header-social.scss\";\n\nconst gitLogos = {\n github: GithubLogo,\n gitlab: GitlabLogo,\n git: GitLogo,\n};\n\nexport const HeaderSocial: React.FC<{ git: string | { uri: string; logo: React.ElementType } }> = ({ git }) => {\n const gitData = typeof git === \"string\" ? { uri: git, logo: gitLogos[detectGitType(git).key] } : git;\n const Logo = gitData.logo;\n\n return (\n <div className=\"r-header-social\">\n <a href={gitData.uri} className=\"r-header-social-git\" target=\"_blank\" rel=\"noopener noreferrer\">\n <Logo />\n </a>\n </div>\n );\n};\n"],"names":["gitLogos","github","GithubLogo","gitlab","GitlabLogo","git","GitLogo","HeaderSocial","gitData","uri","logo","detectGitType","key","Logo","React","createElement","className","href","target","rel"],"mappings":"2KAOA,MAAMA,EAAW,CACbC,OAAQC,EACRC,OAAQC,EACRC,IAAKC,GAGIC,EAAqF,EAAGF,UACjG,MAAMG,EAAyB,iBAARH,EAAmB,CAAEI,IAAKJ,EAAKK,KAAMV,EAASW,EAAcN,GAAKO,MAASP,EAC3FQ,EAAOL,EAAQE,KAErB,OACII,EAAAC,cAAA,MAAA,CAAKC,UAAU,mBACXF,EAAAC,cAAA,IAAA,CAAGE,KAAMT,EAAQC,IAAKO,UAAU,sBAAsBE,OAAO,SAASC,IAAI,uBACtEL,EAAAC,cAACF,EAAI,OAGf"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/header-social/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { detectGitType } from \"@src/core/utils/git-tools\";\nimport { GithubLogo, GitlabLogo, GitLogo } from \"@src/components/ui/git-logos\";\n\nimport \"./header-social.scss\";\n\nconst gitLogos = {\n github: GithubLogo,\n gitlab: GitlabLogo,\n git: GitLogo,\n};\n\nexport const HeaderSocial: React.FC<{ git: string | { uri: string; logo: React.ElementType } }> = ({ git }) => {\n const gitData = typeof git === \"string\" ? { uri: git, logo: gitLogos[detectGitType(git).key] } : git;\n const Logo = gitData.logo;\n\n return (\n <div className=\"r-header-social\">\n <a href={gitData.uri} className=\"r-header-social-git\" target=\"_blank\" rel=\"noopener noreferrer\">\n <Logo />\n </a>\n </div>\n );\n};\n"],"names":["gitLogos","github","GithubLogo","gitlab","GitlabLogo","git","GitLogo","HeaderSocial","gitData","uri","logo","detectGitType","key","Logo","React","createElement","className","href","target","rel"],"mappings":"4KAOA,MAAMA,EAAW,CACbC,OAAQC,EACRC,OAAQC,EACRC,IAAKC,GAGIC,EAAqF,EAAGF,UACjG,MAAMG,EAAyB,iBAARH,EAAmB,CAAEI,IAAKJ,EAAKK,KAAMV,EAASW,EAAcN,GAAKO,MAASP,EAC3FQ,EAAOL,EAAQE,KAErB,OACII,EAAAC,cAAA,MAAA,CAAKC,UAAU,mBACXF,EAAAC,cAAA,IAAA,CAAGE,KAAMT,EAAQC,IAAKO,UAAU,sBAAsBE,OAAO,SAASC,IAAI,uBACtEL,EAAAC,cAACF,EAAI,OAGf"}
@@ -1,7 +1,7 @@
1
- import React from "react";
2
- import { type TokensList } from "marked";
3
- import { type Components } from "../../../core/types/content";
4
1
  import { type BaseProvider } from "../../../core/providers/base";
2
+ import { type Components } from "../../../core/types/content";
3
+ import { type TokensList } from "marked";
4
+ import React from "react";
5
5
  import { type PagesType } from "./types";
6
6
  import { type AnchorData } from "./utils";
7
7
  interface DocumentJSXProps extends Omit<ContentProps, "tokens" | "headings"> {
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/document.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,KAAK,UAAU,EAA2B,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAmB,KAAK,UAAU,EAAE,oCAAgC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAE,qCAAiC;AAoB7D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAOH,KAAK,UAAU,EAClB,MAAM,SAAS,CAAC;AAEjB,UAAU,gBAAiB,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,UAAU,CAAC;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyClD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyS3C,CAAC"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/document.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,YAAY,EAAE,qCAAiC;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAmB,oCAAgC;AAE3E,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAQH,KAAK,UAAU,EAClB,MAAM,SAAS,CAAC;AAEjB,UAAU,gBAAiB,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,UAAU,CAAC;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAyClD,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAmT3C,CAAC"}
@@ -1,2 +1,2 @@
1
- import e from"react";import t,{Text as n,attributesToProps as r,domToReact as o}from"html-react-parser";import{NavContentLink as a}from"../../blocks/nav-content-link/index.js";import{AnchorHeading as s}from"../../blocks/anchor-heading/index.js";import{CodeSection as i}from"../../blocks/code-section/index.js";import{Table as l}from"../../ui/table/table/index.js";import{Tbody as m}from"../../ui/table/tbody/index.js";import{Td as c}from"../../ui/table/td/index.js";import{Th as u}from"../../ui/table/th/index.js";import{Thead as p}from"../../ui/table/thead/index.js";import{Tr as d}from"../../ui/table/tr/index.js";import{CodeSpan as k}from"../../ui/code-span/index.js";import{CodeBlock as f}from"../../ui/code-block/index.js";import{Img as E}from"../../ui/img/index.js";import{Block as h}from"../../ui/block/index.js";import{Blockquote as x}from"../../ui/blockquote/index.js";import{Paragraph as y}from"../../ui/paragraph/index.js";import{Strong as b}from"../../ui/strong/index.js";import{Del as w}from"../../ui/del/index.js";import{Em as g}from"../../ui/em/index.js";import{Hr as j}from"../../ui/hr/index.js";import{Heading as $}from"../../ui/heading/index.js";import{Tabs as v}from"../../ui/tabs/index.js";import{ListItem as A}from"../../ui/list/list-item/index.js";import{OrderedList as N}from"../../ui/list/ordered-list/index.js";import{UnorderedList as T}from"../../ui/list/unordered-list/index.js";import{TaskListItem as C}from"../../ui/task-list/task-list-item/index.js";import{TaskOrderedList as U}from"../../ui/task-list/task-ordered-list/index.js";import{TaskUnorderedList as D}from"../../ui/task-list/task-unordered-list/index.js";import{isNewCodeToken as F,validateComponentName as P,parseCodeLang as S,formatId as W,formatLinkHref as q,parseMarkdown as z}from"./utils.js";const I=({raw:s,components:i,...l})=>{const m={replace(t){if(t instanceof n&&t.data){const{headings:n,tokens:r}=z(t.data);return e.createElement(K,{headings:n,tokens:r,components:i,subtree:!0,...l})}if(!("name"in t))return e.createElement(e.Fragment,null);if("a"===t.name&&"attribs"in t){const{href:n,external:s}=q(t.attribs.href,l.pathname,l.pages);return e.createElement(a,{...r(t.attribs),href:n,external:s},o(t.children,m))}if(!P(t.name))return t;if(!i||!(t.name in i))return console.warn(`Unknown component: "${t.name}"`),e.createElement(e.Fragment,null);const s="attribs"in t?r(t.attribs):{},c=i[t.name],u="children"in t?t.children:null;return e.createElement(c,{...s},u?o(u,m):null)},htmlparser2:{lowerCaseTags:!1,lowerCaseAttributeNames:!1}};return t(s,m)},K=({pathname:t,components:n,uri:r,targetProvider:o,tokens:z,headings:K,config:O={},subtree:R,pages:Z})=>{const{publicDirs:B}=O;let G=null,H={};const J=[],L=({token:z})=>{if(!z)return null;if(F(z,H)){const t=H;H={};const n=Object.keys(t).sort().join("-"),r=J.includes(n);return r||J.push(n),e.createElement(e.Fragment,null,e.createElement(v,{type:"code",tabsData:t,insertStyles:!r,blockKey:n}),e.createElement(L,{token:z}))}if(G){if(Array.isArray(z)||"html"!==z.type||"\x3c!---/robin--\x3e"!==z.raw.trim())return"dummy"===G.type||(Array.isArray(z)?G.childTokens.push(...z):G.childTokens.push(z)),null;{if("dummy"===G.type)return G=null,null;const{componentName:t,childTokens:r,props:o}=G,a=n[t];return G=null,e.createElement(a,{...o},e.createElement(L,{token:r}))}}if(Array.isArray(z))return z.map(((t,n)=>e.createElement(L,{token:t,key:t.raw+n})));switch(z.type){case"heading":const v=`h${z.depth}`,F=K.find((e=>e.token===z));return F?.id?e.createElement(s,{component:v,id:F.id},z.tokens?e.createElement(L,{token:z.tokens}):z.raw):e.createElement($,{component:v,id:1===z.depth?"main-content":void 0},z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"table":return e.createElement(h,null,e.createElement(l,null,e.createElement(p,null,e.createElement(d,null,z.header.map(((t,n)=>e.createElement(u,{key:t.text+n},t.tokens?e.createElement(L,{token:t.tokens}):t.text))))),e.createElement(m,null,z.rows.map(((t,n)=>e.createElement(d,{key:n},t.map(((t,n)=>e.createElement(c,{key:t.text+n},t.tokens?e.createElement(L,{token:t.tokens}):t.text)))))))));case"link":const{href:J,external:M}=q(z.href,t,Z);return e.createElement(a,{href:J,external:M},z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"space":return null;case"hr":return e.createElement(j,null);case"image":return e.createElement(E,{src:z.href,publicDirs:B,provider:o,uri:r,alt:z.title||""});case"paragraph":return R?z.tokens?e.createElement(L,{token:z.tokens}):z.raw:z.tokens?.some((e=>"html"===e.type))&&z.tokens?.every((e=>"html"===e.type||"text"===e.type||"\n"===e.raw))?e.createElement(L,{token:{...z,type:"html"}}):e.createElement(y,null,z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"strong":return e.createElement(b,null,z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"del":return e.createElement(w,null,z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"em":return e.createElement(g,null,z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"blockquote":return e.createElement(x,null,z.tokens?e.createElement(L,{token:z.tokens}):z.raw);case"codespan":const Q=z.raw.replace(/^`|`$/g,""),V=Q.match(/(.+){:([a-zA-Z]+)}$/);if(V){const[,t,n]=V;return e.createElement(f,{code:t,lang:n,inline:!0})}return e.createElement(k,{code:Q});case"code":const{lang:X,configuration:Y}=S(z.lang);if(Y.switcher&&X){const t="string"==typeof Y.tab?W(Y.tab):X;if(H[t]={tabName:(Y.tab||X).toString(),element:e.createElement(i,{lang:X,code:z.text,...Y})},"string"==typeof Y.clone){Y.clone.split(",").forEach((t=>{const[n,r,o]=t.split("|"),a="string"==typeof r?W(r):n;H[a]={tabName:(r||n).toString(),element:e.createElement(i,{lang:n,code:z.text,...Y,filename:o||Y.filename})}}))}return null}return e.createElement(i,{lang:X,code:z.text,...Y});case"escape":return z.text;case"list":if(z.items.every((e=>e.task))){const t=z.ordered?U:D;return e.createElement(t,{start:z.start},z.items.map(((t,n)=>e.createElement(C,{key:t.raw+n,defaultChecked:t.checked},t.tokens?e.createElement(L,{token:t.tokens}):t.raw))))}const _=z.ordered?N:T;return e.createElement(_,{start:z.start},z.items.map(((t,n)=>e.createElement(A,{key:t.raw+n},t.tokens?e.createElement(L,{token:t.tokens}):t.raw))));case"html":const ee=z.raw.trim();if(ee.startsWith("\x3c!---robin")&&ee.endsWith("--\x3e")){const t=ee.endsWith("/--\x3e"),r=ee.match(/<!---robin ([\w]+)/)?.[1];if(!r)return t||(G={type:"dummy"}),null;if(!P(r))return console.warn(`"${r}" is using incorrect casing. Use PascalCase for Robin components`),t||(G={type:"dummy"}),null;if(!n||!(r in n))return console.warn(`Unknown component: "${r}"`),t||(G={type:"dummy"}),null;const o=ee.split(/\r?\n/).slice(1,-1).reduce(((e,t)=>{const[n,r,o]=t.match(/^([\w]+)(?:="(.+)")?$/)||[];return n?(e[r]=o??!0,e):(console.warn(`Invalid component attribute: "${t}"`),e)}),{});if(t){const t=n[r];return e.createElement(t,{...o})}return G={props:o,componentName:r,childTokens:[],type:"base"},null}return e.createElement(I,{raw:z.raw,components:n,config:O,targetProvider:o,pathname:t,uri:r,pages:Z});case"text":return"tokens"in z?e.createElement(L,{token:z.tokens||[]}):z.raw;default:return!z.type&&"raw"in z?z.raw:(console.warn(`Unknown token ${z.type}`,z),null)}};return z.push({type:"text",raw:""}),e.createElement(L,{token:z})};export{K as Document,I as DocumentJSX};
1
+ import{AnchorHeading as e}from"../../blocks/anchor-heading/index.js";import{CodeSection as t}from"../../blocks/code-section/index.js";import{NavContentLink as n}from"../../blocks/nav-content-link/index.js";import{Block as r}from"../../ui/block/index.js";import{Blockquote as o}from"../../ui/blockquote/index.js";import{CodeBlock as a}from"../../ui/code-block/index.js";import{CodeSpan as s}from"../../ui/code-span/index.js";import{Del as i}from"../../ui/del/index.js";import{Em as l}from"../../ui/em/index.js";import{Heading as m}from"../../ui/heading/index.js";import{Hr as c}from"../../ui/hr/index.js";import{Img as u}from"../../ui/img/index.js";import{ListItem as p}from"../../ui/list/list-item/index.js";import{OrderedList as d}from"../../ui/list/ordered-list/index.js";import{UnorderedList as k}from"../../ui/list/unordered-list/index.js";import{Paragraph as f}from"../../ui/paragraph/index.js";import{Strong as E}from"../../ui/strong/index.js";import{Table as h}from"../../ui/table/table/index.js";import{Tbody as x}from"../../ui/table/tbody/index.js";import{Td as y}from"../../ui/table/td/index.js";import{Th as b}from"../../ui/table/th/index.js";import{Thead as w}from"../../ui/table/thead/index.js";import{Tr as g}from"../../ui/table/tr/index.js";import{Tabs as j}from"../../ui/tabs/index.js";import{TaskListItem as $}from"../../ui/task-list/task-list-item/index.js";import{TaskOrderedList as v}from"../../ui/task-list/task-ordered-list/index.js";import{TaskUnorderedList as A}from"../../ui/task-list/task-unordered-list/index.js";import N,{Text as T,attributesToProps as C,domToReact as U}from"html-react-parser";import D from"react";import{isNewCodeToken as F,validateComponentName as P,parseCodeLang as S,formatId as W,parseBlockqoute as q,formatLinkHref as z,parseMarkdown as I}from"./utils.js";const K=({raw:e,components:t,...r})=>{const o={replace(e){if(e instanceof T&&e.data){const{headings:n,tokens:o}=I(e.data);return D.createElement(O,{headings:n,tokens:o,components:t,subtree:!0,...r})}if(!("name"in e))return D.createElement(D.Fragment,null);if("a"===e.name&&"attribs"in e){const{href:t,external:a}=z(e.attribs.href,r.pathname,r.pages);return D.createElement(n,{...C(e.attribs),href:t,external:a},U(e.children,o))}if(!P(e.name))return e;if(!t||!(e.name in t))return console.warn(`Unknown component: "${e.name}"`),D.createElement(D.Fragment,null);const a="attribs"in e?C(e.attribs):{},s=t[e.name],i="children"in e?e.children:null;return D.createElement(s,{...a},i?U(i,o):null)},htmlparser2:{lowerCaseTags:!1,lowerCaseAttributeNames:!1}};return N(e,o)},O=({pathname:N,components:T,uri:C,targetProvider:U,tokens:I,headings:O,config:R={},subtree:Z,pages:B})=>{const{publicDirs:G}=R;let H=null,J={};const L=[],M=({token:I})=>{if(!I)return null;if(F(I,J)){const e=J;J={};const t=Object.keys(e).sort().join("-"),n=L.includes(t);return n||L.push(t),D.createElement(D.Fragment,null,D.createElement(j,{type:"code",tabsData:e,insertStyles:!n,blockKey:t}),D.createElement(M,{token:I}))}if(H){if(Array.isArray(I)||"html"!==I.type||"\x3c!---/robin--\x3e"!==I.raw.trim())return"dummy"===H.type||(Array.isArray(I)?H.childTokens.push(...I):H.childTokens.push(I)),null;{if("dummy"===H.type)return H=null,null;const{componentName:e,childTokens:t,props:n}=H,r=T[e];return H=null,D.createElement(r,{...n},D.createElement(M,{token:t}))}}if(Array.isArray(I))return I.map(((e,t)=>D.createElement(M,{token:e,key:e.raw+t})));switch(I.type){case"heading":const j=`h${I.depth}`,F=O.find((e=>e.token===I));return F?.id?D.createElement(e,{component:j,id:F.id},I.tokens?D.createElement(M,{token:I.tokens}):I.raw):D.createElement(m,{component:j,id:1===I.depth?"main-content":void 0},I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"table":return D.createElement(r,null,D.createElement(h,null,D.createElement(w,null,D.createElement(g,null,I.header.map(((e,t)=>D.createElement(b,{key:e.text+t},e.tokens?D.createElement(M,{token:e.tokens}):e.text))))),D.createElement(x,null,I.rows.map(((e,t)=>D.createElement(g,{key:t},e.map(((e,t)=>D.createElement(y,{key:e.text+t},e.tokens?D.createElement(M,{token:e.tokens}):e.text)))))))));case"link":const{href:L,external:Q}=z(I.href,N,B);return D.createElement(n,{href:L,external:Q},I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"space":return null;case"hr":return D.createElement(c,null);case"image":return D.createElement(u,{src:I.href,publicDirs:G,provider:U,uri:C,alt:I.title||""});case"paragraph":return Z?I.tokens?D.createElement(M,{token:I.tokens}):I.raw:I.tokens?.some((e=>"html"===e.type))&&I.tokens?.every((e=>"html"===e.type||"text"===e.type||"\n"===e.raw))?D.createElement(M,{token:{...I,type:"html"}}):D.createElement(f,null,I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"strong":return D.createElement(E,null,I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"del":return D.createElement(i,null,I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"em":return D.createElement(l,null,I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"blockquote":const{token:V,type:X}=q(I);return D.createElement(o,{type:X},V.tokens?D.createElement(M,{token:V.tokens}):V.raw);case"codespan":const Y=I.raw.replace(/^`|`$/g,""),_=Y.match(/(.+){:([a-zA-Z]+)}$/);if(_){const[,e,t]=_;return D.createElement(a,{code:e,lang:t,inline:!0})}return D.createElement(s,{code:Y});case"code":const{lang:ee,configuration:te}=S(I.lang);if(te.switcher&&ee){const e="string"==typeof te.tab?W(te.tab):ee;if(J[e]={tabName:(te.tab||ee).toString(),element:D.createElement(t,{lang:ee,code:I.text,...te})},"string"==typeof te.clone){te.clone.split(",").forEach((e=>{const[n,r,o]=e.split("|"),a="string"==typeof r?W(r):n;J[a]={tabName:(r||n).toString(),element:D.createElement(t,{lang:n,code:I.text,...te,filename:o||te.filename})}}))}return null}return D.createElement(t,{lang:ee,code:I.text,...te});case"escape":return I.text;case"list":if(I.items.every((e=>e.task))){const e=I.ordered?v:A;return D.createElement(e,{start:I.start},I.items.map(((e,t)=>D.createElement($,{key:e.raw+t,defaultChecked:e.checked},e.tokens?D.createElement(M,{token:e.tokens}):e.raw))))}const ne=I.ordered?d:k;return D.createElement(ne,{start:I.start},I.items.map(((e,t)=>D.createElement(p,{key:e.raw+t},e.tokens?D.createElement(M,{token:e.tokens}):e.raw))));case"html":const re=I.raw.trim();if(re.startsWith("\x3c!---robin")&&re.endsWith("--\x3e")){const e=re.endsWith("/--\x3e"),t=re.match(/<!---robin ([\w]+)/)?.[1];if(!t)return e||(H={type:"dummy"}),null;if(!P(t))return console.warn(`"${t}" is using incorrect casing. Use PascalCase for Robin components`),e||(H={type:"dummy"}),null;if(!T||!(t in T))return console.warn(`Unknown component: "${t}"`),e||(H={type:"dummy"}),null;const n=re.split(/\r?\n/).slice(1,-1).reduce(((e,t)=>{const[n,r,o]=t.match(/^([\w]+)(?:="(.+)")?$/)||[];return n?(e[r]=o??!0,e):(console.warn(`Invalid component attribute: "${t}"`),e)}),{});if(e){const e=T[t];return D.createElement(e,{...n})}return H={props:n,componentName:t,childTokens:[],type:"base"},null}return D.createElement(K,{raw:I.raw,components:T,config:R,targetProvider:U,pathname:N,uri:C,pages:B});case"text":return"tokens"in I?D.createElement(M,{token:I.tokens||[]}):I.raw;default:return!I.type&&"raw"in I?I.raw:(console.warn(`Unknown token ${I.type}`,I),null)}};return I.push({type:"text",raw:""}),D.createElement(M,{token:I})};export{O as Document,K as DocumentJSX};
2
2
  //# sourceMappingURL=document.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sources":["../../../../src/components/elements/article/document.tsx"],"sourcesContent":["import React from \"react\";\nimport parse, { attributesToProps, DOMNode, domToReact, HTMLReactParserOptions, Text } from \"html-react-parser\";\nimport { type BundledLanguage } from \"shiki/langs\";\nimport { type TokensList, type Token, type Tokens } from \"marked\";\nimport { type RobinProps, type Components } from \"@src/core/types/content\";\nimport { type BaseProvider } from \"@src/core/providers/base\";\nimport { NavContentLink } from \"@src/components/blocks/nav-content-link\";\nimport { AnchorHeading } from \"@src/components/blocks/anchor-heading\";\nimport { CodeSection } from \"@src/components/blocks/code-section\";\nimport { Table, Thead, Tr, Th, Tbody, Td } from \"@src/components/ui/table\";\nimport { CodeSpan } from \"@src/components/ui/code-span\";\nimport { CodeBlock } from \"@src/components/ui/code-block\";\nimport { Img } from \"@src/components/ui/img\";\nimport { Block } from \"@src/components/ui/block\";\nimport { Blockquote } from \"@src/components/ui/blockquote\";\nimport { Paragraph } from \"@src/components/ui/paragraph\";\nimport { Strong } from \"@src/components/ui/strong\";\nimport { Del } from \"@src/components/ui/del\";\nimport { Em } from \"@src/components/ui/em\";\nimport { Hr } from \"@src/components/ui/hr\";\nimport { Heading } from \"@src/components/ui/heading\";\nimport { Tabs } from \"@src/components/ui/tabs\";\nimport { ListItem, OrderedList, UnorderedList } from \"@src/components/ui/list\";\nimport { TaskListItem, TaskOrderedList, TaskUnorderedList } from \"@src/components/ui/task-list\";\n\nimport { type PagesType } from \"./types\";\nimport {\n formatId,\n formatLinkHref,\n isNewCodeToken,\n parseCodeLang,\n parseMarkdown,\n validateComponentName,\n type AnchorData,\n} from \"./utils\";\n\ninterface DocumentJSXProps extends Omit<ContentProps, \"tokens\" | \"headings\"> {\n raw: string;\n pages?: PagesType;\n}\n\nexport const DocumentJSX: React.FC<DocumentJSXProps> = ({ raw, components, ...baseProps }) => {\n const parseOptions: HTMLReactParserOptions = {\n replace(domNode) {\n if (domNode instanceof Text && domNode.data) {\n const { headings, tokens } = parseMarkdown(domNode.data);\n\n return <Document headings={headings} tokens={tokens} components={components} subtree {...baseProps} />;\n }\n\n if (!(\"name\" in domNode)) return <></>;\n\n if (domNode.name === \"a\" && \"attribs\" in domNode) {\n const { href, external } = formatLinkHref(domNode.attribs.href, baseProps.pathname, baseProps.pages);\n return (\n <NavContentLink {...attributesToProps(domNode.attribs)} href={href} external={external}>\n {domToReact(domNode.children as DOMNode[], parseOptions)}\n </NavContentLink>\n );\n }\n\n if (!validateComponentName(domNode.name)) return domNode;\n\n if (!components || !(domNode.name in components)) {\n console.warn(`Unknown component: \"${domNode.name}\"`);\n return <></>;\n }\n\n const props = \"attribs\" in domNode ? attributesToProps(domNode.attribs) : {};\n const Component = components[domNode.name];\n const children = \"children\" in domNode ? domNode.children : null;\n\n return (\n <Component {...props}>{children ? domToReact(children as DOMNode[], parseOptions) : null}</Component>\n );\n },\n htmlparser2: {\n lowerCaseTags: false,\n lowerCaseAttributeNames: false,\n },\n };\n return parse(raw, parseOptions);\n};\n\nexport type ContentProps = {\n pathname: string;\n components?: Components;\n config?: {\n publicDirs?: string[];\n };\n uri?: string;\n targetProvider?: BaseProvider | null;\n tokens: TokensList;\n headings: AnchorData[];\n subtree?: boolean;\n pages?: PagesType;\n};\n\nexport const Document: React.FC<ContentProps> = ({\n pathname,\n components,\n uri,\n targetProvider,\n tokens,\n headings,\n config = {},\n subtree,\n pages,\n}) => {\n const { publicDirs } = config;\n\n let robin:\n | null\n | { props: RobinProps; childTokens: Token[]; componentName: string; type: \"base\" }\n | { type: \"dummy\" } = null;\n let codeQueue: { [lang: string]: { element: JSX.Element; tabName: string } } = {};\n const insertedCodeKeys: string[] = [];\n const DocumentToken: React.FC<{ token: Token | Token[] }> = ({ token }) => {\n if (!token) return null;\n\n if (isNewCodeToken(token, codeQueue)) {\n const tabsData = codeQueue;\n codeQueue = {};\n const tabsKey = Object.keys(tabsData).sort().join(\"-\");\n const isInsertedKey = insertedCodeKeys.includes(tabsKey);\n if (!isInsertedKey) insertedCodeKeys.push(tabsKey);\n\n return (\n <>\n <Tabs type=\"code\" tabsData={tabsData} insertStyles={!isInsertedKey} blockKey={tabsKey} />\n <DocumentToken token={token} />\n </>\n );\n }\n\n if (robin) {\n if (!Array.isArray(token) && token.type === \"html\" && token.raw.trim() === \"<!---/robin-->\") {\n if (robin.type === \"dummy\") {\n robin = null;\n return null;\n }\n\n const { componentName, childTokens, props } = robin;\n const RobinComponent = components![componentName];\n robin = null;\n return (\n <RobinComponent {...props}>\n <DocumentToken token={childTokens} />\n </RobinComponent>\n );\n } else {\n if (robin.type === \"dummy\") return null;\n\n if (Array.isArray(token)) {\n robin.childTokens.push(...token);\n } else {\n robin.childTokens.push(token);\n }\n return null;\n }\n }\n\n if (Array.isArray(token)) {\n return token.map((t, index) => <DocumentToken token={t} key={(t as Tokens.Text).raw + index} />);\n }\n\n switch (token.type) {\n case \"heading\":\n const Component = `h${token.depth}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n const predefinedData = headings.find((heading) => heading.token === token);\n if (predefinedData?.id) {\n return (\n <AnchorHeading component={Component} id={predefinedData.id}>\n {token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}\n </AnchorHeading>\n );\n } else {\n return (\n <Heading component={Component} id={token.depth === 1 ? \"main-content\" : undefined}>\n {token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}\n </Heading>\n );\n }\n case \"table\":\n return (\n <Block>\n <Table>\n <Thead>\n <Tr>\n {token.header.map((t: Tokens.Text, index: number) => (\n <Th key={t.text + index}>\n {t.tokens ? <DocumentToken token={t.tokens} /> : t.text}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {token.rows.map((row: Tokens.Text[], rowIndex: number) => (\n <Tr key={rowIndex}>\n {row.map((elem, elemIndex) => (\n <Td key={elem.text + elemIndex}>\n {elem.tokens ? <DocumentToken token={elem.tokens} /> : elem.text}\n </Td>\n ))}\n </Tr>\n ))}\n </Tbody>\n </Table>\n </Block>\n );\n case \"link\":\n const { href, external } = formatLinkHref(token.href, pathname, pages);\n\n return (\n <NavContentLink href={href} external={external}>\n {token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}\n </NavContentLink>\n );\n case \"space\":\n return null;\n case \"hr\":\n return <Hr />;\n case \"image\":\n return (\n <Img\n src={token.href}\n publicDirs={publicDirs}\n provider={targetProvider}\n uri={uri}\n alt={token.title || \"\"}\n />\n );\n case \"paragraph\":\n if (subtree) return token.tokens ? <DocumentToken token={token.tokens} /> : token.raw;\n if (\n token.tokens?.some((t) => t.type === \"html\") &&\n token.tokens?.every((t) => t.type === \"html\" || t.type === \"text\" || t.raw === \"\\n\")\n ) {\n return <DocumentToken token={{ ...token, type: \"html\" }} />;\n }\n\n return <Paragraph>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Paragraph>;\n case \"strong\":\n return <Strong>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Strong>;\n case \"del\":\n return <Del>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Del>;\n case \"em\":\n return <Em>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Em>;\n case \"blockquote\":\n return <Blockquote>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Blockquote>;\n case \"codespan\":\n const inlineCode = token.raw.replace(/^`|`$/g, \"\");\n const hightlightMatch = inlineCode.match(/(.+){:([a-zA-Z]+)}$/);\n if (hightlightMatch) {\n const [, raw, lang] = hightlightMatch;\n return <CodeBlock code={raw} lang={lang as BundledLanguage} inline />;\n }\n\n return <CodeSpan code={inlineCode} />;\n case \"code\":\n const { lang, configuration } = parseCodeLang(token.lang);\n if (configuration.switcher && lang) {\n const tabKey = typeof configuration.tab === \"string\" ? formatId(configuration.tab) : lang;\n codeQueue[tabKey] = {\n tabName: (configuration.tab || lang).toString(),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element: <CodeSection lang={lang as any} code={token.text} {...configuration} />,\n };\n\n if (typeof configuration.clone === \"string\") {\n const copies = configuration.clone.split(\",\");\n\n copies.forEach((copy) => {\n const [copyLang, copyTab, copyFileName] = copy.split(\"|\");\n const copyTabKey = typeof copyTab === \"string\" ? formatId(copyTab) : copyLang;\n\n codeQueue[copyTabKey] = {\n tabName: (copyTab || copyLang).toString(),\n element: (\n <CodeSection\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lang={copyLang as any}\n code={token.text}\n {...configuration}\n filename={copyFileName || (configuration.filename as string)}\n />\n ),\n };\n });\n }\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <CodeSection lang={lang as any} code={token.text} {...configuration} />;\n case \"escape\":\n return token.text;\n case \"list\":\n const isTaskList = token.items.every((i: Tokens.ListItem) => i.task);\n if (isTaskList) {\n const ListComponent = token.ordered ? TaskOrderedList : TaskUnorderedList;\n return (\n <ListComponent start={token.start}>\n {token.items.map((elem: Tokens.ListItem, index: number) => (\n <TaskListItem key={elem.raw + index} defaultChecked={elem.checked}>\n {elem.tokens ? <DocumentToken token={elem.tokens} /> : elem.raw}\n </TaskListItem>\n ))}\n </ListComponent>\n );\n }\n\n const ListComponent = token.ordered ? OrderedList : UnorderedList;\n return (\n <ListComponent start={token.start}>\n {token.items.map((elem: Tokens.ListItem, index: number) => (\n <ListItem key={elem.raw + index}>\n {elem.tokens ? <DocumentToken token={elem.tokens} /> : elem.raw}\n </ListItem>\n ))}\n </ListComponent>\n );\n case \"html\":\n const text = token.raw.trim();\n\n if (text.startsWith(\"<!---robin\") && text.endsWith(\"-->\")) {\n const selfClosed = text.endsWith(\"/-->\");\n const componentName = text.match(/<!---robin ([\\w]+)/)?.[1];\n\n if (!componentName) {\n if (!selfClosed) robin = { type: \"dummy\" };\n return null;\n }\n\n if (!validateComponentName(componentName)) {\n console.warn(\n `\"${componentName}\" is using incorrect casing. Use PascalCase for Robin components`,\n );\n if (!selfClosed) robin = { type: \"dummy\" };\n return null;\n }\n\n if (!components || !(componentName in components)) {\n console.warn(`Unknown component: \"${componentName}\"`);\n if (!selfClosed) robin = { type: \"dummy\" };\n return null;\n }\n const propRows = text.split(/\\r?\\n/).slice(1, -1);\n const props = propRows.reduce<{ [key: string]: string | true }>((acc, cur) => {\n const [_match, key, value] = cur.match(/^([\\w]+)(?:=\"(.+)\")?$/) || [];\n\n if (!_match) {\n console.warn(`Invalid component attribute: \"${cur}\"`);\n return acc;\n }\n\n acc[key] = value ?? true;\n return acc;\n }, {});\n\n if (selfClosed) {\n const Component = components[componentName as keyof typeof components];\n return <Component {...props} />;\n }\n\n robin = { props, componentName, childTokens: [], type: \"base\" };\n return null;\n }\n\n return (\n <DocumentJSX\n raw={token.raw}\n components={components}\n config={config}\n targetProvider={targetProvider}\n pathname={pathname}\n uri={uri}\n pages={pages}\n />\n );\n case \"text\":\n if (\"tokens\" in token) {\n return <DocumentToken token={token.tokens || []} />;\n }\n return token.raw;\n default:\n if (!token.type && \"raw\" in token) return token.raw;\n\n console.warn(`Unknown token ${token.type}`, token);\n return null;\n }\n };\n\n tokens.push({ type: \"text\", raw: \"\" });\n return <DocumentToken token={tokens} />;\n};\n"],"names":["DocumentJSX","raw","components","baseProps","parseOptions","replace","domNode","Text","data","headings","tokens","parseMarkdown","React","Document","subtree","name","href","external","formatLinkHref","attribs","pathname","pages","createElement","NavContentLink","attributesToProps","domToReact","children","validateComponentName","console","warn","props","Component","htmlparser2","lowerCaseTags","lowerCaseAttributeNames","parse","uri","targetProvider","config","publicDirs","robin","codeQueue","insertedCodeKeys","DocumentToken","token","isNewCodeToken","tabsData","tabsKey","Object","keys","sort","join","isInsertedKey","includes","push","Fragment","Tabs","type","insertStyles","blockKey","Array","isArray","trim","childTokens","componentName","RobinComponent","map","t","index","key","depth","predefinedData","find","heading","id","AnchorHeading","component","Heading","undefined","Block","Table","Thead","Tr","header","Th","text","Tbody","rows","row","rowIndex","elem","elemIndex","Td","Hr","Img","src","provider","alt","title","some","every","Paragraph","Strong","Del","Em","Blockquote","inlineCode","hightlightMatch","match","lang","CodeBlock","code","inline","CodeSpan","configuration","parseCodeLang","switcher","tabKey","tab","formatId","tabName","toString","element","CodeSection","clone","split","forEach","copy","copyLang","copyTab","copyFileName","copyTabKey","filename","items","i","task","ListComponent","ordered","TaskOrderedList","TaskUnorderedList","start","TaskListItem","defaultChecked","checked","OrderedList","UnorderedList","ListItem","startsWith","endsWith","selfClosed","slice","reduce","acc","cur","_match","value"],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sources":["../../../../src/components/elements/article/document.tsx"],"sourcesContent":["import { AnchorHeading } from \"@src/components/blocks/anchor-heading\";\nimport { CodeSection } from \"@src/components/blocks/code-section\";\nimport { NavContentLink } from \"@src/components/blocks/nav-content-link\";\nimport { Block } from \"@src/components/ui/block\";\nimport { Blockquote } from \"@src/components/ui/blockquote\";\nimport { CodeBlock } from \"@src/components/ui/code-block\";\nimport { CodeSpan } from \"@src/components/ui/code-span\";\nimport { Del } from \"@src/components/ui/del\";\nimport { Em } from \"@src/components/ui/em\";\nimport { Heading } from \"@src/components/ui/heading\";\nimport { Hr } from \"@src/components/ui/hr\";\nimport { Img } from \"@src/components/ui/img\";\nimport { ListItem, OrderedList, UnorderedList } from \"@src/components/ui/list\";\nimport { Paragraph } from \"@src/components/ui/paragraph\";\nimport { Strong } from \"@src/components/ui/strong\";\nimport { Table, Tbody, Td, Th, Thead, Tr } from \"@src/components/ui/table\";\nimport { Tabs } from \"@src/components/ui/tabs\";\nimport { TaskListItem, TaskOrderedList, TaskUnorderedList } from \"@src/components/ui/task-list\";\nimport { type BaseProvider } from \"@src/core/providers/base\";\nimport { type Components, type RobinProps } from \"@src/core/types/content\";\nimport parse, { attributesToProps, DOMNode, domToReact, HTMLReactParserOptions, Text } from \"html-react-parser\";\nimport { type Token, type Tokens, type TokensList } from \"marked\";\nimport React from \"react\";\nimport { type BundledLanguage } from \"shiki/langs\";\n\nimport { type PagesType } from \"./types\";\nimport {\n formatId,\n formatLinkHref,\n isNewCodeToken,\n parseBlockqoute,\n parseCodeLang,\n parseMarkdown,\n validateComponentName,\n type AnchorData,\n} from \"./utils\";\n\ninterface DocumentJSXProps extends Omit<ContentProps, \"tokens\" | \"headings\"> {\n raw: string;\n pages?: PagesType;\n}\n\nexport const DocumentJSX: React.FC<DocumentJSXProps> = ({ raw, components, ...baseProps }) => {\n const parseOptions: HTMLReactParserOptions = {\n replace(domNode) {\n if (domNode instanceof Text && domNode.data) {\n const { headings, tokens } = parseMarkdown(domNode.data);\n\n return <Document headings={headings} tokens={tokens} components={components} subtree {...baseProps} />;\n }\n\n if (!(\"name\" in domNode)) return <></>;\n\n if (domNode.name === \"a\" && \"attribs\" in domNode) {\n const { href, external } = formatLinkHref(domNode.attribs.href, baseProps.pathname, baseProps.pages);\n return (\n <NavContentLink {...attributesToProps(domNode.attribs)} href={href} external={external}>\n {domToReact(domNode.children as DOMNode[], parseOptions)}\n </NavContentLink>\n );\n }\n\n if (!validateComponentName(domNode.name)) return domNode;\n\n if (!components || !(domNode.name in components)) {\n console.warn(`Unknown component: \"${domNode.name}\"`);\n return <></>;\n }\n\n const props = \"attribs\" in domNode ? attributesToProps(domNode.attribs) : {};\n const Component = components[domNode.name];\n const children = \"children\" in domNode ? domNode.children : null;\n\n return (\n <Component {...props}>{children ? domToReact(children as DOMNode[], parseOptions) : null}</Component>\n );\n },\n htmlparser2: {\n lowerCaseTags: false,\n lowerCaseAttributeNames: false,\n },\n };\n return parse(raw, parseOptions);\n};\n\nexport type ContentProps = {\n pathname: string;\n components?: Components;\n config?: {\n publicDirs?: string[];\n };\n uri?: string;\n targetProvider?: BaseProvider | null;\n tokens: TokensList;\n headings: AnchorData[];\n subtree?: boolean;\n pages?: PagesType;\n};\n\nexport const Document: React.FC<ContentProps> = ({\n pathname,\n components,\n uri,\n targetProvider,\n tokens,\n headings,\n config = {},\n subtree,\n pages,\n}) => {\n const { publicDirs } = config;\n\n let robin:\n | null\n | { props: RobinProps; childTokens: Token[]; componentName: string; type: \"base\" }\n | { type: \"dummy\" } = null;\n let codeQueue: { [lang: string]: { element: JSX.Element; tabName: string } } = {};\n const insertedCodeKeys: string[] = [];\n const DocumentToken: React.FC<{ token: Token | Token[] }> = ({ token }) => {\n if (!token) return null;\n\n if (isNewCodeToken(token, codeQueue)) {\n const tabsData = codeQueue;\n codeQueue = {};\n const tabsKey = Object.keys(tabsData).sort().join(\"-\");\n const isInsertedKey = insertedCodeKeys.includes(tabsKey);\n if (!isInsertedKey) insertedCodeKeys.push(tabsKey);\n\n return (\n <>\n <Tabs type=\"code\" tabsData={tabsData} insertStyles={!isInsertedKey} blockKey={tabsKey} />\n <DocumentToken token={token} />\n </>\n );\n }\n\n if (robin) {\n if (!Array.isArray(token) && token.type === \"html\" && token.raw.trim() === \"<!---/robin-->\") {\n if (robin.type === \"dummy\") {\n robin = null;\n return null;\n }\n\n const { componentName, childTokens, props } = robin;\n const RobinComponent = components![componentName];\n robin = null;\n return (\n <RobinComponent {...props}>\n <DocumentToken token={childTokens} />\n </RobinComponent>\n );\n } else {\n if (robin.type === \"dummy\") return null;\n\n if (Array.isArray(token)) {\n robin.childTokens.push(...token);\n } else {\n robin.childTokens.push(token);\n }\n return null;\n }\n }\n\n if (Array.isArray(token)) {\n return token.map((t, index) => <DocumentToken token={t} key={(t as Tokens.Text).raw + index} />);\n }\n\n switch (token.type) {\n case \"heading\":\n const Component = `h${token.depth}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n const predefinedData = headings.find((heading) => heading.token === token);\n if (predefinedData?.id) {\n return (\n <AnchorHeading component={Component} id={predefinedData.id}>\n {token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}\n </AnchorHeading>\n );\n } else {\n return (\n <Heading component={Component} id={token.depth === 1 ? \"main-content\" : undefined}>\n {token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}\n </Heading>\n );\n }\n case \"table\":\n return (\n <Block>\n <Table>\n <Thead>\n <Tr>\n {token.header.map((t: Tokens.Text, index: number) => (\n <Th key={t.text + index}>\n {t.tokens ? <DocumentToken token={t.tokens} /> : t.text}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {token.rows.map((row: Tokens.Text[], rowIndex: number) => (\n <Tr key={rowIndex}>\n {row.map((elem, elemIndex) => (\n <Td key={elem.text + elemIndex}>\n {elem.tokens ? <DocumentToken token={elem.tokens} /> : elem.text}\n </Td>\n ))}\n </Tr>\n ))}\n </Tbody>\n </Table>\n </Block>\n );\n case \"link\":\n const { href, external } = formatLinkHref(token.href, pathname, pages);\n\n return (\n <NavContentLink href={href} external={external}>\n {token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}\n </NavContentLink>\n );\n case \"space\":\n return null;\n case \"hr\":\n return <Hr />;\n case \"image\":\n return (\n <Img\n src={token.href}\n publicDirs={publicDirs}\n provider={targetProvider}\n uri={uri}\n alt={token.title || \"\"}\n />\n );\n case \"paragraph\":\n if (subtree) return token.tokens ? <DocumentToken token={token.tokens} /> : token.raw;\n if (\n token.tokens?.some((t) => t.type === \"html\") &&\n token.tokens?.every((t) => t.type === \"html\" || t.type === \"text\" || t.raw === \"\\n\")\n ) {\n return <DocumentToken token={{ ...token, type: \"html\" }} />;\n }\n\n return <Paragraph>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Paragraph>;\n case \"strong\":\n return <Strong>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Strong>;\n case \"del\":\n return <Del>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Del>;\n case \"em\":\n return <Em>{token.tokens ? <DocumentToken token={token.tokens} /> : token.raw}</Em>;\n case \"blockquote\":\n const { token: blockquoteToken, type } = parseBlockqoute(token);\n\n return (\n <Blockquote type={type}>\n {blockquoteToken.tokens ? (\n <DocumentToken token={blockquoteToken.tokens} />\n ) : (\n blockquoteToken.raw\n )}\n </Blockquote>\n );\n case \"codespan\":\n const inlineCode = token.raw.replace(/^`|`$/g, \"\");\n const hightlightMatch = inlineCode.match(/(.+){:([a-zA-Z]+)}$/);\n if (hightlightMatch) {\n const [, raw, lang] = hightlightMatch;\n return <CodeBlock code={raw} lang={lang as BundledLanguage} inline />;\n }\n\n return <CodeSpan code={inlineCode} />;\n case \"code\":\n const { lang, configuration } = parseCodeLang(token.lang);\n if (configuration.switcher && lang) {\n const tabKey = typeof configuration.tab === \"string\" ? formatId(configuration.tab) : lang;\n codeQueue[tabKey] = {\n tabName: (configuration.tab || lang).toString(),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element: <CodeSection lang={lang as any} code={token.text} {...configuration} />,\n };\n\n if (typeof configuration.clone === \"string\") {\n const copies = configuration.clone.split(\",\");\n\n copies.forEach((copy) => {\n const [copyLang, copyTab, copyFileName] = copy.split(\"|\");\n const copyTabKey = typeof copyTab === \"string\" ? formatId(copyTab) : copyLang;\n\n codeQueue[copyTabKey] = {\n tabName: (copyTab || copyLang).toString(),\n element: (\n <CodeSection\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lang={copyLang as any}\n code={token.text}\n {...configuration}\n filename={copyFileName || (configuration.filename as string)}\n />\n ),\n };\n });\n }\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return <CodeSection lang={lang as any} code={token.text} {...configuration} />;\n case \"escape\":\n return token.text;\n case \"list\":\n const isTaskList = token.items.every((i: Tokens.ListItem) => i.task);\n if (isTaskList) {\n const ListComponent = token.ordered ? TaskOrderedList : TaskUnorderedList;\n return (\n <ListComponent start={token.start}>\n {token.items.map((elem: Tokens.ListItem, index: number) => (\n <TaskListItem key={elem.raw + index} defaultChecked={elem.checked}>\n {elem.tokens ? <DocumentToken token={elem.tokens} /> : elem.raw}\n </TaskListItem>\n ))}\n </ListComponent>\n );\n }\n\n const ListComponent = token.ordered ? OrderedList : UnorderedList;\n return (\n <ListComponent start={token.start}>\n {token.items.map((elem: Tokens.ListItem, index: number) => (\n <ListItem key={elem.raw + index}>\n {elem.tokens ? <DocumentToken token={elem.tokens} /> : elem.raw}\n </ListItem>\n ))}\n </ListComponent>\n );\n case \"html\":\n const text = token.raw.trim();\n\n if (text.startsWith(\"<!---robin\") && text.endsWith(\"-->\")) {\n const selfClosed = text.endsWith(\"/-->\");\n const componentName = text.match(/<!---robin ([\\w]+)/)?.[1];\n\n if (!componentName) {\n if (!selfClosed) robin = { type: \"dummy\" };\n return null;\n }\n\n if (!validateComponentName(componentName)) {\n console.warn(\n `\"${componentName}\" is using incorrect casing. Use PascalCase for Robin components`,\n );\n if (!selfClosed) robin = { type: \"dummy\" };\n return null;\n }\n\n if (!components || !(componentName in components)) {\n console.warn(`Unknown component: \"${componentName}\"`);\n if (!selfClosed) robin = { type: \"dummy\" };\n return null;\n }\n const propRows = text.split(/\\r?\\n/).slice(1, -1);\n const props = propRows.reduce<{ [key: string]: string | true }>((acc, cur) => {\n const [_match, key, value] = cur.match(/^([\\w]+)(?:=\"(.+)\")?$/) || [];\n\n if (!_match) {\n console.warn(`Invalid component attribute: \"${cur}\"`);\n return acc;\n }\n\n acc[key] = value ?? true;\n return acc;\n }, {});\n\n if (selfClosed) {\n const Component = components[componentName as keyof typeof components];\n return <Component {...props} />;\n }\n\n robin = { props, componentName, childTokens: [], type: \"base\" };\n return null;\n }\n\n return (\n <DocumentJSX\n raw={token.raw}\n components={components}\n config={config}\n targetProvider={targetProvider}\n pathname={pathname}\n uri={uri}\n pages={pages}\n />\n );\n case \"text\":\n if (\"tokens\" in token) {\n return <DocumentToken token={token.tokens || []} />;\n }\n return token.raw;\n default:\n if (!token.type && \"raw\" in token) return token.raw;\n\n console.warn(`Unknown token ${token.type}`, token);\n return null;\n }\n };\n\n tokens.push({ type: \"text\", raw: \"\" });\n return <DocumentToken token={tokens} />;\n};\n"],"names":["DocumentJSX","raw","components","baseProps","parseOptions","replace","domNode","Text","data","headings","tokens","parseMarkdown","React","Document","subtree","name","href","external","formatLinkHref","attribs","pathname","pages","createElement","NavContentLink","attributesToProps","domToReact","children","validateComponentName","console","warn","props","Component","htmlparser2","lowerCaseTags","lowerCaseAttributeNames","parse","uri","targetProvider","config","publicDirs","robin","codeQueue","insertedCodeKeys","DocumentToken","token","isNewCodeToken","tabsData","tabsKey","Object","keys","sort","join","isInsertedKey","includes","push","Fragment","Tabs","type","insertStyles","blockKey","Array","isArray","trim","childTokens","componentName","RobinComponent","map","t","index","key","depth","predefinedData","find","heading","id","AnchorHeading","component","Heading","undefined","Block","Table","Thead","Tr","header","Th","text","Tbody","rows","row","rowIndex","elem","elemIndex","Td","Hr","Img","src","provider","alt","title","some","every","Paragraph","Strong","Del","Em","blockquoteToken","parseBlockqoute","Blockquote","inlineCode","hightlightMatch","match","lang","CodeBlock","code","inline","CodeSpan","configuration","parseCodeLang","switcher","tabKey","tab","formatId","tabName","toString","element","CodeSection","clone","split","forEach","copy","copyLang","copyTab","copyFileName","copyTabKey","filename","items","i","task","ListComponent","ordered","TaskOrderedList","TaskUnorderedList","start","TaskListItem","defaultChecked","checked","OrderedList","UnorderedList","ListItem","startsWith","endsWith","selfClosed","slice","reduce","acc","cur","_match","value"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
- import { type Token } from "marked";
3
- import { PagesType } from "./types";
2
+ import { type Tokens, type Token } from "marked";
3
+ import { type BlockquoteType } from "../../ui/blockquote";
4
+ import { type PagesType } from "./types";
4
5
  export type AnchorData = {
5
6
  title: string;
6
7
  id: string;
7
8
  nested: boolean;
8
9
  token: Token;
9
10
  };
10
- export declare const parseTokenText: (token: Token) => string;
11
11
  export declare const parseMarkdown: (content: string) => {
12
12
  tokens: import("marked").TokensList;
13
13
  headings: AnchorData[];
@@ -30,4 +30,20 @@ export declare const formatLinkHref: (href: string, pathname: string, pages?: Pa
30
30
  href: string;
31
31
  external: boolean;
32
32
  };
33
+ export declare const parseBlockqoute: (token: Tokens.Blockquote | Tokens.Generic) => {
34
+ token: {
35
+ raw: string;
36
+ type: "blockquote";
37
+ text: string;
38
+ tokens: Token[];
39
+ } | {
40
+ raw: string;
41
+ type: string;
42
+ tokens?: Token[] | undefined;
43
+ };
44
+ type: BlockquoteType;
45
+ } | {
46
+ token: Tokens.Blockquote | Tokens.Generic;
47
+ type: null;
48
+ };
33
49
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,KAAK,KAAG,MAY7C,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,MAAM;;;CAmB5C,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAS,MAAM,WAEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,MAAM,YAEjD,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,MAAM;;;;;CAmBxC,CAAC;AAEF,eAAO,MAAM,cAAc,UAChB,KAAK,GAAG,KAAK,EAAE,aACX;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,YAa3E,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,YAAY,MAAM,UAAU,SAAS;;;CAiB/E,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAS,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,KAAK,cAAc,EAAE,4BAAsC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,MAAM;;;CAmB5C,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAS,MAAM,WAEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,MAAM,YAEjD,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,MAAM;;;;;CAmBxC,CAAC;AAEF,eAAO,MAAM,cAAc,UAChB,KAAK,GAAG,KAAK,EAAE,aACX;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,YAa3E,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,YAAY,MAAM,UAAU,SAAS;;;CAiB/E,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,OAAO,UAAU,GAAG,OAAO,OAAO;;;;;;;;;;;;;;;CAyBxE,CAAC"}
@@ -1,2 +1,2 @@
1
- import t from"github-slugger";import e from"gray-matter";import{lexer as r}from"marked";import{join as n,dirname as o}from"path";const i=t=>t?"tokens"in t?t.tokens?.map((t=>i(t))).join("")||"":"raw"in t?t.raw:"":"",a=n=>{const{content:o}=e(n),a=r(o.trim()),s=new t,c=a.reduce(((t,e)=>{if("heading"===e.type&&(2===e.depth||3===e.depth)){const r=i(e);t.push({title:r,id:s.slug(r),token:e,nested:3===e.depth})}return t}),[]);return{tokens:a,headings:c}},s=t=>t.toLowerCase().replace(/\W/g,"_").replace(/_+/g,"_"),c=t=>/^[A-Z][a-zA-Z0-9]+$/.test(t),p=t=>{let e={},r=t;const n=t.match(/[a-z]+=("[^"]+"|'[^']+'|[^ ]+)|[a-z]+/g);if(Array.isArray(n)){const[t,...o]=n;r=t,e=o.reduce(((t,e)=>{const[r,...n]=e.split("=");return t[r]=!n||(0===n.length||n.join("=").replace(/(^["']|['"]$)/g,"")),t}),{})}return{lang:r,configuration:e}},g=(t,e)=>{if(Array.isArray(t)||!Object.keys(e).length)return!1;if("code"===t.type){const{lang:r,configuration:n}=p(t.lang);if(e["string"==typeof n.tab?s(n.tab):r]||!n.switcher)return!0}return"space"!==t.type&&"code"!==t.type},h=(t,e,r)=>{let i=t;const a=/^(https?:\/\/|\/)/.test(t);if(r&&!a){const a=r.find((t=>t.clientPath===e));if(a){const e=n(o(a.origPath),t).replace(/\\/g,"/"),s=r.find((t=>t.origPath===e));s&&(i=s?.clientPath)}}return{href:i,external:a}};export{s as formatId,h as formatLinkHref,g as isNewCodeToken,p as parseCodeLang,a as parseMarkdown,i as parseTokenText,c as validateComponentName};
1
+ import t from"github-slugger";import e from"gray-matter";import{lexer as r}from"marked";import{join as n,dirname as o}from"path";import{parseTokenText as s}from"../../../core/utils/content-tools.js";const i=n=>{const{content:o}=e(n),i=r(o.trim()),a=new t,c=i.reduce(((t,e)=>{if("heading"===e.type&&(2===e.depth||3===e.depth)){const r=s(e);t.push({title:r,id:a.slug(r),token:e,nested:3===e.depth})}return t}),[]);return{tokens:i,headings:c}},a=t=>t.toLowerCase().replace(/\W/g,"_").replace(/_+/g,"_"),c=t=>/^[A-Z][a-zA-Z0-9]+$/.test(t),g=t=>{let e={},r=t;const n=t.match(/[a-z]+=("[^"]+"|'[^']+'|[^ ]+)|[a-z]+/g);if(Array.isArray(n)){const[t,...o]=n;r=t,e=o.reduce(((t,e)=>{const[r,...n]=e.split("=");return t[r]=!n||(0===n.length||n.join("=").replace(/(^["']|['"]$)/g,"")),t}),{})}return{lang:r,configuration:e}},l=(t,e)=>{if(Array.isArray(t)||!Object.keys(e).length)return!1;if("code"===t.type){const{lang:r,configuration:n}=g(t.lang);if(e["string"==typeof n.tab?a(n.tab):r]||!n.switcher)return!0}return"space"!==t.type&&"code"!==t.type},p=(t,e,r)=>{let s=t;const i=/^(https?:\/\/|\/)/.test(t);if(r&&!i){const i=r.find((t=>t.clientPath===e));if(i){const e=n(o(i.origPath),t).replace(/\\/g,"/"),a=r.find((t=>t.origPath===e));a&&(s=a?.clientPath)}}return{href:s,external:i}},u=t=>{const e=t.raw.match(/^> \[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\n/);if(e){const[r,n]=e,o={...t,raw:t.raw.substring(r.length)};if(o.tokens){const t={...o.tokens[0]};if(t.raw=t.raw.substring(n.length+4),t.text=t.text.substring(n.length+4),t.tokens[0]){const e={...t.tokens[0]};e.raw=e.raw.substring(n.length+4),e.text=e.text.substring(n.length+4),t.tokens[0]=e}o.tokens[0]=t}return{token:o,type:n.toLowerCase()}}return{token:t,type:null}};export{a as formatId,p as formatLinkHref,l as isNewCodeToken,u as parseBlockqoute,g as parseCodeLang,i as parseMarkdown,c as validateComponentName};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/elements/article/utils.ts"],"sourcesContent":["import GithubSlugger from \"github-slugger\";\nimport matter from \"gray-matter\";\nimport { lexer, type Token } from \"marked\";\nimport { dirname, join } from \"path\";\nimport { PagesType } from \"./types\";\n\nexport type AnchorData = {\n title: string;\n id: string;\n nested: boolean;\n token: Token;\n};\n\nexport const parseTokenText = (token: Token): string => {\n if (!token) return \"\";\n\n if (\"tokens\" in token) {\n return token.tokens?.map((el) => parseTokenText(el)).join(\"\") || \"\";\n }\n\n if (\"raw\" in token) {\n return token.raw;\n }\n\n return \"\";\n};\n\nexport const parseMarkdown = (content: string) => {\n const { content: matterContent } = matter(content);\n const tokens = lexer(matterContent.trim());\n\n const slugger = new GithubSlugger();\n const headings = tokens.reduce<AnchorData[]>((acc, token) => {\n if (token.type === \"heading\" && (token.depth === 2 || token.depth === 3)) {\n const title = parseTokenText(token);\n acc.push({\n title,\n id: slugger.slug(title),\n token,\n nested: token.depth === 3,\n });\n }\n return acc;\n }, []);\n\n return { tokens, headings };\n};\n\nexport const formatId = (raw: string) => {\n return raw.toLowerCase().replace(/\\W/g, \"_\").replace(/_+/g, \"_\");\n};\n\nexport const validateComponentName = (name: string) => {\n return /^[A-Z][a-zA-Z0-9]+$/.test(name);\n};\n\nexport const parseCodeLang = (raw: string) => {\n let configuration: { [key: string]: string | boolean } = {};\n let lang: string = raw;\n\n const match = raw.match(/[a-z]+=(\"[^\"]+\"|'[^']+'|[^ ]+)|[a-z]+/g);\n if (Array.isArray(match)) {\n const [language, ...modifiers] = match as string[];\n lang = language;\n configuration = modifiers.reduce<{ [key: string]: string | boolean }>((acc, cur) => {\n const [key, ...value] = cur.split(\"=\");\n if (value) {\n acc[key] = value.length === 0 ? true : value.join(\"=\").replace(/(^[\"']|['\"]$)/g, \"\");\n } else {\n acc[key] = true;\n }\n return acc;\n }, {});\n }\n return { lang, configuration };\n};\n\nexport const isNewCodeToken = (\n token: Token | Token[],\n codeQueue: { [lang: string]: { element: JSX.Element; tabName: string } },\n) => {\n if (Array.isArray(token) || !Object.keys(codeQueue).length) return false;\n\n if (token.type === \"code\") {\n const { lang, configuration } = parseCodeLang(token.lang);\n const tabKey = typeof configuration.tab === \"string\" ? formatId(configuration.tab) : lang;\n if (codeQueue[tabKey] || !configuration.switcher) return true;\n }\n\n if (token.type !== \"space\" && token.type !== \"code\") return true;\n\n return false;\n};\n\nexport const formatLinkHref = (href: string, pathname: string, pages?: PagesType) => {\n let finalHref: string = href;\n const external = /^(https?:\\/\\/|\\/)/.test(href);\n\n if (pages && !external) {\n const currentPageData = pages.find((item) => item.clientPath === pathname);\n\n if (currentPageData) {\n const linkOrigPath = join(dirname(currentPageData.origPath), href).replace(/\\\\/g, \"/\");\n const linkData = pages.find((item) => item.origPath === linkOrigPath);\n\n if (linkData) {\n finalHref = linkData?.clientPath;\n }\n }\n }\n return { href: finalHref, external };\n};\n"],"names":["parseTokenText","token","tokens","map","el","join","raw","parseMarkdown","content","matterContent","matter","lexer","trim","slugger","GithubSlugger","headings","reduce","acc","type","depth","title","push","id","slug","nested","formatId","toLowerCase","replace","validateComponentName","name","test","parseCodeLang","configuration","lang","match","Array","isArray","language","modifiers","cur","key","value","split","length","isNewCodeToken","codeQueue","Object","keys","tab","switcher","formatLinkHref","href","pathname","pages","finalHref","external","currentPageData","find","item","clientPath","linkOrigPath","dirname","origPath","linkData"],"mappings":"iIAaa,MAAAA,EAAkBC,GACtBA,EAED,WAAYA,EACLA,EAAMC,QAAQC,KAAKC,GAAOJ,EAAeI,KAAKC,KAAK,KAAO,GAGjE,QAASJ,EACFA,EAAMK,IAGV,GAVY,GAaVC,EAAiBC,IAC1B,MAAQA,QAASC,GAAkBC,EAAOF,GACpCN,EAASS,EAAMF,EAAcG,QAE7BC,EAAU,IAAIC,EACdC,EAAWb,EAAOc,QAAqB,CAACC,EAAKhB,KAC/C,GAAmB,YAAfA,EAAMiB,OAAuC,IAAhBjB,EAAMkB,OAA+B,IAAhBlB,EAAMkB,OAAc,CACtE,MAAMC,EAAQpB,EAAeC,GAC7BgB,EAAII,KAAK,CACLD,QACAE,GAAIT,EAAQU,KAAKH,GACjBnB,QACAuB,OAAwB,IAAhBvB,EAAMkB,OAErB,CACD,OAAOF,CAAG,GACX,IAEH,MAAO,CAAEf,SAAQa,WAAU,EAGlBU,EAAYnB,GACdA,EAAIoB,cAAcC,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAGnDC,EAAyBC,GAC3B,sBAAsBC,KAAKD,GAGzBE,EAAiBzB,IAC1B,IAAI0B,EAAqD,CAAA,EACrDC,EAAe3B,EAEnB,MAAM4B,EAAQ5B,EAAI4B,MAAM,0CACxB,GAAIC,MAAMC,QAAQF,GAAQ,CACtB,MAAOG,KAAaC,GAAaJ,EACjCD,EAAOI,EACPL,EAAgBM,EAAUtB,QAA4C,CAACC,EAAKsB,KACxE,MAAOC,KAAQC,GAASF,EAAIG,MAAM,KAMlC,OAJIzB,EAAIuB,IADJC,IAC4B,IAAjBA,EAAME,QAAsBF,EAAMpC,KAAK,KAAKsB,QAAQ,iBAAkB,KAI9EV,CAAG,GACX,CAAE,EACR,CACD,MAAO,CAAEgB,OAAMD,gBAAe,EAGrBY,EAAiB,CAC1B3C,EACA4C,KAEA,GAAIV,MAAMC,QAAQnC,KAAW6C,OAAOC,KAAKF,GAAWF,OAAQ,OAAO,EAEnE,GAAmB,SAAf1C,EAAMiB,KAAiB,CACvB,MAAMe,KAAEA,EAAID,cAAEA,GAAkBD,EAAc9B,EAAMgC,MAEpD,GAAIY,EADwC,iBAAtBb,EAAcgB,IAAmBvB,EAASO,EAAcgB,KAAOf,KAC3DD,EAAciB,SAAU,OAAO,CAC5D,CAED,MAAmB,UAAfhD,EAAMiB,MAAmC,SAAfjB,EAAMiB,IAExB,EAGHgC,EAAiB,CAACC,EAAcC,EAAkBC,KAC3D,IAAIC,EAAoBH,EACxB,MAAMI,EAAW,oBAAoBzB,KAAKqB,GAE1C,GAAIE,IAAUE,EAAU,CACpB,MAAMC,EAAkBH,EAAMI,MAAMC,GAASA,EAAKC,aAAeP,IAEjE,GAAII,EAAiB,CACjB,MAAMI,EAAevD,EAAKwD,EAAQL,EAAgBM,UAAWX,GAAMxB,QAAQ,MAAO,KAC5EoC,EAAWV,EAAMI,MAAMC,GAASA,EAAKI,WAAaF,IAEpDG,IACAT,EAAYS,GAAUJ,WAE7B,CACJ,CACD,MAAO,CAAER,KAAMG,EAAWC,WAAU"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/elements/article/utils.ts"],"sourcesContent":["import GithubSlugger from \"github-slugger\";\nimport matter from \"gray-matter\";\nimport { lexer, type Tokens, type Token } from \"marked\";\nimport { dirname, join } from \"path\";\n\nimport { type BlockquoteType } from \"@src/components/ui/blockquote\";\nimport { parseTokenText } from \"@src/core/utils/content-tools\";\n\nimport { type PagesType } from \"./types\";\n\nexport type AnchorData = {\n title: string;\n id: string;\n nested: boolean;\n token: Token;\n};\n\nexport const parseMarkdown = (content: string) => {\n const { content: matterContent } = matter(content);\n const tokens = lexer(matterContent.trim());\n\n const slugger = new GithubSlugger();\n const headings = tokens.reduce<AnchorData[]>((acc, token) => {\n if (token.type === \"heading\" && (token.depth === 2 || token.depth === 3)) {\n const title = parseTokenText(token);\n acc.push({\n title,\n id: slugger.slug(title),\n token,\n nested: token.depth === 3,\n });\n }\n return acc;\n }, []);\n\n return { tokens, headings };\n};\n\nexport const formatId = (raw: string) => {\n return raw.toLowerCase().replace(/\\W/g, \"_\").replace(/_+/g, \"_\");\n};\n\nexport const validateComponentName = (name: string) => {\n return /^[A-Z][a-zA-Z0-9]+$/.test(name);\n};\n\nexport const parseCodeLang = (raw: string) => {\n let configuration: { [key: string]: string | boolean } = {};\n let lang: string = raw;\n\n const match = raw.match(/[a-z]+=(\"[^\"]+\"|'[^']+'|[^ ]+)|[a-z]+/g);\n if (Array.isArray(match)) {\n const [language, ...modifiers] = match as string[];\n lang = language;\n configuration = modifiers.reduce<{ [key: string]: string | boolean }>((acc, cur) => {\n const [key, ...value] = cur.split(\"=\");\n if (value) {\n acc[key] = value.length === 0 ? true : value.join(\"=\").replace(/(^[\"']|['\"]$)/g, \"\");\n } else {\n acc[key] = true;\n }\n return acc;\n }, {});\n }\n return { lang, configuration };\n};\n\nexport const isNewCodeToken = (\n token: Token | Token[],\n codeQueue: { [lang: string]: { element: JSX.Element; tabName: string } },\n) => {\n if (Array.isArray(token) || !Object.keys(codeQueue).length) return false;\n\n if (token.type === \"code\") {\n const { lang, configuration } = parseCodeLang(token.lang);\n const tabKey = typeof configuration.tab === \"string\" ? formatId(configuration.tab) : lang;\n if (codeQueue[tabKey] || !configuration.switcher) return true;\n }\n\n if (token.type !== \"space\" && token.type !== \"code\") return true;\n\n return false;\n};\n\nexport const formatLinkHref = (href: string, pathname: string, pages?: PagesType) => {\n let finalHref: string = href;\n const external = /^(https?:\\/\\/|\\/)/.test(href);\n\n if (pages && !external) {\n const currentPageData = pages.find((item) => item.clientPath === pathname);\n\n if (currentPageData) {\n const linkOrigPath = join(dirname(currentPageData.origPath), href).replace(/\\\\/g, \"/\");\n const linkData = pages.find((item) => item.origPath === linkOrigPath);\n\n if (linkData) {\n finalHref = linkData?.clientPath;\n }\n }\n }\n return { href: finalHref, external };\n};\n\nexport const parseBlockqoute = (token: Tokens.Blockquote | Tokens.Generic) => {\n const typeMatch = token.raw.match(/^> \\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\]\\n/);\n if (typeMatch) {\n const [raw, type] = typeMatch;\n const newToken = { ...token, raw: token.raw.substring(raw.length) };\n if (newToken.tokens) {\n const firstToken = { ...newToken.tokens[0] } as Tokens.Paragraph;\n firstToken.raw = firstToken.raw.substring(type.length + 4);\n firstToken.text = firstToken.text.substring(type.length + 4);\n if (firstToken.tokens[0]) {\n const firstSubtoken = { ...firstToken.tokens[0] } as Tokens.Paragraph;\n firstSubtoken.raw = firstSubtoken.raw.substring(type.length + 4);\n firstSubtoken.text = firstSubtoken.text.substring(type.length + 4);\n firstToken.tokens[0] = firstSubtoken;\n }\n newToken.tokens[0] = firstToken;\n }\n\n return {\n token: newToken,\n type: type.toLowerCase() as BlockquoteType,\n };\n }\n\n return { token, type: null };\n};\n"],"names":["parseMarkdown","content","matterContent","matter","tokens","lexer","trim","slugger","GithubSlugger","headings","reduce","acc","token","type","depth","title","parseTokenText","push","id","slug","nested","formatId","raw","toLowerCase","replace","validateComponentName","name","test","parseCodeLang","configuration","lang","match","Array","isArray","language","modifiers","cur","key","value","split","length","join","isNewCodeToken","codeQueue","Object","keys","tab","switcher","formatLinkHref","href","pathname","pages","finalHref","external","currentPageData","find","item","clientPath","linkOrigPath","dirname","origPath","linkData","parseBlockqoute","typeMatch","newToken","substring","firstToken","text","firstSubtoken"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /// <reference types="react" />
2
+ export declare const TYPES_DATA: {
3
+ note: {
4
+ title: string;
5
+ icon: () => import("react").JSX.Element;
6
+ };
7
+ tip: {
8
+ title: string;
9
+ icon: () => import("react").JSX.Element;
10
+ };
11
+ important: {
12
+ title: string;
13
+ icon: () => import("react").JSX.Element;
14
+ };
15
+ warning: {
16
+ title: string;
17
+ icon: () => import("react").JSX.Element;
18
+ };
19
+ caution: {
20
+ title: string;
21
+ icon: () => import("react").JSX.Element;
22
+ };
23
+ };
24
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/blockquote/data.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;CAMtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{NoteIcon as t,TipIcon as i,ImportantIcon as n,WarningIcon as o,CautionIcon as c}from"./icons.js";const e={note:{title:"Note",icon:t},tip:{title:"Tip",icon:i},important:{title:"Important",icon:n},warning:{title:"Warning",icon:o},caution:{title:"Caution",icon:c}};export{e as TYPES_DATA};
2
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sources":["../../../../src/components/ui/blockquote/data.ts"],"sourcesContent":["import { CautionIcon, ImportantIcon, NoteIcon, TipIcon, WarningIcon } from \"./icons\";\n\nexport const TYPES_DATA = {\n note: { title: \"Note\", icon: NoteIcon },\n tip: { title: \"Tip\", icon: TipIcon },\n important: { title: \"Important\", icon: ImportantIcon },\n warning: { title: \"Warning\", icon: WarningIcon },\n caution: { title: \"Caution\", icon: CautionIcon },\n};\n"],"names":["TYPES_DATA","note","title","icon","NoteIcon","tip","TipIcon","important","ImportantIcon","warning","WarningIcon","caution","CautionIcon"],"mappings":"wGAEa,MAAAA,EAAa,CACtBC,KAAM,CAAEC,MAAO,OAAQC,KAAMC,GAC7BC,IAAK,CAAEH,MAAO,MAAOC,KAAMG,GAC3BC,UAAW,CAAEL,MAAO,YAAaC,KAAMK,GACvCC,QAAS,CAAEP,MAAO,UAAWC,KAAMO,GACnCC,QAAS,CAAET,MAAO,UAAWC,KAAMS"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ export declare const NoteIcon: () => React.JSX.Element;
3
+ export declare const TipIcon: () => React.JSX.Element;
4
+ export declare const ImportantIcon: () => React.JSX.Element;
5
+ export declare const WarningIcon: () => React.JSX.Element;
6
+ export declare const CautionIcon: () => React.JSX.Element;
7
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/blockquote/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,QAAQ,yBAMpB,CAAC;AAEF,eAAO,MAAM,OAAO,yBAMnB,CAAC;AAEF,eAAO,MAAM,aAAa,yBAMzB,CAAC;AAEF,eAAO,MAAM,WAAW,yBAMvB,CAAC;AAEF,eAAO,MAAM,WAAW,yBAMvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import e from"react";const t=()=>e.createElement(e.Fragment,null,e.createElement("path",{d:"m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2"}),e.createElement("path",{d:"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"}),e.createElement("path",{d:"M8 18h1"})),a=()=>e.createElement(e.Fragment,null,e.createElement("path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"}),e.createElement("path",{d:"M9 18h6"}),e.createElement("path",{d:"M10 22h4"})),l=()=>e.createElement(e.Fragment,null,e.createElement("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"}),e.createElement("path",{d:"M12 7v2"}),e.createElement("path",{d:"M12 13h.01"})),n=()=>e.createElement(e.Fragment,null,e.createElement("circle",{cx:"12",cy:"12",r:"10"}),e.createElement("line",{x1:"12",x2:"12",y1:"8",y2:"12"}),e.createElement("line",{x1:"12",x2:"12.01",y1:"16",y2:"16"})),r=()=>e.createElement(e.Fragment,null,e.createElement("path",{d:"m15 9-6 6"}),e.createElement("path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z"}),e.createElement("path",{d:"m9 9 6 6"}));export{r as CautionIcon,l as ImportantIcon,t as NoteIcon,a as TipIcon,n as WarningIcon};
2
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sources":["../../../../src/components/ui/blockquote/icons.tsx"],"sourcesContent":["import React from \"react\";\n\nexport const NoteIcon = () => (\n <>\n <path d=\"m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2\" />\n <path d=\"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\" />\n <path d=\"M8 18h1\" />\n </>\n);\n\nexport const TipIcon = () => (\n <>\n <path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\" />\n <path d=\"M9 18h6\" />\n <path d=\"M10 22h4\" />\n </>\n);\n\nexport const ImportantIcon = () => (\n <>\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n <path d=\"M12 7v2\" />\n <path d=\"M12 13h.01\" />\n </>\n);\n\nexport const WarningIcon = () => (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" />\n <line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n </>\n);\n\nexport const CautionIcon = () => (\n <>\n <path d=\"m15 9-6 6\" />\n <path d=\"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z\" />\n <path d=\"m9 9 6 6\" />\n </>\n);\n"],"names":["NoteIcon","React","createElement","Fragment","d","TipIcon","ImportantIcon","WarningIcon","cx","cy","r","x1","x2","y1","y2","CautionIcon"],"mappings":"qBAEa,MAAAA,EAAW,IACpBC,EAAAC,cAAAD,EAAAE,SAAA,KACIF,EAAMC,cAAA,OAAA,CAAAE,EAAE,2FACRH,EAAMC,cAAA,OAAA,CAAAE,EAAE,oIACRH,EAAAC,cAAA,OAAA,CAAME,EAAE,aAIHC,EAAU,IACnBJ,EAAAC,cAAAD,EAAAE,SAAA,KACIF,EAAMC,cAAA,OAAA,CAAAE,EAAE,yGACRH,EAAMC,cAAA,OAAA,CAAAE,EAAE,YACRH,EAAAC,cAAA,OAAA,CAAME,EAAE,cAIHE,EAAgB,IACzBL,EAAAC,cAAAD,EAAAE,SAAA,KACIF,EAAMC,cAAA,OAAA,CAAAE,EAAE,kEACRH,EAAMC,cAAA,OAAA,CAAAE,EAAE,YACRH,EAAAC,cAAA,OAAA,CAAME,EAAE,gBAIHG,EAAc,IACvBN,EAAAC,cAAAD,EAAAE,SAAA,KACIF,EAAQC,cAAA,SAAA,CAAAM,GAAG,KAAKC,GAAG,KAAKC,EAAE,OAC1BT,EAAAC,cAAA,OAAA,CAAMS,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIC,GAAG,OAChCb,EAAAC,cAAA,OAAA,CAAMS,GAAG,KAAKC,GAAG,QAAQC,GAAG,KAAKC,GAAG,QAI/BC,EAAc,IACvBd,EAAAC,cAAAD,EAAAE,SAAA,KACIF,EAAMC,cAAA,OAAA,CAAAE,EAAE,cACRH,EAAMC,cAAA,OAAA,CAAAE,EAAE,+OACRH,EAAAC,cAAA,OAAA,CAAME,EAAE"}
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
2
  import "./blockquote.scss";
3
+ export type BlockquoteType = "note" | "tip" | "important" | "warning" | "caution";
3
4
  interface BlockquoteProps {
4
5
  className?: string;
6
+ type?: BlockquoteType | null;
5
7
  }
6
8
  export declare const Blockquote: React.FC<React.PropsWithChildren<BlockquoteProps>>;
7
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/blockquote/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,mBAAmB,CAAC;AAE3B,UAAU,eAAe;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAEzE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/blockquote/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,mBAAmB,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAElF,UAAU,eAAe;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,CA2BzE,CAAC"}
@@ -1,2 +1,2 @@
1
- import e from"react";import o from"clsx";const c=({className:c,children:r})=>e.createElement("blockquote",{className:o("r-blockquote",c)},r);export{c as Blockquote};
1
+ import e from"react";import t from"clsx";import{TYPES_DATA as o}from"./data.js";const r=({className:r,type:c,children:l})=>{const{icon:n,title:i}=c&&c in o?o[c]:{};return e.createElement("blockquote",{className:t("r-blockquote",c&&`r-blockquote-${c}`,r)},i&&n&&e.createElement("p",{className:"r-blockquote-title"},e.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"r-blockquote-icon"},e.createElement(n,null)),i),l)};export{r as Blockquote};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/ui/blockquote/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./blockquote.scss\";\n\ninterface BlockquoteProps {\n className?: string;\n}\n\nexport const Blockquote: React.FC<React.PropsWithChildren<BlockquoteProps>> = ({ className, children }) => {\n return <blockquote className={clsx(\"r-blockquote\", className)}>{children}</blockquote>;\n};\n"],"names":["Blockquote","className","children","React","createElement","clsx"],"mappings":"yCASa,MAAAA,EAAiE,EAAGC,YAAWC,cACjFC,EAAYC,cAAA,aAAA,CAAAH,UAAWI,EAAK,eAAgBJ,IAAaC"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/ui/blockquote/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport { TYPES_DATA } from \"./data\";\n\nimport \"./blockquote.scss\";\n\nexport type BlockquoteType = \"note\" | \"tip\" | \"important\" | \"warning\" | \"caution\";\n\ninterface BlockquoteProps {\n className?: string;\n type?: BlockquoteType | null;\n}\n\nexport const Blockquote: React.FC<React.PropsWithChildren<BlockquoteProps>> = ({ className, type, children }) => {\n const { icon: Icon, title } =\n type && type in TYPES_DATA ? TYPES_DATA[type] : ({} as { icon: undefined; title: undefined });\n\n return (\n <blockquote className={clsx(\"r-blockquote\", type && `r-blockquote-${type}`, className)}>\n {title && Icon && (\n <p className=\"r-blockquote-title\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"r-blockquote-icon\"\n >\n <Icon />\n </svg>\n {title}\n </p>\n )}\n {children}\n </blockquote>\n );\n};\n"],"names":["Blockquote","className","type","children","icon","Icon","title","TYPES_DATA","React","createElement","clsx","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin"],"mappings":"gFAcO,MAAMA,EAAiE,EAAGC,YAAWC,OAAMC,eAC9F,MAAQC,KAAMC,EAAIC,MAAEA,GAChBJ,GAAQA,KAAQK,EAAaA,EAAWL,GAAS,CAAA,EAErD,OACIM,EAAAC,cAAA,aAAA,CAAYR,UAAWS,EAAK,eAAgBR,GAAQ,gBAAgBA,IAAQD,IACvEK,GAASD,GACNG,EAAGC,cAAA,IAAA,CAAAR,UAAU,sBACTO,EAAAC,cAAA,MAAA,CACIE,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,QACfjB,UAAU,qBAEVO,EAACC,cAAAJ,SAEJC,GAGRH,EAEP"}
@@ -1,3 +1,3 @@
1
1
  'use client';
2
- import e from"react";import t from"clsx";import{saveTab as a}from"../../../../core/utils/tabs-store.js";const r={code:"r-tab-header-code"},s=({tabs:s,tabsTypeId:o,type:m})=>e.createElement("div",{className:"r-tabs-header"},s.map((s=>e.createElement("div",{key:s.id,className:t(`r-tab-header r-tab-header_${s.id}`,m&&r[m]),onClick:()=>(e=>{Array.from(document.documentElement.classList).forEach((e=>{e.startsWith(`r-tabs-global__${o}`)&&document.documentElement.classList.remove(e)})),document.documentElement.classList.add(`r-tabs-global__${o}`,`r-tabs-global__${o}_${e}`),a(o,e)})(s.id)},s.name))));export{s as TabsHeader};
2
+ import e from"react";import t from"clsx";import{saveTab as a}from"../../../../core/utils/tabs-tools.js";const r={code:"r-tab-header-code"},s=({tabs:s,tabsTypeId:o,type:m})=>e.createElement("div",{className:"r-tabs-header"},s.map((s=>e.createElement("div",{key:s.id,className:t(`r-tab-header r-tab-header_${s.id}`,m&&r[m]),onClick:()=>(e=>{Array.from(document.documentElement.classList).forEach((e=>{e.startsWith(`r-tabs-global__${o}`)&&document.documentElement.classList.remove(e)})),document.documentElement.classList.add(`r-tabs-global__${o}`,`r-tabs-global__${o}_${e}`),a(o,e)})(s.id)},s.name))));export{s as TabsHeader};
3
3
  //# sourceMappingURL=index.js.map