robindoc 0.0.0-experimental-fb135e6 → 0.0.0-experimental-2c17c72
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/core/types/initialize.d.ts +1 -0
- package/lib/core/types/initialize.d.ts.map +1 -1
- package/lib/core/utils/initialize-robindoc.d.ts +6 -0
- package/lib/core/utils/initialize-robindoc.d.ts.map +1 -1
- package/lib/core/utils/initialize-robindoc.js +1 -1
- package/lib/core/utils/initialize-robindoc.js.map +1 -1
- package/lib/styles.css +167 -167
- package/package.json +1 -1
|
@@ -3,5 +3,6 @@ export type StructureTemplate = Structure | (() => Structure | Promise<Structure
|
|
|
3
3
|
export type Options = {
|
|
4
4
|
processError?: (status: number, statusText: string) => void | null | never;
|
|
5
5
|
matcher?: string[];
|
|
6
|
+
cache?: boolean;
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=initialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../src/core/types/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnF,MAAM,MAAM,OAAO,GAAG;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../src/core/types/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnF,MAAM,MAAM,OAAO,GAAG;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { type TreeItem } from "../../components/elements/sidebar/types";
|
|
2
3
|
import { type ArticleProps as ArticlePropsBase } from "../../components/elements/article";
|
|
3
4
|
import { type SidebarProps as SidebarPropsBase } from "../../components/elements/sidebar";
|
|
4
5
|
import { type StructureTemplate, type Options } from "../types/initialize";
|
|
6
|
+
import { type Pages } from "../types/content";
|
|
5
7
|
type PageProps = Omit<Partial<ArticlePropsBase>, "uri" | "content" | "provider" | "pathname" | "pages"> & {
|
|
6
8
|
pathname: string;
|
|
7
9
|
};
|
|
@@ -16,6 +18,10 @@ export declare const initializeRobindoc: (structureTemplate: StructureTemplate,
|
|
|
16
18
|
raw: string;
|
|
17
19
|
} | null>;
|
|
18
20
|
getPageInstruction: (pathname: string) => Promise<import("../types/content").Page | null>;
|
|
21
|
+
revalidate: (background?: boolean) => Promise<{
|
|
22
|
+
pages: Pages;
|
|
23
|
+
tree: TreeItem[];
|
|
24
|
+
}>;
|
|
19
25
|
};
|
|
20
26
|
export {};
|
|
21
27
|
//# sourceMappingURL=initialize-robindoc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-robindoc.d.ts","sourceRoot":"","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AACjH,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AAEjH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"initialize-robindoc.d.ts","sourceRoot":"","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,QAAQ,EAAE,gDAA+C;AACvE,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AACjH,OAAO,EAA0B,KAAK,YAAY,IAAI,gBAAgB,EAAE,0CAAyC;AAEjH,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAO9C,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG;IACtG,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAiBnD,eAAO,MAAM,kBAAkB,GAAI,mBAAmB,iBAAiB,EAAE,UAAS,OAAY;;;sBAiE3D,CAAC,SAAS,MAAM,wBACnC,MAAM,qBACI,CAAC;4BAmBc,MAAM;4BA0BN,MAAM;;;;mCAyBC,MAAM;8BAsBX,OAAO;eA9KN,KAAK;cAAQ,QAAQ,EAAE;;CA8LlE,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import r from"react";import{Article as t}from"../../components/elements/article/index.js";import{Sidebar as e}from"../../components/elements/sidebar/index.js";import{parseStructure as
|
|
1
|
+
import r from"react";import{Article as t}from"../../components/elements/article/index.js";import{Sidebar as e}from"../../components/elements/sidebar/index.js";import{parseStructure as a}from"./parse-structure.js";import{getConfiguration as o}from"./get-configuration.js";import{getMetadata as s}from"./get-metadata.js";import{normalizePathname as n,removeTrailingSlash as c}from"./path-tools.js";import{loadContent as i}from"./load-content.js";const u=async r=>{let t;t="function"==typeof r?await r():r;const e=o(t.configuration||{});return a(t.items||[],e)},p=(a,o={})=>{let p=u(a).then(r=>(p=r,r));const l=o.matcher?.map(r=>new RegExp(`^${r.replace(/^\^|\$$/g,"")}$`)),h=async r=>{if("then"in p)return p;if(r){const r=await u(a);p=r}else p=u(a).then(r=>(p=r,r));return p};return{Page:async({pathname:e,...a})=>{const s=n(e);if(l&&!l.every(r=>r.test(e))){const r=`Pathname "${s}" doesn't pass matcher rules check`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}o.cache||await h(!0);const{pages:c}=await p,i=c[s];if(!i){const r=`Can not find data for "${s}". Please check structure`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}const u=Object.keys(c),m=u.indexOf(s),f=u[m-1],w=m<u.length-1&&u[m+1],d=f&&{pathname:f,title:c[f].title},g=w&&{pathname:w,title:c[w].title},E=i.crumbs.map(r=>({title:c[r].title,pathname:r})),y=Object.entries(c).reduce((r,[t,{origPath:e}])=>(e&&r.push({clientPath:t,origPath:e}),r),[]);return r.createElement(t,{pathname:s,provider:i.configuration.provider,uri:i.uri,title:i.title,breadcrumbs:E,prev:d||void 0,next:g||void 0,pages:y,...a})},Sidebar:async t=>{o.cache||await h(!0);const{tree:a}=await p;return r.createElement(e,{tree:a,...t})},getStaticParams:async(r="",t="segments")=>{o.cache||await h(!0);const{pages:e}=await p,a=Object.keys(e),s=c(r);return a.reduce((r,e)=>e.startsWith(s)?(r.push({[t]:e.substring(s.length+1).split("/")}),r):r,[])},getMetadata:async r=>{const t=n(r);if(l&&!l.every(t=>t.test(r))){const r=`Pathname "${t}" doesn't pass matcher rules check`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}o.cache||await h(!0);const{pages:e}=await p,a=e[t];if(!a){const r=`Can not find data for "${t}". Please check structure`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}return await s({uri:a.uri,provider:a.configuration.provider})},getPageData:async r=>{const t=n(r);if(l&&!l.every(t=>t.test(r))){const r=`Pathname "${t}" doesn't pass matcher rules check`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}o.cache||await h(!0);const{pages:e}=await p,a=e[t];if(!a){const r=`Can not find data for "${t}". Please check structure`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}const s=a.title,{data:c}=await i(a.uri,a.configuration.provider);return{title:s,raw:c}},getPageInstruction:async r=>{const t=n(r);if(l&&!l.every(t=>t.test(r))){const r=`Pathname "${t}" doesn't pass matcher rules check`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}o.cache||await h(!0);const{pages:e}=await p,a=e[t];if(!a){const r=`Can not find data for "${t}". Please check structure`;if(o.processError)return o.processError(404,r)||null;throw new Error(r)}return a},revalidate:h}};export{p as initializeRobindoc};
|
|
2
2
|
//# sourceMappingURL=initialize-robindoc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-robindoc.js","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { Article as ArticleBase, type ArticleProps as ArticlePropsBase } from \"@src/components/elements/article\";\nimport { Sidebar as SidebarBase, type SidebarProps as SidebarPropsBase } from \"@src/components/elements/sidebar\";\n\nimport { type StructureTemplate, type Options } from \"../types/initialize\";\nimport { parseStructure } from \"./parse-structure\";\nimport { getConfiguration } from \"./get-configuration\";\nimport { getMetadata as getMetadataBase } from \"./get-metadata\";\nimport { normalizePathname, removeTrailingSlash } from \"./path-tools\";\nimport { loadContent } from \"./load-content\";\n\ntype PageProps = Omit<Partial<ArticlePropsBase>, \"uri\" | \"content\" | \"provider\" | \"pathname\" | \"pages\"> & {\n pathname: string;\n};\n\ntype SidebarProps = Omit<SidebarPropsBase, \"tree\">;\n\nconst loadStructure = async (structureTemplate: StructureTemplate) => {\n let structure;\n if (typeof structureTemplate === \"function\") {\n structure = await structureTemplate();\n } else {\n structure = structureTemplate;\n }\n\n const configuration = getConfiguration(structure.configuration || {});\n\n return parseStructure(structure.items || [], configuration);\n};\n\nexport const initializeRobindoc = (structureTemplate: StructureTemplate, options: Options = {}) => {\n const structureParsedPromise = loadStructure(structureTemplate);\n const matchingRules = options.matcher?.map((rule) => new RegExp(`^${rule.replace(/^\\^|\\$$/g, \"\")}$`));\n\n const Page: React.FC<PageProps> = async ({ pathname, ...props }) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const paths = Object.keys(pages);\n const targetPageIndex = paths.indexOf(pathnameNormalized);\n const prevPagePathname = paths[targetPageIndex - 1];\n const nextPagePathname = targetPageIndex < paths.length - 1 && paths[targetPageIndex + 1];\n const prev = prevPagePathname && { pathname: prevPagePathname, title: pages[prevPagePathname].title };\n const next = nextPagePathname && { pathname: nextPagePathname, title: pages[nextPagePathname].title };\n\n const breadcrumbs = pageInstruction.crumbs.map((crumb) => ({ title: pages[crumb].title, pathname: crumb }));\n const clientPages = Object.entries(pages).reduce<{ clientPath: string; origPath: string }[]>(\n (acc, [clientPath, { origPath }]) => {\n if (origPath) acc.push({ clientPath, origPath });\n return acc;\n },\n [],\n );\n\n return (\n <ArticleBase\n pathname={pathnameNormalized}\n provider={pageInstruction.configuration.provider}\n uri={pageInstruction.uri}\n title={pageInstruction.title}\n breadcrumbs={breadcrumbs}\n prev={prev || undefined}\n next={next || undefined}\n pages={clientPages}\n {...props}\n />\n );\n };\n\n const Sidebar: React.FC<SidebarProps> = async (props) => {\n const { tree } = await structureParsedPromise;\n\n return <SidebarBase tree={tree} {...props} />;\n };\n\n const getStaticParams = async <T extends string = \"segments\">(\n prefix: string = \"\",\n segmentsParamKey: T = \"segments\" as T,\n ) => {\n const { pages } = await structureParsedPromise;\n const pagesArr = Object.keys(pages);\n const prefixWithoutTrailingSlash = removeTrailingSlash(prefix);\n\n return pagesArr.reduce<Record<T, string[]>[]>((acc, cur) => {\n if (!cur.startsWith(prefixWithoutTrailingSlash)) return acc;\n\n acc.push({\n [segmentsParamKey]: cur.substring(prefixWithoutTrailingSlash.length + 1).split(\"/\"),\n } as Record<T, string[]>);\n\n return acc;\n }, []);\n };\n\n const getMetadata = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const metadata = await getMetadataBase({\n uri: pageInstruction.uri,\n provider: pageInstruction.configuration.provider,\n });\n return metadata;\n };\n\n const getPageData = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const title = pageInstruction.title;\n const { data } = await loadContent(pageInstruction.uri, pageInstruction.configuration.provider);\n\n return { title, raw: data };\n };\n\n const getPageInstruction = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n return pageInstruction;\n };\n\n return { Page, Sidebar, getStaticParams, getMetadata, getPageData, getPageInstruction };\n};\n"],"names":["initializeRobindoc","structureTemplate","options","structureParsedPromise","async","structure","configuration","getConfiguration","parseStructure","items","loadStructure","matchingRules","matcher","map","rule","RegExp","replace","Page","pathname","props","pathnameNormalized","normalizePathname","every","test","errorMessage","processError","Error","pages","pageInstruction","paths","Object","keys","targetPageIndex","indexOf","prevPagePathname","nextPagePathname","length","prev","title","next","breadcrumbs","crumbs","crumb","clientPages","entries","reduce","acc","clientPath","origPath","push","React","ArticleBase","provider","uri","undefined","Sidebar","tree","createElement","SidebarBase","getStaticParams","prefix","segmentsParamKey","pagesArr","prefixWithoutTrailingSlash","removeTrailingSlash","cur","startsWith","substring","split","getMetadata","getMetadataBase","getPageData","data","loadContent","raw","getPageInstruction"],"mappings":"4bAkBA,MAaaA,EAAqB,CAACC,EAAsCC,EAAmB,MACxF,MAAMC,EAdYC,OAAOH,IACzB,IAAII,EAEAA,EAD6B,mBAAtBJ,QACWA,IAENA,EAGhB,MAAMK,EAAgBC,EAAiBF,EAAUC,eAAiB,CAAA,GAElE,OAAOE,EAAeH,EAAUI,OAAS,GAAIH,IAIdI,CAAcT,GACvCU,EAAgBT,EAAQU,SAASC,IAAKC,GAAS,IAAIC,OAAO,IAAID,EAAKE,QAAQ,WAAY,SA8I7F,MAAO,CAAEC,KA5IyBb,OAASc,cAAaC,MACpD,MAAMC,EAAqBC,EAAkBH,GAC7C,GAAIP,IAAkBA,EAAcW,MAAOR,GAASA,EAAKS,KAAKL,IAAY,CACtE,MAAMM,EAAe,aAAaJ,sCAClC,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,MAAMG,MAAEA,SAAgBxB,EAClByB,EAAkBD,EAAMP,GAE9B,IAAKQ,EAAiB,CAClB,MAAMJ,EAAe,0BAA0BJ,6BAC/C,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,MAAMK,EAAQC,OAAOC,KAAKJ,GACpBK,EAAkBH,EAAMI,QAAQb,GAChCc,EAAmBL,EAAMG,EAAkB,GAC3CG,EAAmBH,EAAkBH,EAAMO,OAAS,GAAKP,EAAMG,EAAkB,GACjFK,EAAOH,GAAoB,CAAEhB,SAAUgB,EAAkBI,MAAOX,EAAMO,GAAkBI,OACxFC,EAAOJ,GAAoB,CAAEjB,SAAUiB,EAAkBG,MAAOX,EAAMQ,GAAkBG,OAExFE,EAAcZ,EAAgBa,OAAO5B,IAAK6B,IAAK,CAAQJ,MAAOX,EAAMe,GAAOJ,MAAOpB,SAAUwB,KAC5FC,EAAcb,OAAOc,QAAQjB,GAAOkB,OACtC,CAACC,GAAMC,GAAcC,gBACbA,GAAUF,EAAIG,KAAK,CAAEF,aAAYC,aAC9BF,GAEX,IAGJ,OACII,gBAACC,EAAW,CACRjC,SAAUE,EACVgC,SAAUxB,EAAgBtB,cAAc8C,SACxCC,IAAKzB,EAAgByB,IACrBf,MAAOV,EAAgBU,MACvBE,YAAaA,EACbH,KAAMA,QAAQiB,EACdf,KAAMA,QAAQe,EACd3B,MAAOgB,KACHxB,KAiGHoC,QA5F2BnD,MAAOe,IAC3C,MAAMqC,KAAEA,SAAerD,EAEvB,OAAO+C,EAAAO,cAACC,EAAW,CAACF,KAAMA,KAAUrC,KAyFhBwC,gBAtFAvD,MACpBwD,EAAiB,GACjBC,EAAsB,cAEtB,MAAMlC,MAAEA,SAAgBxB,EAClB2D,EAAWhC,OAAOC,KAAKJ,GACvBoC,EAA6BC,EAAoBJ,GAEvD,OAAOE,EAASjB,OAA8B,CAACC,EAAKmB,IAC3CA,EAAIC,WAAWH,IAEpBjB,EAAIG,KAAK,CACLY,CAACA,GAAmBI,EAAIE,UAAUJ,EAA2B3B,OAAS,GAAGgC,MAAM,OAG5EtB,GANiDA,EAOzD,KAsEgCuB,YAnEnBjE,MAAOc,IACvB,MAAME,EAAqBC,EAAkBH,GAC7C,GAAIP,IAAkBA,EAAcW,MAAOR,GAASA,EAAKS,KAAKL,IAAY,CACtE,MAAMM,EAAe,aAAaJ,sCAClC,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,MAAMG,MAAEA,SAAgBxB,EAClByB,EAAkBD,EAAMP,GAE9B,IAAKQ,EAAiB,CAClB,MAAMJ,EAAe,0BAA0BJ,6BAC/C,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAMA,aAJuB8C,EAAgB,CACnCjB,IAAKzB,EAAgByB,IACrBD,SAAUxB,EAAgBtB,cAAc8C,YAgDMmB,YA3ClCnE,MAAOc,IACvB,MAAME,EAAqBC,EAAkBH,GAC7C,GAAIP,IAAkBA,EAAcW,MAAOR,GAASA,EAAKS,KAAKL,IAAY,CACtE,MAAMM,EAAe,aAAaJ,sCAClC,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,MAAMG,MAAEA,SAAgBxB,EAClByB,EAAkBD,EAAMP,GAE9B,IAAKQ,EAAiB,CAClB,MAAMJ,EAAe,0BAA0BJ,6BAC/C,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,MAAMc,EAAQV,EAAgBU,OACxBkC,KAAEA,SAAeC,EAAY7C,EAAgByB,IAAKzB,EAAgBtB,cAAc8C,UAEtF,MAAO,CAAEd,QAAOoC,IAAKF,IAuB0CG,mBApBxCvE,MAAOc,IAC9B,MAAME,EAAqBC,EAAkBH,GAC7C,GAAIP,IAAkBA,EAAcW,MAAOR,GAASA,EAAKS,KAAKL,IAAY,CACtE,MAAMM,EAAe,aAAaJ,sCAClC,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,MAAMG,MAAEA,SAAgBxB,EAClByB,EAAkBD,EAAMP,GAE9B,IAAKQ,EAAiB,CAClB,MAAMJ,EAAe,0BAA0BJ,6BAC/C,GAAIlB,EAAQuB,aAAc,OAAOvB,EAAQuB,aAAa,IAAKD,IAAiB,KAC5E,MAAM,IAAIE,MAAMF,EACpB,CAEA,OAAOI"}
|
|
1
|
+
{"version":3,"file":"initialize-robindoc.js","sources":["../../../src/core/utils/initialize-robindoc.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { type TreeItem } from \"@src/components/elements/sidebar/types\";\nimport { Article as ArticleBase, type ArticleProps as ArticlePropsBase } from \"@src/components/elements/article\";\nimport { Sidebar as SidebarBase, type SidebarProps as SidebarPropsBase } from \"@src/components/elements/sidebar\";\n\nimport { type StructureTemplate, type Options } from \"../types/initialize\";\nimport { type Pages } from \"../types/content\";\nimport { parseStructure } from \"./parse-structure\";\nimport { getConfiguration } from \"./get-configuration\";\nimport { getMetadata as getMetadataBase } from \"./get-metadata\";\nimport { normalizePathname, removeTrailingSlash } from \"./path-tools\";\nimport { loadContent } from \"./load-content\";\n\ntype PageProps = Omit<Partial<ArticlePropsBase>, \"uri\" | \"content\" | \"provider\" | \"pathname\" | \"pages\"> & {\n pathname: string;\n};\n\ntype SidebarProps = Omit<SidebarPropsBase, \"tree\">;\n\ntype StructureParsedData = Promise<{ pages: Pages; tree: TreeItem[] }> | { pages: Pages; tree: TreeItem[] };\n\nconst loadStructure = async (structureTemplate: StructureTemplate) => {\n let structure;\n if (typeof structureTemplate === \"function\") {\n structure = await structureTemplate();\n } else {\n structure = structureTemplate;\n }\n\n const configuration = getConfiguration(structure.configuration || {});\n\n return parseStructure(structure.items || [], configuration);\n};\n\nexport const initializeRobindoc = (structureTemplate: StructureTemplate, options: Options = {}) => {\n let structureParsedPromise: StructureParsedData = loadStructure(structureTemplate).then((data) => {\n structureParsedPromise = data;\n return data;\n });\n const matchingRules = options.matcher?.map((rule) => new RegExp(`^${rule.replace(/^\\^|\\$$/g, \"\")}$`));\n\n const Page: React.FC<PageProps> = async ({ pathname, ...props }) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const paths = Object.keys(pages);\n const targetPageIndex = paths.indexOf(pathnameNormalized);\n const prevPagePathname = paths[targetPageIndex - 1];\n const nextPagePathname = targetPageIndex < paths.length - 1 && paths[targetPageIndex + 1];\n const prev = prevPagePathname && { pathname: prevPagePathname, title: pages[prevPagePathname].title };\n const next = nextPagePathname && { pathname: nextPagePathname, title: pages[nextPagePathname].title };\n\n const breadcrumbs = pageInstruction.crumbs.map((crumb) => ({ title: pages[crumb].title, pathname: crumb }));\n const clientPages = Object.entries(pages).reduce<{ clientPath: string; origPath: string }[]>(\n (acc, [clientPath, { origPath }]) => {\n if (origPath) acc.push({ clientPath, origPath });\n return acc;\n },\n [],\n );\n\n return (\n <ArticleBase\n pathname={pathnameNormalized}\n provider={pageInstruction.configuration.provider}\n uri={pageInstruction.uri}\n title={pageInstruction.title}\n breadcrumbs={breadcrumbs}\n prev={prev || undefined}\n next={next || undefined}\n pages={clientPages}\n {...props}\n />\n );\n };\n\n const Sidebar: React.FC<SidebarProps> = async (props) => {\n if (!options.cache) await revalidate(true);\n\n const { tree } = await structureParsedPromise;\n\n return <SidebarBase tree={tree} {...props} />;\n };\n\n const getStaticParams = async <T extends string = \"segments\">(\n prefix: string = \"\",\n segmentsParamKey: T = \"segments\" as T,\n ) => {\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pagesArr = Object.keys(pages);\n const prefixWithoutTrailingSlash = removeTrailingSlash(prefix);\n\n return pagesArr.reduce<Record<T, string[]>[]>((acc, cur) => {\n if (!cur.startsWith(prefixWithoutTrailingSlash)) return acc;\n\n acc.push({\n [segmentsParamKey]: cur.substring(prefixWithoutTrailingSlash.length + 1).split(\"/\"),\n } as Record<T, string[]>);\n\n return acc;\n }, []);\n };\n\n const getMetadata = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const metadata = await getMetadataBase({\n uri: pageInstruction.uri,\n provider: pageInstruction.configuration.provider,\n });\n return metadata;\n };\n\n const getPageData = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n const title = pageInstruction.title;\n const { data } = await loadContent(pageInstruction.uri, pageInstruction.configuration.provider);\n\n return { title, raw: data };\n };\n\n const getPageInstruction = async (pathname: string) => {\n const pathnameNormalized = normalizePathname(pathname);\n if (matchingRules && !matchingRules.every((rule) => rule.test(pathname))) {\n const errorMessage = `Pathname \"${pathnameNormalized}\" doesn't pass matcher rules check`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n if (!options.cache) await revalidate(true);\n\n const { pages } = await structureParsedPromise;\n const pageInstruction = pages[pathnameNormalized];\n\n if (!pageInstruction) {\n const errorMessage = `Can not find data for \"${pathnameNormalized}\". Please check structure`;\n if (options.processError) return options.processError(404, errorMessage) || null;\n throw new Error(errorMessage);\n }\n\n return pageInstruction;\n };\n\n const revalidate = async (background?: boolean) => {\n if (\"then\" in structureParsedPromise) return structureParsedPromise;\n\n if (background) {\n const newData = await loadStructure(structureTemplate);\n structureParsedPromise = newData;\n } else {\n structureParsedPromise = loadStructure(structureTemplate).then((data) => {\n structureParsedPromise = data;\n return data;\n });\n }\n return structureParsedPromise;\n };\n\n return { Page, Sidebar, getStaticParams, getMetadata, getPageData, getPageInstruction, revalidate };\n};\n"],"names":["loadStructure","async","structureTemplate","structure","configuration","getConfiguration","parseStructure","items","initializeRobindoc","options","structureParsedPromise","then","data","matchingRules","matcher","map","rule","RegExp","replace","revalidate","background","newData","Page","pathname","props","pathnameNormalized","normalizePathname","every","test","errorMessage","processError","Error","cache","pages","pageInstruction","paths","Object","keys","targetPageIndex","indexOf","prevPagePathname","nextPagePathname","length","prev","title","next","breadcrumbs","crumbs","crumb","clientPages","entries","reduce","acc","clientPath","origPath","push","React","ArticleBase","provider","uri","undefined","Sidebar","tree","createElement","SidebarBase","getStaticParams","prefix","segmentsParamKey","pagesArr","prefixWithoutTrailingSlash","removeTrailingSlash","cur","startsWith","substring","split","getMetadata","getMetadataBase","getPageData","loadContent","raw","getPageInstruction"],"mappings":"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"}
|
package/lib/styles.css
CHANGED
|
@@ -129,28 +129,6 @@
|
|
|
129
129
|
}
|
|
130
130
|
.r-powered-link:hover {
|
|
131
131
|
color: var(--r-primary-900);
|
|
132
|
-
}.r-docs-container {
|
|
133
|
-
min-height: calc(100dvh - var(--r-header-height));
|
|
134
|
-
overflow-wrap: break-word;
|
|
135
|
-
box-sizing: border-box;
|
|
136
|
-
}
|
|
137
|
-
@media screen and (width >= 768px) {
|
|
138
|
-
.r-docs-container {
|
|
139
|
-
display: grid;
|
|
140
|
-
justify-content: center;
|
|
141
|
-
column-gap: 32px;
|
|
142
|
-
grid-template-areas: "sidebar breadcrumbs" "sidebar contents" "sidebar content" "sidebar pagination";
|
|
143
|
-
grid-template-columns: 1fr calc(100% - 248px);
|
|
144
|
-
grid-template-rows: auto auto 1fr auto;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
@media screen and (width >= 1180px) {
|
|
148
|
-
.r-docs-container {
|
|
149
|
-
column-gap: 40px;
|
|
150
|
-
grid-template-areas: "sidebar breadcrumbs contents" "sidebar content contents" "sidebar pagination contents";
|
|
151
|
-
grid-template-columns: 200px 640px 238px;
|
|
152
|
-
grid-template-rows: auto 1fr auto;
|
|
153
|
-
}
|
|
154
132
|
}.r-root {
|
|
155
133
|
--r-header-height: 60px;
|
|
156
134
|
position: relative;
|
|
@@ -384,6 +362,32 @@
|
|
|
384
362
|
--r-cl-60: #86181d;
|
|
385
363
|
--r-cl-61: #144620;
|
|
386
364
|
--r-cl-62: #c24e00;
|
|
365
|
+
}.r-docs-container {
|
|
366
|
+
min-height: calc(100dvh - var(--r-header-height));
|
|
367
|
+
overflow-wrap: break-word;
|
|
368
|
+
box-sizing: border-box;
|
|
369
|
+
}
|
|
370
|
+
@media screen and (width >= 768px) {
|
|
371
|
+
.r-docs-container {
|
|
372
|
+
display: grid;
|
|
373
|
+
justify-content: center;
|
|
374
|
+
column-gap: 32px;
|
|
375
|
+
grid-template-areas: "sidebar breadcrumbs" "sidebar contents" "sidebar content" "sidebar pagination";
|
|
376
|
+
grid-template-columns: 1fr calc(100% - 248px);
|
|
377
|
+
grid-template-rows: auto auto 1fr auto;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
@media screen and (width >= 1180px) {
|
|
381
|
+
.r-docs-container {
|
|
382
|
+
column-gap: 40px;
|
|
383
|
+
grid-template-areas: "sidebar breadcrumbs contents" "sidebar content contents" "sidebar pagination contents";
|
|
384
|
+
grid-template-columns: 200px 640px 238px;
|
|
385
|
+
grid-template-rows: auto 1fr auto;
|
|
386
|
+
}
|
|
387
|
+
}.r-page-container {
|
|
388
|
+
min-height: calc(100dvh - var(--r-header-height));
|
|
389
|
+
overflow-wrap: break-word;
|
|
390
|
+
box-sizing: border-box;
|
|
387
391
|
}.r-blog-container {
|
|
388
392
|
min-height: calc(100dvh - var(--r-header-height));
|
|
389
393
|
overflow-wrap: break-word;
|
|
@@ -403,10 +407,6 @@
|
|
|
403
407
|
top: 8px;
|
|
404
408
|
left: 12px;
|
|
405
409
|
z-index: 1001;
|
|
406
|
-
}.r-page-container {
|
|
407
|
-
min-height: calc(100dvh - var(--r-header-height));
|
|
408
|
-
overflow-wrap: break-word;
|
|
409
|
-
box-sizing: border-box;
|
|
410
410
|
}.r-keylink.keylink-to-navigation:focus {
|
|
411
411
|
margin-top: -40px;
|
|
412
412
|
}.r-article {
|
|
@@ -1023,31 +1023,6 @@
|
|
|
1023
1023
|
font-size: 14px;
|
|
1024
1024
|
color: var(--r-main-600);
|
|
1025
1025
|
margin: 12px 0 0;
|
|
1026
|
-
}.r-header-social {
|
|
1027
|
-
display: flex;
|
|
1028
|
-
flex: 1;
|
|
1029
|
-
justify-content: flex-end;
|
|
1030
|
-
}
|
|
1031
|
-
@media screen and (width >= 1024px) {
|
|
1032
|
-
.r-header-social {
|
|
1033
|
-
flex: none;
|
|
1034
|
-
justify-content: unset;
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
.r-header-social-git {
|
|
1039
|
-
color: var(--r-main-700);
|
|
1040
|
-
transition: color 0.2s;
|
|
1041
|
-
}
|
|
1042
|
-
.r-header-social-git:hover, .r-header-social-git:focus {
|
|
1043
|
-
color: var(--r-main-950);
|
|
1044
|
-
}.r-container {
|
|
1045
|
-
max-width: 1180px;
|
|
1046
|
-
padding-right: 12px;
|
|
1047
|
-
padding-left: 12px;
|
|
1048
|
-
margin-right: auto;
|
|
1049
|
-
margin-left: auto;
|
|
1050
|
-
box-sizing: border-box;
|
|
1051
1026
|
}.r-dropdown {
|
|
1052
1027
|
position: relative;
|
|
1053
1028
|
color: var(--r-main-600);
|
|
@@ -1127,6 +1102,31 @@
|
|
|
1127
1102
|
|
|
1128
1103
|
.r-dropdown-link._active {
|
|
1129
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
|
+
}.r-header-social {
|
|
1113
|
+
display: flex;
|
|
1114
|
+
flex: 1;
|
|
1115
|
+
justify-content: flex-end;
|
|
1116
|
+
}
|
|
1117
|
+
@media screen and (width >= 1024px) {
|
|
1118
|
+
.r-header-social {
|
|
1119
|
+
flex: none;
|
|
1120
|
+
justify-content: unset;
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
.r-header-social-git {
|
|
1125
|
+
color: var(--r-main-700);
|
|
1126
|
+
transition: color 0.2s;
|
|
1127
|
+
}
|
|
1128
|
+
.r-header-social-git:hover, .r-header-social-git:focus {
|
|
1129
|
+
color: var(--r-main-950);
|
|
1130
1130
|
}.r-theme-switcher {
|
|
1131
1131
|
position: relative;
|
|
1132
1132
|
display: flex;
|
|
@@ -1213,6 +1213,47 @@
|
|
|
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;
|
|
1216
1257
|
}.r-contents {
|
|
1217
1258
|
grid-area: contents;
|
|
1218
1259
|
}
|
|
@@ -1452,47 +1493,6 @@
|
|
|
1452
1493
|
}
|
|
1453
1494
|
.r-contents-git:hover {
|
|
1454
1495
|
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,8 +1584,6 @@
|
|
|
1584
1584
|
opacity: 1;
|
|
1585
1585
|
visibility: visible;
|
|
1586
1586
|
pointer-events: all;
|
|
1587
|
-
}.r-git-logo {
|
|
1588
|
-
display: block;
|
|
1589
1587
|
}.r-external-mark {
|
|
1590
1588
|
position: relative;
|
|
1591
1589
|
vertical-align: text-top;
|
|
@@ -1617,6 +1615,8 @@
|
|
|
1617
1615
|
background-color: currentColor;
|
|
1618
1616
|
border-radius: 0 0 0 4px;
|
|
1619
1617
|
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;
|
|
@@ -1882,77 +1882,6 @@
|
|
|
1882
1882
|
min-width: 24px;
|
|
1883
1883
|
text-align: center;
|
|
1884
1884
|
box-sizing: border-box;
|
|
1885
|
-
}.r-copy-button {
|
|
1886
|
-
position: relative;
|
|
1887
|
-
padding: 6px;
|
|
1888
|
-
background: none;
|
|
1889
|
-
color: var(--r-main-700);
|
|
1890
|
-
border: 0;
|
|
1891
|
-
border-radius: 6px;
|
|
1892
|
-
cursor: pointer;
|
|
1893
|
-
font: inherit;
|
|
1894
|
-
transition: color 0.2s, background-color 0.2s;
|
|
1895
|
-
}
|
|
1896
|
-
|
|
1897
|
-
.r-copy-button-success {
|
|
1898
|
-
opacity: 0;
|
|
1899
|
-
transform: scale(0.7);
|
|
1900
|
-
transition: transform 0.2s;
|
|
1901
|
-
}
|
|
1902
|
-
|
|
1903
|
-
.r-copy-button-base {
|
|
1904
|
-
transition: transform 0.2s;
|
|
1905
|
-
}
|
|
1906
|
-
|
|
1907
|
-
.r-copy-button:hover {
|
|
1908
|
-
color: var(--r-main-950);
|
|
1909
|
-
}
|
|
1910
|
-
|
|
1911
|
-
.r-copy-button:active,
|
|
1912
|
-
.r-copy-button._active {
|
|
1913
|
-
color: var(--r-success);
|
|
1914
|
-
}
|
|
1915
|
-
.r-copy-button:active .r-copy-button-success,
|
|
1916
|
-
.r-copy-button._active .r-copy-button-success {
|
|
1917
|
-
opacity: 1;
|
|
1918
|
-
transform: scale(1);
|
|
1919
|
-
}
|
|
1920
|
-
.r-copy-button:active .r-copy-button-base,
|
|
1921
|
-
.r-copy-button._active .r-copy-button-base {
|
|
1922
|
-
opacity: 0;
|
|
1923
|
-
transform: scale(0.7);
|
|
1924
|
-
}
|
|
1925
|
-
|
|
1926
|
-
.r-copy-button-svg {
|
|
1927
|
-
display: block;
|
|
1928
|
-
}.r-copy-text {
|
|
1929
|
-
position: relative;
|
|
1930
|
-
cursor: pointer;
|
|
1931
|
-
background: none;
|
|
1932
|
-
border: 0;
|
|
1933
|
-
padding: 0;
|
|
1934
|
-
font: inherit;
|
|
1935
|
-
padding: 6px 0;
|
|
1936
|
-
}
|
|
1937
|
-
.r-copy-text:hover {
|
|
1938
|
-
color: var(--r-main-950);
|
|
1939
|
-
}
|
|
1940
|
-
.r-copy-text::before {
|
|
1941
|
-
content: "";
|
|
1942
|
-
position: absolute;
|
|
1943
|
-
bottom: 0;
|
|
1944
|
-
left: 0;
|
|
1945
|
-
width: 100%;
|
|
1946
|
-
height: 1px;
|
|
1947
|
-
background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
|
|
1948
|
-
transition: background 0.2s;
|
|
1949
|
-
box-sizing: border-box;
|
|
1950
|
-
opacity: 0.6;
|
|
1951
|
-
}
|
|
1952
|
-
|
|
1953
|
-
.r-copy-text:active,
|
|
1954
|
-
.r-copy-text._active {
|
|
1955
|
-
color: var(--r-success);
|
|
1956
1885
|
}.r-content-link {
|
|
1957
1886
|
text-decoration: none;
|
|
1958
1887
|
color: inherit;
|
|
@@ -2002,6 +1931,77 @@
|
|
|
2002
1931
|
background-color: currentColor;
|
|
2003
1932
|
border-radius: 0 0 0 4px;
|
|
2004
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
|
+
}.r-copy-button {
|
|
1963
|
+
position: relative;
|
|
1964
|
+
padding: 6px;
|
|
1965
|
+
background: none;
|
|
1966
|
+
color: var(--r-main-700);
|
|
1967
|
+
border: 0;
|
|
1968
|
+
border-radius: 6px;
|
|
1969
|
+
cursor: pointer;
|
|
1970
|
+
font: inherit;
|
|
1971
|
+
transition: color 0.2s, background-color 0.2s;
|
|
1972
|
+
}
|
|
1973
|
+
|
|
1974
|
+
.r-copy-button-success {
|
|
1975
|
+
opacity: 0;
|
|
1976
|
+
transform: scale(0.7);
|
|
1977
|
+
transition: transform 0.2s;
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
.r-copy-button-base {
|
|
1981
|
+
transition: transform 0.2s;
|
|
1982
|
+
}
|
|
1983
|
+
|
|
1984
|
+
.r-copy-button:hover {
|
|
1985
|
+
color: var(--r-main-950);
|
|
1986
|
+
}
|
|
1987
|
+
|
|
1988
|
+
.r-copy-button:active,
|
|
1989
|
+
.r-copy-button._active {
|
|
1990
|
+
color: var(--r-success);
|
|
1991
|
+
}
|
|
1992
|
+
.r-copy-button:active .r-copy-button-success,
|
|
1993
|
+
.r-copy-button._active .r-copy-button-success {
|
|
1994
|
+
opacity: 1;
|
|
1995
|
+
transform: scale(1);
|
|
1996
|
+
}
|
|
1997
|
+
.r-copy-button:active .r-copy-button-base,
|
|
1998
|
+
.r-copy-button._active .r-copy-button-base {
|
|
1999
|
+
opacity: 0;
|
|
2000
|
+
transform: scale(0.7);
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
.r-copy-button-svg {
|
|
2004
|
+
display: block;
|
|
2005
2005
|
}.r-li {
|
|
2006
2006
|
line-height: 1.8;
|
|
2007
2007
|
margin-block-start: 6px;
|
|
@@ -2030,6 +2030,8 @@
|
|
|
2030
2030
|
padding: 6px 12px;
|
|
2031
2031
|
border-bottom: 1px solid var(--r-main-400);
|
|
2032
2032
|
border-collapse: collapse;
|
|
2033
|
+
}.r-thead {
|
|
2034
|
+
background-color: var(--r-main-100);
|
|
2033
2035
|
}.r-th {
|
|
2034
2036
|
padding: 6px 12px;
|
|
2035
2037
|
border-top: 1px solid var(--r-main-500);
|
|
@@ -2064,8 +2066,6 @@
|
|
|
2064
2066
|
|
|
2065
2067
|
.r-task-label-text {
|
|
2066
2068
|
vertical-align: middle;
|
|
2067
|
-
}.r-thead {
|
|
2068
|
-
background-color: var(--r-main-100);
|
|
2069
2069
|
}.r-task-ol {
|
|
2070
2070
|
list-style: none;
|
|
2071
2071
|
}.r-task-ul {
|
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-2c17c72",
|
|
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": {
|