robindoc 3.3.1 → 3.3.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/theme-detector/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAiC1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAQjC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/theme-detector/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAkCzC,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAoBjC,CAAC"}
@@ -1,2 +1,3 @@
1
- import t from"react";const e=()=>{const t=document.querySelector(".r-root");if(!t)return;const e=localStorage.getItem("theme");e&&["light","dark"].includes(e)?t.classList.add(`r-theme-${e}`):(t.classList.add("r-theme-system"),window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?t.classList.add("r-theme-dark"):t.classList.add("r-theme-light"));const s=localStorage.getItem("r-tabs"),a=s?.split(";").filter(t=>t&&/[\w-]+=[\w]+/.test(t))||[];Array.from(t.classList).forEach(e=>{e.startsWith("r-tabs-global")&&t.classList.remove(e)}),a.forEach(e=>{const[s,a]=e.split("=");t.classList.add(`r-tabs-global__${s}`,`r-tabs-global__${s}_${a}`)})},s=()=>t.createElement("script",{id:"detect-theme",dangerouslySetInnerHTML:{__html:`(${e})()`},async:!0});export{s as ThemeDetector};
1
+ 'use client';
2
+ import t,{useEffect as e}from"react";const s=()=>{const t=document.querySelector(".r-root");if(!t)return;const e=localStorage.getItem("theme");e&&["light","dark"].includes(e)?t.classList.add(`r-theme-${e}`):(t.classList.add("r-theme-system"),window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?t.classList.add("r-theme-dark"):t.classList.add("r-theme-light"));const s=localStorage.getItem("r-tabs"),r=s?.split(";").filter(t=>t&&/[\w-]+=[\w]+/.test(t))||[];Array.from(t.classList).forEach(e=>{e.startsWith("r-tabs-global")&&t.classList.remove(e)}),r.forEach(e=>{const[s,r]=e.split("=");t.classList.add(`r-tabs-global__${s}`,`r-tabs-global__${s}_${r}`)}),t.classList.add("r-ready")},r=()=>(e(()=>{const t=document.querySelector(".r-root");if(t&&!t.classList.contains("r-ready"))return s(),()=>{t.classList.remove("r-ready")}},[]),t.createElement("script",{id:"detect-theme",dangerouslySetInnerHTML:{__html:`(${s})()`},async:!0}));export{r as ThemeDetector};
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/theme-detector/index.tsx"],"sourcesContent":["import React from \"react\";\n\nconst clientLogic = () => {\n const root = document.querySelector(\".r-root\");\n\n if (!root) return;\n\n const userTheme = localStorage.getItem(\"theme\");\n if (userTheme && [\"light\", \"dark\"].includes(userTheme)) {\n root.classList.add(`r-theme-${userTheme}`);\n } else {\n root.classList.add(`r-theme-system`);\n if (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n root.classList.add(\"r-theme-dark\");\n } else {\n root.classList.add(\"r-theme-light\");\n }\n }\n\n const store = localStorage.getItem(\"r-tabs\");\n const items = store?.split(\";\").filter((item) => item && /[\\w-]+=[\\w]+/.test(item)) || [];\n const classNames = Array.from(root.classList);\n classNames.forEach((className) => {\n if (className.startsWith(`r-tabs-global`)) {\n root.classList.remove(className);\n }\n });\n items.forEach((item) => {\n const [tabsKey, tab] = item.split(\"=\");\n root.classList.add(`r-tabs-global__${tabsKey}`, `r-tabs-global__${tabsKey}_${tab}`);\n });\n};\n\nexport const ThemeDetector: React.FC = () => (\n <script\n id=\"detect-theme\"\n dangerouslySetInnerHTML={{\n __html: `(${clientLogic})()`,\n }}\n async\n />\n);\n"],"names":["clientLogic","root","document","querySelector","userTheme","localStorage","getItem","includes","classList","add","window","matchMedia","matches","store","items","split","filter","item","test","Array","from","forEach","className","startsWith","remove","tabsKey","tab","ThemeDetector","React","createElement","id","dangerouslySetInnerHTML","__html","async"],"mappings":"qBAEA,MAAMA,EAAc,KAChB,MAAMC,EAAOC,SAASC,cAAc,WAEpC,IAAKF,EAAM,OAEX,MAAMG,EAAYC,aAAaC,QAAQ,SACnCF,GAAa,CAAC,QAAS,QAAQG,SAASH,GACxCH,EAAKO,UAAUC,IAAI,WAAWL,MAE9BH,EAAKO,UAAUC,IAAI,kBACfC,OAAOC,YAAcD,OAAOC,WAAW,gCAAgCC,QACvEX,EAAKO,UAAUC,IAAI,gBAEnBR,EAAKO,UAAUC,IAAI,kBAI3B,MAAMI,EAAQR,aAAaC,QAAQ,UAC7BQ,EAAQD,GAAOE,MAAM,KAAKC,OAAQC,GAASA,GAAQ,eAAeC,KAAKD,KAAU,GACpEE,MAAMC,KAAKnB,EAAKO,WACxBa,QAASC,IACZA,EAAUC,WAAW,kBACrBtB,EAAKO,UAAUgB,OAAOF,KAG9BR,EAAMO,QAASJ,IACX,MAAOQ,EAASC,GAAOT,EAAKF,MAAM,KAClCd,EAAKO,UAAUC,IAAI,kBAAkBgB,IAAW,kBAAkBA,KAAWC,QAIxEC,EAA0B,IACnCC,EAAAC,cAAA,SAAA,CACIC,GAAG,eACHC,wBAAyB,CACrBC,OAAQ,IAAIhC,QAEhBiC,OAAK"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/blocks/theme-detector/index.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect } from \"react\";\n\nconst clientLogic = () => {\n const root = document.querySelector(\".r-root\");\n\n if (!root) return;\n\n const userTheme = localStorage.getItem(\"theme\");\n if (userTheme && [\"light\", \"dark\"].includes(userTheme)) {\n root.classList.add(`r-theme-${userTheme}`);\n } else {\n root.classList.add(`r-theme-system`);\n if (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n root.classList.add(\"r-theme-dark\");\n } else {\n root.classList.add(\"r-theme-light\");\n }\n }\n\n const store = localStorage.getItem(\"r-tabs\");\n const items = store?.split(\";\").filter((item) => item && /[\\w-]+=[\\w]+/.test(item)) || [];\n const classNames = Array.from(root.classList);\n classNames.forEach((className) => {\n if (className.startsWith(`r-tabs-global`)) {\n root.classList.remove(className);\n }\n });\n items.forEach((item) => {\n const [tabsKey, tab] = item.split(\"=\");\n root.classList.add(`r-tabs-global__${tabsKey}`, `r-tabs-global__${tabsKey}_${tab}`);\n });\n root.classList.add(\"r-ready\");\n};\n\nexport const ThemeDetector: React.FC = () => {\n useEffect(() => {\n const root = document.querySelector(\".r-root\");\n if (!root || root.classList.contains(\"r-ready\")) return;\n clientLogic();\n\n return () => {\n root.classList.remove(\"r-ready\");\n };\n }, []);\n\n return (\n <script\n id=\"detect-theme\"\n dangerouslySetInnerHTML={{\n __html: `(${clientLogic})()`,\n }}\n async\n />\n );\n};\n"],"names":["clientLogic","root","document","querySelector","userTheme","localStorage","getItem","includes","classList","add","window","matchMedia","matches","store","items","split","filter","item","test","Array","from","forEach","className","startsWith","remove","tabsKey","tab","ThemeDetector","useEffect","contains","React","createElement","id","dangerouslySetInnerHTML","__html","async"],"mappings":";qCAIA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEpC,CAAA,CAAA,CAAA,CAAKF,CAAAA,CAAM,OAEX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMG,CAAAA,CAAYC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACnCF,CAAAA,CAAAA,CAAa,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASH,CAAAA,CAAAA,CACxCH,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAWL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAE9BH,EAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACfC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgCC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACvEX,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAEnBR,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAI,kBAI3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMI,CAAAA,CAAQR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC7BQ,CAAAA,CAAQD,CAAAA,CAAAA,CAAOE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAKC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAAA,CAAAA,CAASA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAeC,CAAAA,CAAAA,CAAAA,CAAAA,CAAKD,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA,CACpEE,MAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAKnB,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACxBa,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CACZA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACrBtB,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOF,CAAAA,CAAAA,CAAAA,CAAAA,CAG9BR,CAAAA,CAAMO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASJ,CAAAA,CAAAA,CAAAA,CACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOQ,EAASC,CAAAA,CAAAA,CAAOT,CAAAA,CAAKF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAClCd,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkBgB,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEjFzB,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGVkB,EAA0B,CAAA,CAAA,CAAA,CAAA,CACnCC,CAAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM3B,CAAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACpC,CAAA,CAAA,CAAKF,CAAAA,CAAAA,CAAAA,CAAQA,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUqB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAFA7B,CAAAA,CAAAA,CAAAA,CAEO,KACHC,CAAAA,CAAKO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAE3B,CAAA,CAAA,CAAA,CAGCM,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACIC,CAAAA,CAAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACHC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAyB,CACrBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA,CAAA,CAAIlC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEhBmC,OAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
1
  'use client';
2
- import e,{useState as r,useRef as t,useCallback as n,useEffect as o}from"react";import{HeadingsContext as l,CurrentHeadingContext as c}from"./context.js";const i=({children:i})=>{const[s,d]=r(null),u=t([]),h=n(e=>{if(e.scrollTop+20>e.scrollHeight-window.innerHeight)d(u.current.length-1);else{const r=u.current.findLastIndex(r=>r.offsetTop<e.scrollTop+100);e.scrollTop+100>e.scrollHeight-window.innerHeight&&r<u.current.length-2?d(u.current.length-2):d(r)}},[]);return o(()=>{let e=!1;const r=document.querySelector(".r-root");if(!r)return;const t=1===r.nodeType?window:r,n=()=>{!e&&window.innerWidth>1080&&(e=!0,setTimeout(()=>{h(r),e=!1},100))};return h(r),t.addEventListener("scroll",n),()=>{t.removeEventListener("scroll",n)}},[]),e.createElement(l.Provider,{value:u.current},e.createElement(c.Provider,{value:s},i))};export{i as ContentsProvider};
2
+ import e,{useState as r,useRef as t,useCallback as n,useEffect as o}from"react";import{HeadingsContext as l,CurrentHeadingContext as c}from"./context.js";const i=({children:i})=>{const[s,u]=r(null),d=t([]),m=n(e=>{if(e.scrollTop+20>e.scrollHeight-window.innerHeight)u(d.current.length-1);else{const r=d.current.findLastIndex(r=>r.offsetTop<e.scrollTop+100);e.scrollTop+100>e.scrollHeight-window.innerHeight&&r<d.current.length-2?u(d.current.length-2):u(r)}},[]);return o(()=>{let e=!1;const r=document.querySelector(".r-root");if(!r)return;const t=r===document.documentElement?window:r,n=()=>{!e&&window.innerWidth>1080&&(e=!0,setTimeout(()=>{m(r),e=!1},100))};return m(r),t.addEventListener("scroll",n),()=>{t.removeEventListener("scroll",n)}},[]),e.createElement(l.Provider,{value:d.current},e.createElement(c.Provider,{value:s},i))};export{i as ContentsProvider};
3
3
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../src/components/contexts/contents/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { CurrentHeadingContext, HeadingsContext } from \"./context\";\n\nexport const ContentsProvider: React.FC<React.PropsWithChildren> = ({ children }) => {\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const headings = useRef<HTMLHeadingElement[]>([]);\n\n const updateTargetSection = useCallback((rootElement: HTMLElement) => {\n if (rootElement.scrollTop + 20 > rootElement.scrollHeight - window.innerHeight) {\n setActiveIndex(headings.current.length - 1);\n } else {\n const headingIndex = headings.current.findLastIndex((el) => el.offsetTop < rootElement.scrollTop + 100);\n if (\n rootElement.scrollTop + 100 > rootElement.scrollHeight - window.innerHeight &&\n headingIndex < headings.current.length - 2\n ) {\n setActiveIndex(headings.current.length - 2);\n } else {\n setActiveIndex(headingIndex);\n }\n }\n }, []);\n\n useEffect(() => {\n let scheduledAnimationFrame = false;\n const rootElement = document.querySelector<HTMLElement>(\".r-root\");\n\n if (!rootElement) return;\n\n const scrollElement = rootElement.nodeType === 1 ? window : rootElement;\n\n const scrollHandler = () => {\n if (!scheduledAnimationFrame && window.innerWidth > 1080) {\n scheduledAnimationFrame = true;\n setTimeout(() => {\n updateTargetSection(rootElement);\n scheduledAnimationFrame = false;\n }, 100);\n }\n };\n\n updateTargetSection(rootElement);\n scrollElement.addEventListener(\"scroll\", scrollHandler);\n\n return () => {\n scrollElement.removeEventListener(\"scroll\", scrollHandler);\n };\n }, []);\n\n return (\n <HeadingsContext.Provider value={headings.current}>\n <CurrentHeadingContext.Provider value={activeIndex}>{children}</CurrentHeadingContext.Provider>\n </HeadingsContext.Provider>\n );\n};\n"],"names":["ContentsProvider","children","activeIndex","setActiveIndex","useState","headings","useRef","updateTargetSection","useCallback","rootElement","scrollTop","scrollHeight","window","innerHeight","current","length","headingIndex","findLastIndex","el","offsetTop","useEffect","scheduledAnimationFrame","document","querySelector","scrollElement","nodeType","scrollHandler","innerWidth","setTimeout","addEventListener","removeEventListener","React","createElement","HeadingsContext","Provider","value","CurrentHeadingContext"],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../src/components/contexts/contents/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { CurrentHeadingContext, HeadingsContext } from \"./context\";\n\nexport const ContentsProvider: React.FC<React.PropsWithChildren> = ({ children }) => {\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const headings = useRef<HTMLHeadingElement[]>([]);\n\n const updateTargetSection = useCallback((rootElement: HTMLElement) => {\n if (rootElement.scrollTop + 20 > rootElement.scrollHeight - window.innerHeight) {\n setActiveIndex(headings.current.length - 1);\n } else {\n const headingIndex = headings.current.findLastIndex((el) => el.offsetTop < rootElement.scrollTop + 100);\n if (\n rootElement.scrollTop + 100 > rootElement.scrollHeight - window.innerHeight &&\n headingIndex < headings.current.length - 2\n ) {\n setActiveIndex(headings.current.length - 2);\n } else {\n setActiveIndex(headingIndex);\n }\n }\n }, []);\n\n useEffect(() => {\n let scheduledAnimationFrame = false;\n const rootElement = document.querySelector<HTMLElement>(\".r-root\");\n\n if (!rootElement) return;\n\n const scrollElement = rootElement === document.documentElement ? window : rootElement;\n\n const scrollHandler = () => {\n if (!scheduledAnimationFrame && window.innerWidth > 1080) {\n scheduledAnimationFrame = true;\n setTimeout(() => {\n updateTargetSection(rootElement);\n scheduledAnimationFrame = false;\n }, 100);\n }\n };\n\n updateTargetSection(rootElement);\n scrollElement.addEventListener(\"scroll\", scrollHandler);\n\n return () => {\n scrollElement.removeEventListener(\"scroll\", scrollHandler);\n };\n }, []);\n\n return (\n <HeadingsContext.Provider value={headings.current}>\n <CurrentHeadingContext.Provider value={activeIndex}>{children}</CurrentHeadingContext.Provider>\n </HeadingsContext.Provider>\n );\n};\n"],"names":["ContentsProvider","children","activeIndex","setActiveIndex","useState","headings","useRef","updateTargetSection","useCallback","rootElement","scrollTop","scrollHeight","window","innerHeight","current","length","headingIndex","findLastIndex","el","offsetTop","useEffect","scheduledAnimationFrame","document","querySelector","scrollElement","documentElement","scrollHandler","innerWidth","setTimeout","addEventListener","removeEventListener","React","createElement","HeadingsContext","Provider","value","CurrentHeadingContext"],"mappings":"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"}
@@ -25,7 +25,7 @@ export declare const isNewCodeToken: (token: Token | Token[], codeQueue: {
25
25
  tabName: string;
26
26
  };
27
27
  }) => boolean;
28
- export declare const formatLinkHref: (href: string, pathname: string, pages?: PagesType) => {
28
+ export declare const formatLinkHref: (href: string, currentPathname: string, pages?: PagesType) => {
29
29
  href: string;
30
30
  external: boolean;
31
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,KAAK,cAAc,EAAE,4BAAsC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM;;;CAmB5C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,YAEjD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM;;;;;CAmBxC,CAAC;AAEF,eAAO,MAAM,cAAc,GACvB,OAAO,KAAK,GAAG,KAAK,EAAE,EACtB,WAAW;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,YAa/E,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,EAAE,QAAQ,SAAS;;;CAiB/E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO;;;;;;;;;;;UAoBjC,cAAc;;;;CAKrD,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/elements/article/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,KAAK,cAAc,EAAE,4BAAsC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM;;;CAmB5C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,YAEjD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM;;;;;CAmBxC,CAAC;AAEF,eAAO,MAAM,cAAc,GACvB,OAAO,KAAK,GAAG,KAAK,EAAE,EACtB,WAAW;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,YAa/E,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,iBAAiB,MAAM,EAAE,QAAQ,SAAS;;;CAmBtF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO;;;;;;;;;;;UAoBjC,cAAc;;;;CAKrD,CAAC"}
@@ -1,2 +1,2 @@
1
- import t from"github-slugger";import e from"gray-matter";import{lexer as r}from"marked";import{join as n,dirname as o}from"path";import{parseTokenText as s}from"../../../core/utils/content-tools.js";const i=n=>{const{content:o}=e(n),i=r(o.trim()),a=new t,c=i.reduce((t,e)=>{if("heading"===e.type&&(2===e.depth||3===e.depth)){const r=s(e);t.push({title:r,id:a.slug(r),token:e,nested:3===e.depth})}return t},[]);return{tokens:i,headings:c}},a=t=>t.toLowerCase().replace(/\W/g,"_").replace(/_+/g,"_"),c=t=>/^[A-Z][a-zA-Z0-9]+$/.test(t),g=t=>{let e={},r=t;const n=t.match(/[a-z]+=("[^"]+"|'[^']+'|[^ ]+)|[a-z]+/g);if(Array.isArray(n)){const[t,...o]=n;r=t,e=o.reduce((t,e)=>{const[r,...n]=e.split("=");return t[r]=!n||(0===n.length||n.join("=").replace(/(^["']|['"]$)/g,"")),t},{})}return{lang:r,configuration:e}},l=(t,e)=>{if(Array.isArray(t)||!Object.keys(e).length)return!1;if("code"===t.type){const{lang:r,configuration:n}=g(t.lang);if(e["string"==typeof n.tab?a(n.tab):r]||!n.switcher)return!0}return"space"!==t.type&&"code"!==t.type},p=(t,e,r)=>{let s=t;const i=/^(https?:\/\/|\/)/.test(t);if(r&&!i){const i=r.find(t=>t.clientPath===e);if(i){const e=n(o(i.origPath),t).replace(/\\/g,"/"),a=r.find(t=>t.origPath===e);a&&(s=a?.clientPath)}}return{href:s,external:i}},u=t=>{const e=t.raw.match(/^> \[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\n/);if(e){const[r,n]=e,o={...t,raw:t.raw.substring(r.length)};if(o.tokens){const t={...o.tokens[0]};if(t.raw=t.raw.substring(n.length+4),t.text=t.text.substring(n.length+4),t.tokens[0]){const e={...t.tokens[0]};e.raw=e.raw.substring(n.length+4),e.text=e.text.substring(n.length+4),t.tokens[0]=e}o.tokens[0]=t}return{token:o,type:n.toLowerCase()}}return{token:t,type:null}};export{a as formatId,p as formatLinkHref,l as isNewCodeToken,u as parseBlockqoute,g as parseCodeLang,i as parseMarkdown,c as validateComponentName};
1
+ import t from"github-slugger";import e from"gray-matter";import{lexer as r}from"marked";import{join as n,dirname as o}from"path";import{parseTokenText as s}from"../../../core/utils/content-tools.js";const a=n=>{const{content:o}=e(n),a=r(o.trim()),i=new t,c=a.reduce((t,e)=>{if("heading"===e.type&&(2===e.depth||3===e.depth)){const r=s(e);t.push({title:r,id:i.slug(r),token:e,nested:3===e.depth})}return t},[]);return{tokens:a,headings:c}},i=t=>t.toLowerCase().replace(/\W/g,"_").replace(/_+/g,"_"),c=t=>/^[A-Z][a-zA-Z0-9]+$/.test(t),g=t=>{let e={},r=t;const n=t.match(/[a-z]+=("[^"]+"|'[^']+'|[^ ]+)|[a-z]+/g);if(Array.isArray(n)){const[t,...o]=n;r=t,e=o.reduce((t,e)=>{const[r,...n]=e.split("=");return t[r]=!n||(0===n.length||n.join("=").replace(/(^["']|['"]$)/g,"")),t},{})}return{lang:r,configuration:e}},p=(t,e)=>{if(Array.isArray(t)||!Object.keys(e).length)return!1;if("code"===t.type){const{lang:r,configuration:n}=g(t.lang);if(e["string"==typeof n.tab?i(n.tab):r]||!n.switcher)return!0}return"space"!==t.type&&"code"!==t.type},h=(t,e,r)=>{let s=t;const a=/^(https?:\/\/|\/)/.test(t);if(r&&!a){const a=new URL(t,"http://r"),i=r.find(t=>t.clientPath===e);if(i){const t=n(o(i.origPath),a.pathname).replace(/\\/g,"/"),e=r.find(e=>e.origPath===t);e&&(a.pathname=e.clientPath,s=a.toString().replace("http://r",""))}}return{href:s,external:a}},l=t=>{const e=t.raw.match(/^> \[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\n/);if(e){const[r,n]=e,o={...t,raw:t.raw.substring(r.length)};if(o.tokens){const t={...o.tokens[0]};if(t.raw=t.raw.substring(n.length+4),t.text=t.text.substring(n.length+4),t.tokens[0]){const e={...t.tokens[0]};e.raw=e.raw.substring(n.length+4),e.text=e.text.substring(n.length+4),t.tokens[0]=e}o.tokens[0]=t}return{token:o,type:n.toLowerCase()}}return{token:t,type:null}};export{i as formatId,h as formatLinkHref,p as isNewCodeToken,l as parseBlockqoute,g as parseCodeLang,a as parseMarkdown,c as validateComponentName};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/elements/article/utils.ts"],"sourcesContent":["import GithubSlugger from \"github-slugger\";\nimport matter from \"gray-matter\";\nimport { lexer, type Tokens, type Token } from \"marked\";\nimport { dirname, join } from \"path\";\n\nimport { type BlockquoteType } from \"@src/components/ui/blockquote\";\nimport { parseTokenText } from \"@src/core/utils/content-tools\";\n\nimport { type PagesType } from \"./types\";\n\nexport type AnchorData = {\n title: string;\n id: string;\n nested: boolean;\n token: Token;\n};\n\nexport const parseMarkdown = (content: string) => {\n const { content: matterContent } = matter(content);\n const tokens = lexer(matterContent.trim());\n\n const slugger = new GithubSlugger();\n const headings = tokens.reduce<AnchorData[]>((acc, token) => {\n if (token.type === \"heading\" && (token.depth === 2 || token.depth === 3)) {\n const title = parseTokenText(token);\n acc.push({\n title,\n id: slugger.slug(title),\n token,\n nested: token.depth === 3,\n });\n }\n return acc;\n }, []);\n\n return { tokens, headings };\n};\n\nexport const formatId = (raw: string) => {\n return raw.toLowerCase().replace(/\\W/g, \"_\").replace(/_+/g, \"_\");\n};\n\nexport const validateComponentName = (name: string) => {\n return /^[A-Z][a-zA-Z0-9]+$/.test(name);\n};\n\nexport const parseCodeLang = (raw: string) => {\n let configuration: { [key: string]: string | boolean } = {};\n let lang: string = raw;\n\n const match = raw.match(/[a-z]+=(\"[^\"]+\"|'[^']+'|[^ ]+)|[a-z]+/g);\n if (Array.isArray(match)) {\n const [language, ...modifiers] = match as string[];\n lang = language;\n configuration = modifiers.reduce<{ [key: string]: string | boolean }>((acc, cur) => {\n const [key, ...value] = cur.split(\"=\");\n if (value) {\n acc[key] = value.length === 0 ? true : value.join(\"=\").replace(/(^[\"']|['\"]$)/g, \"\");\n } else {\n acc[key] = true;\n }\n return acc;\n }, {});\n }\n return { lang, configuration };\n};\n\nexport const isNewCodeToken = (\n token: Token | Token[],\n codeQueue: { [lang: string]: { element: React.ReactNode; tabName: string } },\n) => {\n if (Array.isArray(token) || !Object.keys(codeQueue).length) return false;\n\n if (token.type === \"code\") {\n const { lang, configuration } = parseCodeLang(token.lang);\n const tabKey = typeof configuration.tab === \"string\" ? formatId(configuration.tab) : lang;\n if (codeQueue[tabKey] || !configuration.switcher) return true;\n }\n\n if (token.type !== \"space\" && token.type !== \"code\") return true;\n\n return false;\n};\n\nexport const formatLinkHref = (href: string, pathname: string, pages?: PagesType) => {\n let finalHref: string = href;\n const external = /^(https?:\\/\\/|\\/)/.test(href);\n\n if (pages && !external) {\n const currentPageData = pages.find((item) => item.clientPath === pathname);\n\n if (currentPageData) {\n const linkOrigPath = join(dirname(currentPageData.origPath), href).replace(/\\\\/g, \"/\");\n const linkData = pages.find((item) => item.origPath === linkOrigPath);\n\n if (linkData) {\n finalHref = linkData?.clientPath;\n }\n }\n }\n return { href: finalHref, external };\n};\n\nexport const parseBlockqoute = (token: Tokens.Blockquote | Tokens.Generic) => {\n const typeMatch = token.raw.match(/^> \\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\]\\n/);\n if (typeMatch) {\n const [raw, type] = typeMatch;\n const newToken = { ...token, raw: token.raw.substring(raw.length) };\n if (newToken.tokens) {\n const firstToken = { ...newToken.tokens[0] } as Tokens.Paragraph;\n firstToken.raw = firstToken.raw.substring(type.length + 4);\n firstToken.text = firstToken.text.substring(type.length + 4);\n if (firstToken.tokens[0]) {\n const firstSubtoken = { ...firstToken.tokens[0] } as Tokens.Paragraph;\n firstSubtoken.raw = firstSubtoken.raw.substring(type.length + 4);\n firstSubtoken.text = firstSubtoken.text.substring(type.length + 4);\n firstToken.tokens[0] = firstSubtoken;\n }\n newToken.tokens[0] = firstToken;\n }\n\n return {\n token: newToken,\n type: type.toLowerCase() as BlockquoteType,\n };\n }\n\n return { token, type: null };\n};\n"],"names":["parseMarkdown","content","matterContent","matter","tokens","lexer","trim","slugger","GithubSlugger","headings","reduce","acc","token","type","depth","title","parseTokenText","push","id","slug","nested","formatId","raw","toLowerCase","replace","validateComponentName","name","test","parseCodeLang","configuration","lang","match","Array","isArray","language","modifiers","cur","key","value","split","length","join","isNewCodeToken","codeQueue","Object","keys","tab","switcher","formatLinkHref","href","pathname","pages","finalHref","external","currentPageData","find","item","clientPath","linkOrigPath","dirname","origPath","linkData","parseBlockqoute","typeMatch","newToken","substring","firstToken","text","firstSubtoken"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/elements/article/utils.ts"],"sourcesContent":["import GithubSlugger from \"github-slugger\";\nimport matter from \"gray-matter\";\nimport { lexer, type Tokens, type Token } from \"marked\";\nimport { dirname, join } from \"path\";\n\nimport { type BlockquoteType } from \"@src/components/ui/blockquote\";\nimport { parseTokenText } from \"@src/core/utils/content-tools\";\n\nimport { type PagesType } from \"./types\";\n\nexport type AnchorData = {\n title: string;\n id: string;\n nested: boolean;\n token: Token;\n};\n\nexport const parseMarkdown = (content: string) => {\n const { content: matterContent } = matter(content);\n const tokens = lexer(matterContent.trim());\n\n const slugger = new GithubSlugger();\n const headings = tokens.reduce<AnchorData[]>((acc, token) => {\n if (token.type === \"heading\" && (token.depth === 2 || token.depth === 3)) {\n const title = parseTokenText(token);\n acc.push({\n title,\n id: slugger.slug(title),\n token,\n nested: token.depth === 3,\n });\n }\n return acc;\n }, []);\n\n return { tokens, headings };\n};\n\nexport const formatId = (raw: string) => {\n return raw.toLowerCase().replace(/\\W/g, \"_\").replace(/_+/g, \"_\");\n};\n\nexport const validateComponentName = (name: string) => {\n return /^[A-Z][a-zA-Z0-9]+$/.test(name);\n};\n\nexport const parseCodeLang = (raw: string) => {\n let configuration: { [key: string]: string | boolean } = {};\n let lang: string = raw;\n\n const match = raw.match(/[a-z]+=(\"[^\"]+\"|'[^']+'|[^ ]+)|[a-z]+/g);\n if (Array.isArray(match)) {\n const [language, ...modifiers] = match as string[];\n lang = language;\n configuration = modifiers.reduce<{ [key: string]: string | boolean }>((acc, cur) => {\n const [key, ...value] = cur.split(\"=\");\n if (value) {\n acc[key] = value.length === 0 ? true : value.join(\"=\").replace(/(^[\"']|['\"]$)/g, \"\");\n } else {\n acc[key] = true;\n }\n return acc;\n }, {});\n }\n return { lang, configuration };\n};\n\nexport const isNewCodeToken = (\n token: Token | Token[],\n codeQueue: { [lang: string]: { element: React.ReactNode; tabName: string } },\n) => {\n if (Array.isArray(token) || !Object.keys(codeQueue).length) return false;\n\n if (token.type === \"code\") {\n const { lang, configuration } = parseCodeLang(token.lang);\n const tabKey = typeof configuration.tab === \"string\" ? formatId(configuration.tab) : lang;\n if (codeQueue[tabKey] || !configuration.switcher) return true;\n }\n\n if (token.type !== \"space\" && token.type !== \"code\") return true;\n\n return false;\n};\n\nexport const formatLinkHref = (href: string, currentPathname: string, pages?: PagesType) => {\n let finalHref: string = href;\n const external = /^(https?:\\/\\/|\\/)/.test(href);\n\n if (pages && !external) {\n const pseudoUrl = new URL(href, \"http://r\");\n const currentPageData = pages.find((item) => item.clientPath === currentPathname);\n\n if (currentPageData) {\n const linkOrigPath = join(dirname(currentPageData.origPath), pseudoUrl.pathname).replace(/\\\\/g, \"/\");\n const linkData = pages.find((item) => item.origPath === linkOrigPath);\n\n if (linkData) {\n pseudoUrl.pathname = linkData.clientPath;\n finalHref = pseudoUrl.toString().replace(\"http://r\", \"\");\n }\n }\n }\n return { href: finalHref, external };\n};\n\nexport const parseBlockqoute = (token: Tokens.Blockquote | Tokens.Generic) => {\n const typeMatch = token.raw.match(/^> \\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\]\\n/);\n if (typeMatch) {\n const [raw, type] = typeMatch;\n const newToken = { ...token, raw: token.raw.substring(raw.length) };\n if (newToken.tokens) {\n const firstToken = { ...newToken.tokens[0] } as Tokens.Paragraph;\n firstToken.raw = firstToken.raw.substring(type.length + 4);\n firstToken.text = firstToken.text.substring(type.length + 4);\n if (firstToken.tokens[0]) {\n const firstSubtoken = { ...firstToken.tokens[0] } as Tokens.Paragraph;\n firstSubtoken.raw = firstSubtoken.raw.substring(type.length + 4);\n firstSubtoken.text = firstSubtoken.text.substring(type.length + 4);\n firstToken.tokens[0] = firstSubtoken;\n }\n newToken.tokens[0] = firstToken;\n }\n\n return {\n token: newToken,\n type: type.toLowerCase() as BlockquoteType,\n };\n }\n\n return { token, type: null };\n};\n"],"names":["parseMarkdown","content","matterContent","matter","tokens","lexer","trim","slugger","GithubSlugger","headings","reduce","acc","token","type","depth","title","parseTokenText","push","id","slug","nested","formatId","raw","toLowerCase","replace","validateComponentName","name","test","parseCodeLang","configuration","lang","match","Array","isArray","language","modifiers","cur","key","value","split","length","join","isNewCodeToken","codeQueue","Object","keys","tab","switcher","formatLinkHref","href","currentPathname","pages","finalHref","external","pseudoUrl","URL","currentPageData","find","item","clientPath","linkOrigPath","dirname","origPath","pathname","linkData","toString","parseBlockqoute","typeMatch","newToken","substring","firstToken","text","firstSubtoken"],"mappings":"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"}
package/lib/styles.css CHANGED
@@ -422,6 +422,10 @@
422
422
  --r-cl-60: #86181d;
423
423
  --r-cl-61: #144620;
424
424
  --r-cl-62: #c24e00;
425
+ }.r-page-container {
426
+ min-height: calc(100dvh - var(--r-header-height));
427
+ overflow-wrap: break-word;
428
+ box-sizing: border-box;
425
429
  }.r-docs-container {
426
430
  min-height: calc(100dvh - var(--r-header-height));
427
431
  overflow-wrap: break-word;
@@ -458,10 +462,6 @@
458
462
  grid-template-columns: 760px 220px;
459
463
  grid-template-rows: auto 1fr auto;
460
464
  }
461
- }.r-page-container {
462
- min-height: calc(100dvh - var(--r-header-height));
463
- overflow-wrap: break-word;
464
- box-sizing: border-box;
465
465
  }.keylink-to-content {
466
466
  position: absolute !important;
467
467
  top: 8px;
@@ -469,55 +469,6 @@
469
469
  z-index: 1001;
470
470
  }.keylink-to-navigation {
471
471
  margin-top: -40px;
472
- }.r-article {
473
- padding: 20px 0 80px;
474
- grid-area: content;
475
- }
476
- @media screen and (width >= 1180px) {
477
- .r-article {
478
- padding: 32px 0 80px;
479
- }
480
- }
481
- .r-article > *:first-child {
482
- margin-top: 0;
483
- }
484
-
485
- .r-checkbox {
486
- cursor: pointer;
487
- width: 20px;
488
- height: 20px;
489
- margin: 4px;
490
- vertical-align: middle;
491
- box-sizing: border-box;
492
- }
493
-
494
- .r-label {
495
- cursor: pointer;
496
- }
497
-
498
- .r-task-ol,
499
- .r-task-ul {
500
- list-style: none;
501
- }
502
-
503
- .r-task-label {
504
- display: block;
505
- width: 100%;
506
- padding-top: 2px;
507
- padding-bottom: 2px;
508
- box-sizing: border-box;
509
- }
510
- .r-task-label:hover .r-checkbox {
511
- filter: brightness(0.8);
512
- }
513
-
514
- .r-task-li.r-task-li {
515
- margin-block-start: 2px;
516
- margin-block-end: 2px;
517
- }
518
-
519
- .r-label-text {
520
- vertical-align: middle;
521
472
  }.r-sidebar {
522
473
  grid-area: sidebar;
523
474
  box-sizing: border-box;
@@ -792,6 +743,55 @@
792
743
 
793
744
  .r-sidebar-drop[open] > .r-sidebar-drop-btn > .r-sidebar-drop-icon {
794
745
  transform: rotate(90deg);
746
+ }.r-article {
747
+ padding: 20px 0 80px;
748
+ grid-area: content;
749
+ }
750
+ @media screen and (width >= 1180px) {
751
+ .r-article {
752
+ padding: 32px 0 80px;
753
+ }
754
+ }
755
+ .r-article > *:first-child {
756
+ margin-top: 0;
757
+ }
758
+
759
+ .r-checkbox {
760
+ cursor: pointer;
761
+ width: 20px;
762
+ height: 20px;
763
+ margin: 4px;
764
+ vertical-align: middle;
765
+ box-sizing: border-box;
766
+ }
767
+
768
+ .r-label {
769
+ cursor: pointer;
770
+ }
771
+
772
+ .r-task-ol,
773
+ .r-task-ul {
774
+ list-style: none;
775
+ }
776
+
777
+ .r-task-label {
778
+ display: block;
779
+ width: 100%;
780
+ padding-top: 2px;
781
+ padding-bottom: 2px;
782
+ box-sizing: border-box;
783
+ }
784
+ .r-task-label:hover .r-checkbox {
785
+ filter: brightness(0.8);
786
+ }
787
+
788
+ .r-task-li.r-task-li {
789
+ margin-block-start: 2px;
790
+ margin-block-end: 2px;
791
+ }
792
+
793
+ .r-label-text {
794
+ vertical-align: middle;
795
795
  }.r-header-menu {
796
796
  display: flex;
797
797
  justify-content: flex-end;
@@ -996,6 +996,31 @@
996
996
  font-size: 14px;
997
997
  color: var(--r-neutral-600);
998
998
  margin: 12px 0 0;
999
+ }.r-header-social {
1000
+ display: flex;
1001
+ flex: 1;
1002
+ justify-content: flex-end;
1003
+ }
1004
+ @media screen and (width >= 1024px) {
1005
+ .r-header-social {
1006
+ flex: none;
1007
+ justify-content: unset;
1008
+ }
1009
+ }
1010
+
1011
+ .r-header-social-git {
1012
+ color: var(--r-neutral-700);
1013
+ transition: color 0.2s;
1014
+ }
1015
+ .r-header-social-git:hover, .r-header-social-git:focus {
1016
+ color: var(--r-neutral-950);
1017
+ }.r-container {
1018
+ max-width: 1180px;
1019
+ padding-right: 12px;
1020
+ padding-left: 12px;
1021
+ margin-right: auto;
1022
+ margin-left: auto;
1023
+ box-sizing: border-box;
999
1024
  }.r-dropdown {
1000
1025
  position: relative;
1001
1026
  color: var(--r-neutral-600);
@@ -1075,31 +1100,6 @@
1075
1100
 
1076
1101
  .r-dropdown-link._active {
1077
1102
  color: var(--r-primary-700);
1078
- }.r-header-social {
1079
- display: flex;
1080
- flex: 1;
1081
- justify-content: flex-end;
1082
- }
1083
- @media screen and (width >= 1024px) {
1084
- .r-header-social {
1085
- flex: none;
1086
- justify-content: unset;
1087
- }
1088
- }
1089
-
1090
- .r-header-social-git {
1091
- color: var(--r-neutral-700);
1092
- transition: color 0.2s;
1093
- }
1094
- .r-header-social-git:hover, .r-header-social-git:focus {
1095
- color: var(--r-neutral-950);
1096
- }.r-container {
1097
- max-width: 1180px;
1098
- padding-right: 12px;
1099
- padding-left: 12px;
1100
- margin-right: auto;
1101
- margin-left: auto;
1102
- box-sizing: border-box;
1103
1103
  }.r-theme-switcher {
1104
1104
  position: relative;
1105
1105
  display: flex;
@@ -1191,6 +1191,47 @@
1191
1191
  user-select: none;
1192
1192
  pointer-events: none;
1193
1193
  box-sizing: border-box;
1194
+ }.r-breadcrumbs {
1195
+ grid-area: breadcrumbs;
1196
+ list-style: none;
1197
+ margin: 0;
1198
+ padding: 20px 0 0;
1199
+ line-height: 2;
1200
+ }
1201
+ @media screen and (width >= 768px) {
1202
+ .r-breadcrumbs {
1203
+ padding: 32px 0 0;
1204
+ }
1205
+ }
1206
+
1207
+ .r-breadcrumb {
1208
+ display: inline;
1209
+ }
1210
+
1211
+ .r-breadcrumb._previous::after {
1212
+ content: "/";
1213
+ font-weight: 600;
1214
+ margin-inline: 8px;
1215
+ }
1216
+
1217
+ .r-breadcrumb-link {
1218
+ color: var(--r-neutral-700);
1219
+ text-decoration: none;
1220
+ }
1221
+ .r-breadcrumb-link:hover {
1222
+ color: var(--r-primary-800);
1223
+ }
1224
+
1225
+ .r-breadcrumb-link,
1226
+ .r-breadcrumb-title {
1227
+ display: inline;
1228
+ padding: 6px 0;
1229
+ margin: 0;
1230
+ }
1231
+
1232
+ .r-breadcrumb-title {
1233
+ color: var(--r-neutral-950);
1234
+ font-weight: 600;
1194
1235
  }.r-contents {
1195
1236
  grid-area: contents;
1196
1237
  }
@@ -1424,47 +1465,6 @@
1424
1465
  }
1425
1466
  .r-contents-git:hover {
1426
1467
  color: var(--r-neutral-900);
1427
- }.r-breadcrumbs {
1428
- grid-area: breadcrumbs;
1429
- list-style: none;
1430
- margin: 0;
1431
- padding: 20px 0 0;
1432
- line-height: 2;
1433
- }
1434
- @media screen and (width >= 768px) {
1435
- .r-breadcrumbs {
1436
- padding: 32px 0 0;
1437
- }
1438
- }
1439
-
1440
- .r-breadcrumb {
1441
- display: inline;
1442
- }
1443
-
1444
- .r-breadcrumb._previous::after {
1445
- content: "/";
1446
- font-weight: 600;
1447
- margin-inline: 8px;
1448
- }
1449
-
1450
- .r-breadcrumb-link {
1451
- color: var(--r-neutral-700);
1452
- text-decoration: none;
1453
- }
1454
- .r-breadcrumb-link:hover {
1455
- color: var(--r-primary-800);
1456
- }
1457
-
1458
- .r-breadcrumb-link,
1459
- .r-breadcrumb-title {
1460
- display: inline;
1461
- padding: 6px 0;
1462
- margin: 0;
1463
- }
1464
-
1465
- .r-breadcrumb-title {
1466
- color: var(--r-neutral-950);
1467
- font-weight: 600;
1468
1468
  }.r-pagination {
1469
1469
  grid-area: pagination;
1470
1470
  display: grid;
@@ -1819,6 +1819,22 @@
1819
1819
 
1820
1820
  .r-tab-header-code {
1821
1821
  font-family: var(--monospace-font, monospace, monospace);
1822
+ }.r-kbd-container {
1823
+ display: flex;
1824
+ gap: 4px;
1825
+ font-size: 14px;
1826
+ cursor: pointer;
1827
+ }
1828
+ .r-kbd-container:hover {
1829
+ color: var(--r-neutral-950);
1830
+ }.r-kbd-key {
1831
+ background-color: var(--r-neutral-200);
1832
+ font-size: 12px;
1833
+ border-radius: 4px;
1834
+ padding: 5px 8px;
1835
+ min-width: 24px;
1836
+ text-align: center;
1837
+ box-sizing: border-box;
1822
1838
  }.r-modal {
1823
1839
  position: fixed;
1824
1840
  left: 0;
@@ -1854,22 +1870,6 @@
1854
1870
  .r-modal._visible {
1855
1871
  transform: translateX(-50%) scale(1);
1856
1872
  }
1857
- }.r-kbd-container {
1858
- display: flex;
1859
- gap: 4px;
1860
- font-size: 14px;
1861
- cursor: pointer;
1862
- }
1863
- .r-kbd-container:hover {
1864
- color: var(--r-neutral-950);
1865
- }.r-kbd-key {
1866
- background-color: var(--r-neutral-200);
1867
- font-size: 12px;
1868
- border-radius: 4px;
1869
- padding: 5px 8px;
1870
- min-width: 24px;
1871
- text-align: center;
1872
- box-sizing: border-box;
1873
1873
  }.r-copy-button {
1874
1874
  position: relative;
1875
1875
  padding: 8px;
@@ -1915,32 +1915,6 @@
1915
1915
 
1916
1916
  .r-copy-button-svg {
1917
1917
  display: block;
1918
- }.r-copy-text {
1919
- position: relative;
1920
- cursor: pointer;
1921
- background: none;
1922
- border: 0;
1923
- padding: 0;
1924
- font: inherit;
1925
- }
1926
- .r-copy-text:hover {
1927
- color: var(--r-neutral-950);
1928
- }
1929
- .r-copy-text::before {
1930
- content: "";
1931
- position: absolute;
1932
- bottom: -2px;
1933
- left: 0;
1934
- width: 100%;
1935
- height: 1px;
1936
- background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
1937
- transition: background 0.2s;
1938
- box-sizing: border-box;
1939
- }
1940
-
1941
- .r-copy-text:active,
1942
- .r-copy-text._active {
1943
- color: var(--r-success);
1944
1918
  }.r-content-link {
1945
1919
  text-decoration: none;
1946
1920
  color: var(--r-link);
@@ -1983,16 +1957,32 @@
1983
1957
  background-color: currentColor;
1984
1958
  border-radius: 0 0 0 4px;
1985
1959
  box-sizing: border-box;
1986
- }.r-ol {
1987
- padding-inline-start: 0;
1988
- list-style-position: inside;
1989
- margin-block-start: 1em;
1990
- margin-block-end: 1em;
1991
- }.r-ul {
1992
- padding-inline-start: 0;
1993
- list-style-position: inside;
1994
- margin-block-start: 1em;
1995
- margin-block-end: 1em;
1960
+ }.r-copy-text {
1961
+ position: relative;
1962
+ cursor: pointer;
1963
+ background: none;
1964
+ border: 0;
1965
+ padding: 0;
1966
+ font: inherit;
1967
+ }
1968
+ .r-copy-text:hover {
1969
+ color: var(--r-neutral-950);
1970
+ }
1971
+ .r-copy-text::before {
1972
+ content: "";
1973
+ position: absolute;
1974
+ bottom: -2px;
1975
+ left: 0;
1976
+ width: 100%;
1977
+ height: 1px;
1978
+ background: linear-gradient(to right, currentColor 30%, transparent 0%, transparent 80%, currentColor 80%) repeat-x 0px/8px;
1979
+ transition: background 0.2s;
1980
+ box-sizing: border-box;
1981
+ }
1982
+
1983
+ .r-copy-text:active,
1984
+ .r-copy-text._active {
1985
+ color: var(--r-success);
1996
1986
  }.r-li {
1997
1987
  line-height: 1.8;
1998
1988
  margin-block-start: 6px;
@@ -2004,6 +1994,16 @@
2004
1994
  padding-inline-start: 20px;
2005
1995
  margin-block-start: 6px;
2006
1996
  margin-block-end: 6px;
1997
+ }.r-ol {
1998
+ padding-inline-start: 0;
1999
+ list-style-position: inside;
2000
+ margin-block-start: 1em;
2001
+ margin-block-end: 1em;
2002
+ }.r-ul {
2003
+ padding-inline-start: 0;
2004
+ list-style-position: inside;
2005
+ margin-block-start: 1em;
2006
+ margin-block-end: 1em;
2007
2007
  }.r-table {
2008
2008
  min-width: 100%;
2009
2009
  text-align: left;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robindoc",
3
- "version": "3.3.1",
3
+ "version": "3.3.3",
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": {