robindoc 0.0.0-experimental-2c17c72 → 0.0.0-experimental-fa80e8a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/elements/article/document.d.ts.map +1 -1
- package/lib/components/elements/article/document.js +1 -1
- package/lib/components/elements/article/document.js.map +1 -1
- package/lib/components/ui/code-span/index.js +1 -1
- package/lib/components/ui/code-span/index.js.map +1 -1
- package/lib/components/ui/table/td/index.d.ts +1 -0
- package/lib/components/ui/table/td/index.d.ts.map +1 -1
- package/lib/components/ui/table/td/index.js +1 -1
- package/lib/components/ui/table/td/index.js.map +1 -1
- package/lib/components/ui/table/th/index.d.ts +1 -0
- package/lib/components/ui/table/th/index.d.ts.map +1 -1
- package/lib/components/ui/table/th/index.js +1 -1
- package/lib/components/ui/table/th/index.js.map +1 -1
- package/lib/styles.css +208 -184
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
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,CA4ClD,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,
|
|
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,CA4ClD,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,CA8T3C,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
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
|
|
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 h}from"../../ui/strong/index.js";import{Table as E}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 g}from"../../ui/table/thead/index.js";import{Tr as w}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,domToReact as C,attributesToProps 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""===t?C(e.children,o):D.createElement(n,{...U(e.attribs),href:t,external:a},C(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?U(e.attribs):{},s=t[e.name],i="children"in e?e.children:null;return D.createElement(s,{...a},i?C(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(E,null,D.createElement(g,null,D.createElement(w,null,I.header.map((e,t)=>D.createElement(b,{key:e.text+t,align:e.align},e.tokens?D.createElement(M,{token:e.tokens}):e.text)))),D.createElement(x,null,I.rows.map((e,t)=>D.createElement(w,{key:t},e.map((e,t)=>D.createElement(y,{key:e.text+t,align:e.align},e.tokens?D.createElement(M,{token:e.tokens}):e.text)))))));case"link":const{href:L,external:Q}=z(I.href,N,B);return""===L?I.tokens?D.createElement(M,{token:I.tokens}):I.raw:D.createElement(n,{href:L,external:Q},I.tokens?D.createElement(M,{token:I.tokens}):I.raw);case"space":case"def":case"br":case"checkbox":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(h,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 { 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\";\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\n if (href === \"\") return domToReact(domNode.children as DOMNode[], parseOptions);\n\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: React.ReactNode; 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 if (href === \"\") return token.tokens ? <DocumentToken token={token.tokens} /> : token.raw;\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 // Definitions should not be rendered, they are used only as comments or meta data\n case \"def\":\n return null;\n // br are inserted between elements. In our case, sufficient indentation is set everywhere, so we ignore them\n case \"br\":\n return null;\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","domToReact","children","createElement","NavContentLink","attributesToProps","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
|
+
{"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\";\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\n if (href === \"\") return domToReact(domNode.children as DOMNode[], parseOptions);\n\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: React.ReactNode; 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.TableCell, index: number) => (\n <Th key={t.text + index} align={t.align}>\n {t.tokens ? <DocumentToken token={t.tokens} /> : t.text}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {token.rows.map((row: Tokens.TableCell[], rowIndex: number) => (\n <Tr key={rowIndex}>\n {row.map((elem, elemIndex) => (\n <Td key={elem.text + elemIndex} align={elem.align}>\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 if (href === \"\") return token.tokens ? <DocumentToken token={token.tokens} /> : token.raw;\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 // Definitions should not be rendered, they are used only as comments or meta data\n case \"def\":\n return null;\n // br are inserted between elements. In our case, sufficient indentation is set everywhere, so we ignore them\n case \"br\":\n return null;\n // checkbox are rendered as part of the task list item, so we ignore them\n case \"checkbox\":\n return null;\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","domToReact","children","createElement","NavContentLink","attributesToProps","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","align","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,2 +1,2 @@
|
|
|
1
|
-
import e from"react";import
|
|
1
|
+
import e from"react";import c from"clsx";const o=({className:o,code:r})=>e.createElement("code",{className:c("r-code-span",o)},r);export{o as CodeSpan};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/ui/code-span/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./code-span.scss\";\n\ninterface CodeSpanProps {\n code: string;\n className?: string;\n}\n\nexport const CodeSpan: React.FC<CodeSpanProps> = ({ className, code }) => {\n return <code className={clsx(\"r-code-span\", className)}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/ui/code-span/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./code-span.scss\";\n\ninterface CodeSpanProps {\n code: string;\n className?: string;\n}\n\nexport const CodeSpan: React.FC<CodeSpanProps> = ({ className, code }) => {\n return <code className={clsx(\"r-code-span\", className)}>{code}</code>;\n};\n"],"names":["CodeSpan","className","code","React","createElement","clsx"],"mappings":"yCAUO,MAAMA,EAAoC,EAAGC,YAAWC,UACpDC,EAAAC,cAAA,OAAA,CAAMH,UAAWI,EAAK,cAAeJ,IAAaC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/table/td/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,WAAW,CAAC;AAEnB,UAAU,OAAO;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/table/td/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,WAAW,CAAC;AAEnB,UAAU,OAAO;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CAC9C;AAQD,eAAO,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAEzD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"react";import r from"clsx";const e={left:"r-td_left",center:"r-td_center",right:"r-td_right"},c=({className:c,children:l,align:a})=>t.createElement("td",{className:r("r-td",c,a&&e[a])},l);export{c as Td};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/ui/table/td/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./td.scss\";\n\ninterface TdProps {\n className?: string;\n}\n\nexport const Td: React.FC<React.PropsWithChildren<TdProps>> = ({ className, children }) => {\n return <td className={clsx(\"r-td\", className)}>{children}</td>;\n};\n"],"names":["Td","className","children","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/ui/table/td/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./td.scss\";\n\ninterface TdProps {\n className?: string;\n align?: \"left\" | \"center\" | \"right\" | null;\n}\n\nconst ALIGN_CLASSES = {\n left: \"r-td_left\",\n center: \"r-td_center\",\n right: \"r-td_right\",\n};\n\nexport const Td: React.FC<React.PropsWithChildren<TdProps>> = ({ className, children, align }) => {\n return <td className={clsx(\"r-td\", className, align && ALIGN_CLASSES[align])}>{children}</td>;\n};\n"],"names":["ALIGN_CLASSES","left","center","right","Td","className","children","align","React","clsx"],"mappings":"yCAUA,MAAMA,EAAgB,CAClBC,KAAM,YACNC,OAAQ,cACRC,MAAO,cAGEC,EAAiD,EAAGC,YAAWC,WAAUC,WAC3EC,sBAAIH,UAAWI,EAAK,OAAQJ,EAAWE,GAASP,EAAcO,KAAUD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/table/th/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,WAAW,CAAC;AAEnB,UAAU,OAAO;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/table/th/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,WAAW,CAAC;AAEnB,UAAU,OAAO;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CAC9C;AAQD,eAAO,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAEzD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"react";import r from"clsx";const e={left:"r-th_left",center:"r-th_center",right:"r-th_right"},c=({className:c,children:h,align:l})=>t.createElement("th",{className:r("r-th",c,l&&e[l])},h);export{c as Th};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/ui/table/th/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./th.scss\";\n\ninterface ThProps {\n className?: string;\n}\n\nexport const Th: React.FC<React.PropsWithChildren<ThProps>> = ({ className, children }) => {\n return <th className={clsx(\"r-th\", className)}>{children}</th>;\n};\n"],"names":["Th","className","children","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/ui/table/th/index.tsx"],"sourcesContent":["import React from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./th.scss\";\n\ninterface ThProps {\n className?: string;\n align?: \"left\" | \"center\" | \"right\" | null;\n}\n\nconst ALIGN_CLASSES = {\n left: \"r-th_left\",\n center: \"r-th_center\",\n right: \"r-th_right\",\n};\n\nexport const Th: React.FC<React.PropsWithChildren<ThProps>> = ({ className, children, align }) => {\n return <th className={clsx(\"r-th\", className, align && ALIGN_CLASSES[align])}>{children}</th>;\n};\n"],"names":["ALIGN_CLASSES","left","center","right","Th","className","children","align","React","clsx"],"mappings":"yCAUA,MAAMA,EAAgB,CAClBC,KAAM,YACNC,OAAQ,cACRC,MAAO,cAGEC,EAAiD,EAAGC,YAAWC,WAAUC,WAC3EC,sBAAIH,UAAWI,EAAK,OAAQJ,EAAWE,GAASP,EAAcO,KAAUD"}
|
package/lib/styles.css
CHANGED
|
@@ -384,10 +384,6 @@
|
|
|
384
384
|
grid-template-columns: 200px 640px 238px;
|
|
385
385
|
grid-template-rows: auto 1fr auto;
|
|
386
386
|
}
|
|
387
|
-
}.r-page-container {
|
|
388
|
-
min-height: calc(100dvh - var(--r-header-height));
|
|
389
|
-
overflow-wrap: break-word;
|
|
390
|
-
box-sizing: border-box;
|
|
391
387
|
}.r-blog-container {
|
|
392
388
|
min-height: calc(100dvh - var(--r-header-height));
|
|
393
389
|
overflow-wrap: break-word;
|
|
@@ -402,6 +398,10 @@
|
|
|
402
398
|
grid-template-columns: 760px 220px;
|
|
403
399
|
grid-template-rows: auto 1fr auto;
|
|
404
400
|
}
|
|
401
|
+
}.r-page-container {
|
|
402
|
+
min-height: calc(100dvh - var(--r-header-height));
|
|
403
|
+
overflow-wrap: break-word;
|
|
404
|
+
box-sizing: border-box;
|
|
405
405
|
}.keylink-to-content {
|
|
406
406
|
position: absolute !important;
|
|
407
407
|
top: 8px;
|
|
@@ -840,6 +840,85 @@
|
|
|
840
840
|
.r-header-input:checked ~ .r-header-burger .r-burger-line._bottom {
|
|
841
841
|
transform: translateY(0) rotate(-45deg);
|
|
842
842
|
margin-top: 0;
|
|
843
|
+
}.r-dropdown {
|
|
844
|
+
position: relative;
|
|
845
|
+
color: var(--r-main-600);
|
|
846
|
+
transition: color 0.2s 0.1s;
|
|
847
|
+
}
|
|
848
|
+
.r-dropdown:hover, .r-dropdown:focus-within {
|
|
849
|
+
color: var(--r-main-950);
|
|
850
|
+
}
|
|
851
|
+
.r-dropdown:hover .r-dropdown-drop, .r-dropdown:focus-within .r-dropdown-drop {
|
|
852
|
+
visibility: visible;
|
|
853
|
+
pointer-events: all;
|
|
854
|
+
transform: translateY(20px);
|
|
855
|
+
opacity: 1;
|
|
856
|
+
}
|
|
857
|
+
.r-dropdown:hover .r-dropdown-chevron, .r-dropdown:focus-within .r-dropdown-chevron {
|
|
858
|
+
transform: rotate(180deg);
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
.r-dropdown-summary {
|
|
862
|
+
display: flex;
|
|
863
|
+
justify-content: space-between;
|
|
864
|
+
align-items: center;
|
|
865
|
+
width: 100%;
|
|
866
|
+
position: relative;
|
|
867
|
+
color: inherit;
|
|
868
|
+
cursor: pointer;
|
|
869
|
+
padding: 10px 4px;
|
|
870
|
+
font-size: 16px;
|
|
871
|
+
border: 0;
|
|
872
|
+
background: none;
|
|
873
|
+
z-index: 1;
|
|
874
|
+
box-sizing: border-box;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
.r-dropdown-chevron {
|
|
878
|
+
display: block;
|
|
879
|
+
margin-left: 6px;
|
|
880
|
+
transition: transform 0.3s 0.1s;
|
|
881
|
+
box-sizing: border-box;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
.r-dropdown-drop {
|
|
885
|
+
list-style: none;
|
|
886
|
+
position: absolute;
|
|
887
|
+
top: 16px;
|
|
888
|
+
left: -12px;
|
|
889
|
+
visibility: hidden;
|
|
890
|
+
pointer-events: none;
|
|
891
|
+
opacity: 0;
|
|
892
|
+
transition: transform 0.3s 0.1s, opacity 0.3s 0.1s, visibility 0.3s 0.1s;
|
|
893
|
+
background-color: var(--r-main-50);
|
|
894
|
+
border: 1px solid var(--r-main-100);
|
|
895
|
+
border-radius: 8px;
|
|
896
|
+
margin: 0;
|
|
897
|
+
padding: 2px 6px;
|
|
898
|
+
min-width: 120px;
|
|
899
|
+
max-width: 180px;
|
|
900
|
+
box-sizing: border-box;
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
.r-dropdown-link {
|
|
904
|
+
display: block;
|
|
905
|
+
width: 100%;
|
|
906
|
+
text-decoration: none;
|
|
907
|
+
color: var(--r-main-700);
|
|
908
|
+
padding: 4px 8px;
|
|
909
|
+
margin-top: 4px;
|
|
910
|
+
margin-bottom: 4px;
|
|
911
|
+
border-radius: 4px;
|
|
912
|
+
transition: background-color 0.2s;
|
|
913
|
+
box-sizing: border-box;
|
|
914
|
+
}
|
|
915
|
+
.r-dropdown-link:hover {
|
|
916
|
+
color: var(--r-main-900);
|
|
917
|
+
background-color: var(--r-main-100);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
.r-dropdown-link._active {
|
|
921
|
+
color: var(--r-primary-700);
|
|
843
922
|
}.r-search-btn {
|
|
844
923
|
position: relative;
|
|
845
924
|
border-radius: 6px;
|
|
@@ -1023,92 +1102,6 @@
|
|
|
1023
1102
|
font-size: 14px;
|
|
1024
1103
|
color: var(--r-main-600);
|
|
1025
1104
|
margin: 12px 0 0;
|
|
1026
|
-
}.r-dropdown {
|
|
1027
|
-
position: relative;
|
|
1028
|
-
color: var(--r-main-600);
|
|
1029
|
-
transition: color 0.2s 0.1s;
|
|
1030
|
-
}
|
|
1031
|
-
.r-dropdown:hover, .r-dropdown:focus-within {
|
|
1032
|
-
color: var(--r-main-950);
|
|
1033
|
-
}
|
|
1034
|
-
.r-dropdown:hover .r-dropdown-drop, .r-dropdown:focus-within .r-dropdown-drop {
|
|
1035
|
-
visibility: visible;
|
|
1036
|
-
pointer-events: all;
|
|
1037
|
-
transform: translateY(20px);
|
|
1038
|
-
opacity: 1;
|
|
1039
|
-
}
|
|
1040
|
-
.r-dropdown:hover .r-dropdown-chevron, .r-dropdown:focus-within .r-dropdown-chevron {
|
|
1041
|
-
transform: rotate(180deg);
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
|
-
.r-dropdown-summary {
|
|
1045
|
-
display: flex;
|
|
1046
|
-
justify-content: space-between;
|
|
1047
|
-
align-items: center;
|
|
1048
|
-
width: 100%;
|
|
1049
|
-
position: relative;
|
|
1050
|
-
color: inherit;
|
|
1051
|
-
cursor: pointer;
|
|
1052
|
-
padding: 10px 4px;
|
|
1053
|
-
font-size: 16px;
|
|
1054
|
-
border: 0;
|
|
1055
|
-
background: none;
|
|
1056
|
-
z-index: 1;
|
|
1057
|
-
box-sizing: border-box;
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
.r-dropdown-chevron {
|
|
1061
|
-
display: block;
|
|
1062
|
-
margin-left: 6px;
|
|
1063
|
-
transition: transform 0.3s 0.1s;
|
|
1064
|
-
box-sizing: border-box;
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
.r-dropdown-drop {
|
|
1068
|
-
list-style: none;
|
|
1069
|
-
position: absolute;
|
|
1070
|
-
top: 16px;
|
|
1071
|
-
left: -12px;
|
|
1072
|
-
visibility: hidden;
|
|
1073
|
-
pointer-events: none;
|
|
1074
|
-
opacity: 0;
|
|
1075
|
-
transition: transform 0.3s 0.1s, opacity 0.3s 0.1s, visibility 0.3s 0.1s;
|
|
1076
|
-
background-color: var(--r-main-50);
|
|
1077
|
-
border: 1px solid var(--r-main-100);
|
|
1078
|
-
border-radius: 8px;
|
|
1079
|
-
margin: 0;
|
|
1080
|
-
padding: 2px 6px;
|
|
1081
|
-
min-width: 120px;
|
|
1082
|
-
max-width: 180px;
|
|
1083
|
-
box-sizing: border-box;
|
|
1084
|
-
}
|
|
1085
|
-
|
|
1086
|
-
.r-dropdown-link {
|
|
1087
|
-
display: block;
|
|
1088
|
-
width: 100%;
|
|
1089
|
-
text-decoration: none;
|
|
1090
|
-
color: var(--r-main-700);
|
|
1091
|
-
padding: 4px 8px;
|
|
1092
|
-
margin-top: 4px;
|
|
1093
|
-
margin-bottom: 4px;
|
|
1094
|
-
border-radius: 4px;
|
|
1095
|
-
transition: background-color 0.2s;
|
|
1096
|
-
box-sizing: border-box;
|
|
1097
|
-
}
|
|
1098
|
-
.r-dropdown-link:hover {
|
|
1099
|
-
color: var(--r-main-900);
|
|
1100
|
-
background-color: var(--r-main-100);
|
|
1101
|
-
}
|
|
1102
|
-
|
|
1103
|
-
.r-dropdown-link._active {
|
|
1104
|
-
color: var(--r-primary-700);
|
|
1105
|
-
}.r-container {
|
|
1106
|
-
max-width: 1180px;
|
|
1107
|
-
padding-right: 12px;
|
|
1108
|
-
padding-left: 12px;
|
|
1109
|
-
margin-right: auto;
|
|
1110
|
-
margin-left: auto;
|
|
1111
|
-
box-sizing: border-box;
|
|
1112
1105
|
}.r-header-social {
|
|
1113
1106
|
display: flex;
|
|
1114
1107
|
flex: 1;
|
|
@@ -1127,6 +1120,13 @@
|
|
|
1127
1120
|
}
|
|
1128
1121
|
.r-header-social-git:hover, .r-header-social-git:focus {
|
|
1129
1122
|
color: var(--r-main-950);
|
|
1123
|
+
}.r-container {
|
|
1124
|
+
max-width: 1180px;
|
|
1125
|
+
padding-right: 12px;
|
|
1126
|
+
padding-left: 12px;
|
|
1127
|
+
margin-right: auto;
|
|
1128
|
+
margin-left: auto;
|
|
1129
|
+
box-sizing: border-box;
|
|
1130
1130
|
}.r-theme-switcher {
|
|
1131
1131
|
position: relative;
|
|
1132
1132
|
display: flex;
|
|
@@ -1213,47 +1213,6 @@
|
|
|
1213
1213
|
user-select: none;
|
|
1214
1214
|
pointer-events: none;
|
|
1215
1215
|
box-sizing: border-box;
|
|
1216
|
-
}.r-breadcrumbs {
|
|
1217
|
-
grid-area: breadcrumbs;
|
|
1218
|
-
list-style: none;
|
|
1219
|
-
margin: 0;
|
|
1220
|
-
padding: 20px 0 0;
|
|
1221
|
-
line-height: 2;
|
|
1222
|
-
}
|
|
1223
|
-
@media screen and (width >= 768px) {
|
|
1224
|
-
.r-breadcrumbs {
|
|
1225
|
-
padding: 32px 0 0;
|
|
1226
|
-
}
|
|
1227
|
-
}
|
|
1228
|
-
|
|
1229
|
-
.r-breadcrumb {
|
|
1230
|
-
display: inline;
|
|
1231
|
-
}
|
|
1232
|
-
|
|
1233
|
-
.r-breadcrumb._previous::after {
|
|
1234
|
-
content: "/";
|
|
1235
|
-
font-weight: 600;
|
|
1236
|
-
margin-inline: 8px;
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
.r-breadcrumb-link {
|
|
1240
|
-
color: var(--r-main-700);
|
|
1241
|
-
text-decoration: none;
|
|
1242
|
-
}
|
|
1243
|
-
.r-breadcrumb-link:hover {
|
|
1244
|
-
color: var(--r-primary-800);
|
|
1245
|
-
}
|
|
1246
|
-
|
|
1247
|
-
.r-breadcrumb-link,
|
|
1248
|
-
.r-breadcrumb-title {
|
|
1249
|
-
display: inline;
|
|
1250
|
-
padding: 6px 0;
|
|
1251
|
-
margin: 0;
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
.r-breadcrumb-title {
|
|
1255
|
-
color: var(--r-main-950);
|
|
1256
|
-
font-weight: 600;
|
|
1257
1216
|
}.r-contents {
|
|
1258
1217
|
grid-area: contents;
|
|
1259
1218
|
}
|
|
@@ -1493,6 +1452,47 @@
|
|
|
1493
1452
|
}
|
|
1494
1453
|
.r-contents-git:hover {
|
|
1495
1454
|
color: var(--r-main-900);
|
|
1455
|
+
}.r-breadcrumbs {
|
|
1456
|
+
grid-area: breadcrumbs;
|
|
1457
|
+
list-style: none;
|
|
1458
|
+
margin: 0;
|
|
1459
|
+
padding: 20px 0 0;
|
|
1460
|
+
line-height: 2;
|
|
1461
|
+
}
|
|
1462
|
+
@media screen and (width >= 768px) {
|
|
1463
|
+
.r-breadcrumbs {
|
|
1464
|
+
padding: 32px 0 0;
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
|
|
1468
|
+
.r-breadcrumb {
|
|
1469
|
+
display: inline;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
.r-breadcrumb._previous::after {
|
|
1473
|
+
content: "/";
|
|
1474
|
+
font-weight: 600;
|
|
1475
|
+
margin-inline: 8px;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
.r-breadcrumb-link {
|
|
1479
|
+
color: var(--r-main-700);
|
|
1480
|
+
text-decoration: none;
|
|
1481
|
+
}
|
|
1482
|
+
.r-breadcrumb-link:hover {
|
|
1483
|
+
color: var(--r-primary-800);
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
.r-breadcrumb-link,
|
|
1487
|
+
.r-breadcrumb-title {
|
|
1488
|
+
display: inline;
|
|
1489
|
+
padding: 6px 0;
|
|
1490
|
+
margin: 0;
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
.r-breadcrumb-title {
|
|
1494
|
+
color: var(--r-main-950);
|
|
1495
|
+
font-weight: 600;
|
|
1496
1496
|
}.r-pagination {
|
|
1497
1497
|
grid-area: pagination;
|
|
1498
1498
|
display: grid;
|
|
@@ -1584,6 +1584,8 @@
|
|
|
1584
1584
|
opacity: 1;
|
|
1585
1585
|
visibility: visible;
|
|
1586
1586
|
pointer-events: all;
|
|
1587
|
+
}.r-git-logo {
|
|
1588
|
+
display: block;
|
|
1587
1589
|
}.r-external-mark {
|
|
1588
1590
|
position: relative;
|
|
1589
1591
|
vertical-align: text-top;
|
|
@@ -1615,8 +1617,6 @@
|
|
|
1615
1617
|
background-color: currentColor;
|
|
1616
1618
|
border-radius: 0 0 0 4px;
|
|
1617
1619
|
box-sizing: border-box;
|
|
1618
|
-
}.r-git-logo {
|
|
1619
|
-
display: block;
|
|
1620
1620
|
}.r-anchor-heading:hover .r-anchor-heading-link {
|
|
1621
1621
|
visibility: visible;
|
|
1622
1622
|
opacity: 1;
|
|
@@ -1636,6 +1636,14 @@
|
|
|
1636
1636
|
}
|
|
1637
1637
|
.r-anchor-heading-link::after {
|
|
1638
1638
|
content: "#";
|
|
1639
|
+
}.r-block {
|
|
1640
|
+
width: 100%;
|
|
1641
|
+
overflow: auto;
|
|
1642
|
+
margin-block-start: 12px;
|
|
1643
|
+
margin-block-end: 12px;
|
|
1644
|
+
scrollbar-width: thin;
|
|
1645
|
+
scrollbar-color: var(--r-main-200) transparent;
|
|
1646
|
+
box-sizing: border-box;
|
|
1639
1647
|
}.r-code-section {
|
|
1640
1648
|
position: relative;
|
|
1641
1649
|
margin-block-start: 1.5em;
|
|
@@ -1687,14 +1695,6 @@
|
|
|
1687
1695
|
|
|
1688
1696
|
.r-code-section-filename {
|
|
1689
1697
|
font-family: var(--monospace-font, monospace, monospace);
|
|
1690
|
-
}.r-block {
|
|
1691
|
-
width: 100%;
|
|
1692
|
-
overflow: auto;
|
|
1693
|
-
margin-block-start: 12px;
|
|
1694
|
-
margin-block-end: 12px;
|
|
1695
|
-
scrollbar-width: thin;
|
|
1696
|
-
scrollbar-color: var(--r-main-200) transparent;
|
|
1697
|
-
box-sizing: border-box;
|
|
1698
1698
|
}.r-blockquote {
|
|
1699
1699
|
background-color: var(--r-main-100);
|
|
1700
1700
|
padding: 8px 12px 8px 20px;
|
|
@@ -1765,19 +1765,6 @@
|
|
|
1765
1765
|
|
|
1766
1766
|
.r-code-span + .r-content-link-external {
|
|
1767
1767
|
margin-left: -12px;
|
|
1768
|
-
}.r-code-block {
|
|
1769
|
-
font-family: var(--monospace-font, monospace, monospace);
|
|
1770
|
-
font-size: 16px;
|
|
1771
|
-
line-height: 1.33;
|
|
1772
|
-
border-radius: 6px;
|
|
1773
|
-
padding: 16px 20px;
|
|
1774
|
-
margin: 0;
|
|
1775
|
-
color: var(--r-primary-800);
|
|
1776
|
-
background-color: var(--r-main-50);
|
|
1777
|
-
overflow-x: auto;
|
|
1778
|
-
scrollbar-width: thin;
|
|
1779
|
-
scrollbar-color: var(--r-main-200) transparent;
|
|
1780
|
-
box-sizing: border-box;
|
|
1781
1768
|
}.r-h1 {
|
|
1782
1769
|
font-size: 32px;
|
|
1783
1770
|
line-height: 1.4;
|
|
@@ -1818,6 +1805,19 @@
|
|
|
1818
1805
|
line-height: 1.4;
|
|
1819
1806
|
margin-block-start: 1.8em;
|
|
1820
1807
|
margin-block-end: 1.8em;
|
|
1808
|
+
}.r-code-block {
|
|
1809
|
+
font-family: var(--monospace-font, monospace, monospace);
|
|
1810
|
+
font-size: 16px;
|
|
1811
|
+
line-height: 1.33;
|
|
1812
|
+
border-radius: 6px;
|
|
1813
|
+
padding: 16px 20px;
|
|
1814
|
+
margin: 0;
|
|
1815
|
+
color: var(--r-primary-800);
|
|
1816
|
+
background-color: var(--r-main-50);
|
|
1817
|
+
overflow-x: auto;
|
|
1818
|
+
scrollbar-width: thin;
|
|
1819
|
+
scrollbar-color: var(--r-main-200) transparent;
|
|
1820
|
+
box-sizing: border-box;
|
|
1821
1821
|
}.r-img {
|
|
1822
1822
|
max-width: 100%;
|
|
1823
1823
|
box-sizing: border-box;
|
|
@@ -1931,34 +1931,6 @@
|
|
|
1931
1931
|
background-color: currentColor;
|
|
1932
1932
|
border-radius: 0 0 0 4px;
|
|
1933
1933
|
box-sizing: border-box;
|
|
1934
|
-
}.r-copy-text {
|
|
1935
|
-
position: relative;
|
|
1936
|
-
cursor: pointer;
|
|
1937
|
-
background: none;
|
|
1938
|
-
border: 0;
|
|
1939
|
-
padding: 0;
|
|
1940
|
-
font: inherit;
|
|
1941
|
-
padding: 6px 0;
|
|
1942
|
-
}
|
|
1943
|
-
.r-copy-text:hover {
|
|
1944
|
-
color: var(--r-main-950);
|
|
1945
|
-
}
|
|
1946
|
-
.r-copy-text::before {
|
|
1947
|
-
content: "";
|
|
1948
|
-
position: absolute;
|
|
1949
|
-
bottom: 0;
|
|
1950
|
-
left: 0;
|
|
1951
|
-
width: 100%;
|
|
1952
|
-
height: 1px;
|
|
1953
|
-
background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
|
|
1954
|
-
transition: background 0.2s;
|
|
1955
|
-
box-sizing: border-box;
|
|
1956
|
-
opacity: 0.6;
|
|
1957
|
-
}
|
|
1958
|
-
|
|
1959
|
-
.r-copy-text:active,
|
|
1960
|
-
.r-copy-text._active {
|
|
1961
|
-
color: var(--r-success);
|
|
1962
1934
|
}.r-copy-button {
|
|
1963
1935
|
position: relative;
|
|
1964
1936
|
padding: 6px;
|
|
@@ -2002,6 +1974,34 @@
|
|
|
2002
1974
|
|
|
2003
1975
|
.r-copy-button-svg {
|
|
2004
1976
|
display: block;
|
|
1977
|
+
}.r-copy-text {
|
|
1978
|
+
position: relative;
|
|
1979
|
+
cursor: pointer;
|
|
1980
|
+
background: none;
|
|
1981
|
+
border: 0;
|
|
1982
|
+
padding: 0;
|
|
1983
|
+
font: inherit;
|
|
1984
|
+
padding: 6px 0;
|
|
1985
|
+
}
|
|
1986
|
+
.r-copy-text:hover {
|
|
1987
|
+
color: var(--r-main-950);
|
|
1988
|
+
}
|
|
1989
|
+
.r-copy-text::before {
|
|
1990
|
+
content: "";
|
|
1991
|
+
position: absolute;
|
|
1992
|
+
bottom: 0;
|
|
1993
|
+
left: 0;
|
|
1994
|
+
width: 100%;
|
|
1995
|
+
height: 1px;
|
|
1996
|
+
background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
|
|
1997
|
+
transition: background 0.2s;
|
|
1998
|
+
box-sizing: border-box;
|
|
1999
|
+
opacity: 0.6;
|
|
2000
|
+
}
|
|
2001
|
+
|
|
2002
|
+
.r-copy-text:active,
|
|
2003
|
+
.r-copy-text._active {
|
|
2004
|
+
color: var(--r-success);
|
|
2005
2005
|
}.r-li {
|
|
2006
2006
|
line-height: 1.8;
|
|
2007
2007
|
margin-block-start: 6px;
|
|
@@ -2030,13 +2030,37 @@
|
|
|
2030
2030
|
padding: 6px 12px;
|
|
2031
2031
|
border-bottom: 1px solid var(--r-main-400);
|
|
2032
2032
|
border-collapse: collapse;
|
|
2033
|
-
}
|
|
2034
|
-
|
|
2033
|
+
}
|
|
2034
|
+
|
|
2035
|
+
.r-td_left {
|
|
2036
|
+
text-align: left;
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
.r-td_center {
|
|
2040
|
+
text-align: center;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
.r-td_right {
|
|
2044
|
+
text-align: right;
|
|
2035
2045
|
}.r-th {
|
|
2036
2046
|
padding: 6px 12px;
|
|
2037
2047
|
border-top: 1px solid var(--r-main-500);
|
|
2038
2048
|
border-bottom: 1px solid var(--r-main-500);
|
|
2039
2049
|
border-collapse: collapse;
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
.r-th_left {
|
|
2053
|
+
text-align: left;
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2056
|
+
.r-th_center {
|
|
2057
|
+
text-align: center;
|
|
2058
|
+
}
|
|
2059
|
+
|
|
2060
|
+
.r-th_right {
|
|
2061
|
+
text-align: right;
|
|
2062
|
+
}.r-thead {
|
|
2063
|
+
background-color: var(--r-main-100);
|
|
2040
2064
|
}.r-task-li.r-task-li {
|
|
2041
2065
|
margin-block-start: 2px;
|
|
2042
2066
|
margin-block-end: 2px;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "robindoc",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-fa80e8a",
|
|
4
4
|
"description": "Robindoc is a framework for automatically creating documentation websites based on markdown files, built on React.js Server Components",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"scripts": {
|