@blackwork/docs 0.4.0 → 0.4.2
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/dist/_virtual/_rolldown/runtime.cjs +1 -1
- package/dist/config/defaults.cjs +1 -1
- package/dist/config/defaults.mjs +1 -1
- package/dist/config/define-config.cjs +1 -1
- package/dist/config/define-config.mjs +1 -1
- package/dist/config/define-docs-config.cjs +1 -1
- package/dist/config/define-docs-config.mjs +1 -1
- package/dist/config/load-content-config.cjs +1 -1
- package/dist/config/load-content-config.mjs +1 -1
- package/dist/export/process-exported-docs.cjs +1 -1
- package/dist/export/process-exported-docs.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/mdx/default-docs-components.cjs +1 -1
- package/dist/mdx/default-docs-components.mjs +1 -1
- package/dist/mdx/merge-docs-components.cjs +1 -1
- package/dist/mdx/merge-docs-components.mjs +1 -1
- package/dist/metadata/create-doc-metadata.cjs +1 -1
- package/dist/metadata/create-doc-metadata.mjs +1 -1
- package/dist/navigation/build-locale-links.cjs +1 -1
- package/dist/navigation/build-locale-links.mjs +1 -1
- package/dist/navigation/build-pager.cjs +1 -1
- package/dist/navigation/build-pager.mjs +1 -1
- package/dist/navigation/build-sidebar.cjs +1 -1
- package/dist/navigation/build-sidebar.mjs +1 -1
- package/dist/navigation/resolve-sidebar.cjs +1 -1
- package/dist/navigation/resolve-sidebar.mjs +1 -1
- package/dist/next/context.cjs +1 -1
- package/dist/next/context.mjs +1 -1
- package/dist/next/document-lang-sync.cjs +1 -1
- package/dist/next/document-lang-sync.mjs +1 -1
- package/dist/next/load-doc-content.cjs +1 -1
- package/dist/next/load-doc-content.mjs +1 -1
- package/dist/next/load-generated-manifest.cjs +1 -1
- package/dist/next/load-generated-manifest.mjs +1 -1
- package/dist/next/metadata.cjs +1 -1
- package/dist/next/metadata.mjs +1 -1
- package/dist/next/page.cjs +1 -1
- package/dist/next/page.mjs +1 -1
- package/dist/next/render-route.cjs +1 -1
- package/dist/next/render-route.mjs +1 -1
- package/dist/next/resolve-document-lang.cjs +1 -1
- package/dist/next/resolve-document-lang.mjs +1 -1
- package/dist/next/root-layout.cjs +1 -1
- package/dist/next/root-layout.mjs +1 -1
- package/dist/next-plugin/generate.cjs +1 -1
- package/dist/next-plugin/generate.mjs +1 -1
- package/dist/next.cjs +1 -1
- package/dist/next.mjs +1 -1
- package/dist/routing/build-static-params.cjs +1 -1
- package/dist/routing/build-static-params.mjs +1 -1
- package/dist/routing/resolve-docs-route.cjs +1 -1
- package/dist/routing/resolve-docs-route.mjs +1 -1
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.mjs +1 -1
- package/dist/source/build-docs-source.cjs +1 -1
- package/dist/source/build-docs-source.mjs +1 -1
- package/dist/source/collect-docs-manifest.cjs +1 -1
- package/dist/source/collect-docs-manifest.mjs +1 -1
- package/dist/source/create-docs-source-from-manifest.cjs +1 -1
- package/dist/source/create-docs-source-from-manifest.mjs +1 -1
- package/dist/source/create-docs-source.cjs +1 -1
- package/dist/source/create-docs-source.mjs +1 -1
- package/dist/tailwind.css +16 -0
- package/dist/theme/components/content-layout.cjs +1 -1
- package/dist/theme/components/content-layout.mjs +1 -1
- package/dist/theme/components/content-shell.cjs +1 -1
- package/dist/theme/components/content-shell.mjs +1 -1
- package/dist/theme/components/docs-rail-scroll-state.cjs +1 -1
- package/dist/theme/components/docs-rail-scroll-state.mjs +1 -1
- package/dist/theme/components/docs-rail-scroll.cjs +1 -1
- package/dist/theme/components/docs-rail-scroll.mjs +1 -1
- package/dist/theme/components/docs-scroll-reset.cjs +1 -1
- package/dist/theme/components/docs-scroll-reset.mjs +1 -1
- package/dist/theme/components/docs-scroll-to-top.cjs +1 -1
- package/dist/theme/components/docs-scroll-to-top.mjs +1 -1
- package/dist/theme/components/docs-shell.cjs +1 -1
- package/dist/theme/components/docs-shell.mjs +1 -1
- package/dist/theme/components/docs-toc-geometry.cjs +1 -1
- package/dist/theme/components/docs-toc-geometry.mjs +1 -1
- package/dist/theme/components/docs-toc.cjs +2 -2
- package/dist/theme/components/docs-toc.mjs +2 -2
- package/dist/theme/components/floating-actions.cjs +1 -1
- package/dist/theme/components/floating-actions.mjs +1 -1
- package/dist/theme/components/footer.cjs +1 -1
- package/dist/theme/components/footer.mjs +1 -1
- package/dist/theme/components/header.cjs +1 -1
- package/dist/theme/components/header.mjs +1 -1
- package/dist/theme/components/home-shell.cjs +1 -1
- package/dist/theme/components/home-shell.mjs +1 -1
- package/dist/theme/components/link.cjs +1 -1
- package/dist/theme/components/link.mjs +1 -1
- package/dist/theme/components/shell-shared.cjs +1 -1
- package/dist/theme/components/shell-shared.mjs +1 -1
- package/dist/theme/create-home-data.cjs +1 -1
- package/dist/theme/create-home-data.mjs +1 -1
- package/dist/theme/slots.cjs +1 -1
- package/dist/theme/slots.mjs +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.mjs +1 -1
- package/package.json +2 -2
package/dist/config/defaults.cjs
CHANGED
package/dist/config/defaults.mjs
CHANGED
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
package/dist/next/context.cjs
CHANGED
package/dist/next/context.mjs
CHANGED
package/dist/next/metadata.cjs
CHANGED
package/dist/next/metadata.mjs
CHANGED
package/dist/next/page.cjs
CHANGED
package/dist/next/page.mjs
CHANGED
package/dist/next.cjs
CHANGED
package/dist/next.mjs
CHANGED
package/dist/runtime.cjs
CHANGED
package/dist/runtime.mjs
CHANGED
package/dist/tailwind.css
CHANGED
|
@@ -1 +1,17 @@
|
|
|
1
1
|
@source './';
|
|
2
|
+
|
|
3
|
+
@layer components {
|
|
4
|
+
:where(video) {
|
|
5
|
+
background-color: #000;
|
|
6
|
+
object-fit: contain;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.dark :where(.shiki),
|
|
10
|
+
.dark :where(.shiki) span {
|
|
11
|
+
color: var(--shiki-dark) !important;
|
|
12
|
+
background-color: var(--shiki-dark-bg) !important;
|
|
13
|
+
font-style: var(--shiki-dark-font-style) !important;
|
|
14
|
+
font-weight: var(--shiki-dark-font-weight) !important;
|
|
15
|
+
text-decoration: var(--shiki-dark-text-decoration) !important;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @blackwork/docs
|
|
3
|
-
* version: v0.4.
|
|
3
|
+
* version: v0.4.2
|
|
4
4
|
* description: Next-first documentation framework for Blackwork projects.
|
|
5
5
|
* author: chengpeiquan <chengpeiquan@chengpeiquan.com>
|
|
6
6
|
* homepage: https://chengpeiquan.com
|
|
7
7
|
* license: MIT
|
|
8
8
|
*/
|
|
9
|
-
"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./docs-toc-geometry.cjs`),n=require(`./floating-actions.cjs`);let r=require(`blackwork`),i=require(`react`);i=e.__toESM(i);let a=require(`react/jsx-runtime`),o=require(`blackwork/icons`);const s=`On This Page`,c=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),l=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),u=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},d=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),f=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),p=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},m=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},h=({itemBottom:e,itemTop:t,margin:n,scrollHeight:r,scrollTop:i,viewportHeight:a})=>{let o=i+n,s=i+a-n,c=Math.max(0,r-a);return t<o?Math.max(0,t-n):e>s?Math.min(c,e-a+n):i},g=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-m(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+m(r.paddingTop)}]})},_=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},v=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},y=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,b=e=>{let t=C(e),[n,r,a]=w(t,e),o=(0,i.useMemo)(()=>new Set(t),[t]),s=(0,i.useId)(),[c,l]=(0,i.useState)(0);return{activeIds:t,activeIdSet:o,listId:s,listRef:n,measurement:r,scrollTop:c,setScrollTop:l,track:a}},x=({activeIds:e,activeIdSet:n,headings:o,listClassName:s,listId:f,listRef:p,measurement:m,onSelect:g,scrollTop:_,setScrollTop:v,track:y,wrapperClassName:b})=>((0,i.useEffect)(()=>{let t=p.current,n=e[0];if(!t||!n)return;let r=Array.from(t.querySelectorAll(`a[data-heading-id]`)).find(e=>e.dataset.headingId===n);if(!r)return;let i=h({itemBottom:r.offsetTop+r.offsetHeight,itemTop:r.offsetTop,margin:16,scrollHeight:t.scrollHeight,scrollTop:t.scrollTop,viewportHeight:t.clientHeight});i!==t.scrollTop&&t.scrollTo({top:i})},[e,p]),(0,a.jsxs)(`div`,{className:(0,r.cn)(`relative`,b),children:[(0,a.jsxs)(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:l(m,_),children:[(0,a.jsx)(`svg`,{"data-docs-toc-track-path":`true`,height:m?.height??1,viewBox:`0 0 ${m?.width??1} ${m?.height??1}`,width:m?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:u(y),children:(0,a.jsx)(`path`,{d:m?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),(0,a.jsx)(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:d(m,y)})]}),(0,a.jsx)(`ol`,{id:f,ref:p,className:(0,r.cn)(`flex flex-col overflow-auto py-1 [scrollbar-width:none]`,s),onScroll:e=>{v(e.currentTarget.scrollTop)},children:o.map((e,r)=>{let i=n.has(e.id),s=t.getTocGuideOffset(e.depth),l=r>0?t.getTocGuideOffset(o[r-1].depth):s,u=r+1<o.length?t.getTocGuideOffset(o[r+1].depth):s;return(0,a.jsx)(`li`,{children:(0,a.jsxs)(`a`,{href:`#${e.id}`,"data-active":i?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:c(),style:{paddingInlineStart:`${t.getTocItemPadding(e.depth)}px`},onClick:g,children:[s===l?null:(0,a.jsx)(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(s,l)} 0 ${Math.abs(l-s)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(s,l)}px`,top:`-6px`,width:`${Math.abs(l-s)+1}px`,zIndex:-1},children:(0,a.jsx)(`path`,{d:`M ${l} 0 C ${l} 8 ${s} 4 ${s} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),(0,a.jsx)(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:s===u?`0px`:`6px`,insetInlineStart:`${s}px`,top:s===l?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})),S=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function C(e){let[t,n]=(0,i.useState)([]);return(0,i.useEffect)(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=f([...t.values()]);if(r.length===0){let n=p([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function w(e,n){let r=(0,i.useRef)(null),[a,o]=(0,i.useState)(null),[s,c]=(0,i.useState)(null),l=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=r.current;if(!e)return;let i=0,a=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=t.buildTocTrackGeometry(g(e,n)),i={...r,itemLineLengths:_(r.positions,r.path)};o(e=>v(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(a);return s?.observe(e),window.addEventListener(`resize`,a),a(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,a)}},[n]),(0,i.useEffect)(()=>{let t=0;return t=requestAnimationFrame(()=>{if(!a||e.length===0){l.current=null,c(e=>e===null?e:null);return}let[t,n]=S(e,a,l.current);l.current=n,c(e=>y(e,t)?e:t)}),()=>{cancelAnimationFrame(t)}},[e,a]),[r,a,s]}const T=({className:e,collapseDirection:t=`left`,collapseLabel:n=`Collapse outline`,collapseEnabled:c=!1,defaultCollapsed:l=!1,dock:u=`sticky`,expandLabel:d=`Expand outline`,headings:f,minHeadings:p=1,title:m=s})=>{let h=b(f),[g,_]=(0,i.useState)(l),v=g?d:n,y=t===`right`?`right-0`:`left-0`,S=c?t===`right`?`pr-10`:`pl-10`:void 0;return f.length<p?null:(0,a.jsx)(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":c?`true`:void 0,"data-docs-toc-collapsed":c?String(g):void 0,className:(0,r.cn)(`hidden w-64 xl:block`,u===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:(0,a.jsxs)(`nav`,{"aria-label":m,className:(0,r.cn)(`relative flex w-64 flex-col text-sm`,t===`right`?`ml-auto`:void 0),children:[(0,a.jsxs)(`div`,{inert:c&&g?!0:void 0,"aria-hidden":c&&g?!0:void 0,className:(0,r.cn)(`flex w-64 flex-col gap-3 overflow-hidden transition-opacity duration-200 ease-out motion-reduce:transition-none`,c&&g?`pointer-events-none opacity-0`:`opacity-100`),children:[(0,a.jsx)(`p`,{className:(0,r.cn)(`font-medium text-foreground`,S),children:m}),(0,a.jsx)(x,{...h,headings:f,listClassName:`max-h-[calc(100dvh-8rem)]`})]}),c?(0,a.jsxs)(r.Button,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":h.listId,"aria-label":v,"aria-expanded":!g,title:v,className:(0,r.cn)(y,`absolute top-0 z-10 shrink-0 text-muted-foreground transition-opacity duration-200 ease-out hover:text-foreground hover:opacity-100 motion-reduce:transition-none`,g?`opacity-100`:`opacity-60`),onClick:()=>{_(e=>!e)},children:[(0,a.jsx)(o.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`sr-only`,children:v})]}):null]})})},E=({className:e,headings:t,minHeadings:c=1,openLabel:l=`Open outline`,title:u=s})=>{let d=b(t),[f,p]=(0,i.useState)(!1);return t.length<c?null:(0,a.jsx)(`div`,{className:(0,r.cn)(`xl:hidden`,e),children:(0,a.jsxs)(r.Sheet,{open:f,onOpenChange:p,children:[(0,a.jsx)(r.SheetTrigger,{asChild:!0,children:(0,a.jsxs)(r.Button,{type:`button`,variant:`outline`,size:`icon`,title:l,"aria-label":l,"data-docs-toc-mobile-trigger":`true`,className:`fixed border border-input bg-background shadow-sm`,style:n.getDocsFloatingActionStyle(1),children:[(0,a.jsx)(o.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`sr-only`,children:l})]})}),(0,a.jsxs)(r.SheetContent,{side:`right`,className:`flex h-dvh flex-col gap-0 p-0 sm:max-w-sm`,children:[(0,a.jsx)(r.SheetHeader,{className:`border-b border-border/60 px-6 pb-4 pt-[calc(env(safe-area-inset-top)+1.5rem)] text-left`,children:(0,a.jsx)(r.SheetTitle,{children:u})}),(0,a.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-6 pb-[calc(env(safe-area-inset-bottom)+1.5rem)] pt-4`,children:(0,a.jsx)(x,{...d,headings:t,listClassName:`min-h-0 flex-1`,wrapperClassName:`min-h-0 flex-1`,onSelect:()=>{p(!1)}})})]})]})})};exports.DefaultDocsToc=T,exports.MobileDocsToc=E;
|
|
9
|
+
"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./docs-toc-geometry.cjs`),n=require(`./floating-actions.cjs`);let r=require(`blackwork`),i=require(`react`);i=e.__toESM(i);let a=require(`react/jsx-runtime`),o=require(`blackwork/icons`);const s=`On This Page`,c=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),l=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),u=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},d=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),f=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),p=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},m=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},h=({itemBottom:e,itemTop:t,margin:n,scrollHeight:r,scrollTop:i,viewportHeight:a})=>{let o=i+n,s=i+a-n,c=Math.max(0,r-a);return t<o?Math.max(0,t-n):e>s?Math.min(c,e-a+n):i},g=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-m(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+m(r.paddingTop)}]})},_=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},v=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},y=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,b=e=>{let t=C(e),[n,r,a]=w(t,e),o=(0,i.useMemo)(()=>new Set(t),[t]),s=(0,i.useId)(),[c,l]=(0,i.useState)(0);return{activeIds:t,activeIdSet:o,listId:s,listRef:n,measurement:r,scrollTop:c,setScrollTop:l,track:a}},x=({activeIds:e,activeIdSet:n,headings:o,listClassName:s,listId:f,listRef:p,measurement:m,onSelect:g,scrollTop:_,setScrollTop:v,track:y,wrapperClassName:b})=>((0,i.useEffect)(()=>{let t=p.current,n=e[0];if(!t||!n)return;let r=Array.from(t.querySelectorAll(`a[data-heading-id]`)).find(e=>e.dataset.headingId===n);if(!r)return;let i=h({itemBottom:r.offsetTop+r.offsetHeight,itemTop:r.offsetTop,margin:16,scrollHeight:t.scrollHeight,scrollTop:t.scrollTop,viewportHeight:t.clientHeight});i!==t.scrollTop&&t.scrollTo({top:i})},[e,p]),(0,a.jsxs)(`div`,{className:(0,r.cn)(`relative flex min-h-0 flex-col`,b),children:[(0,a.jsxs)(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:l(m,_),children:[(0,a.jsx)(`svg`,{"data-docs-toc-track-path":`true`,height:m?.height??1,viewBox:`0 0 ${m?.width??1} ${m?.height??1}`,width:m?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:u(y),children:(0,a.jsx)(`path`,{d:m?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),(0,a.jsx)(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:d(m,y)})]}),(0,a.jsx)(`ol`,{id:f,ref:p,className:(0,r.cn)(`flex flex-col overflow-auto py-1 [scrollbar-width:none]`,s),onScroll:e=>{v(e.currentTarget.scrollTop)},children:o.map((e,r)=>{let i=n.has(e.id),s=t.getTocGuideOffset(e.depth),l=r>0?t.getTocGuideOffset(o[r-1].depth):s,u=r+1<o.length?t.getTocGuideOffset(o[r+1].depth):s;return(0,a.jsx)(`li`,{children:(0,a.jsxs)(`a`,{href:`#${e.id}`,"data-active":i?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:c(),style:{paddingInlineStart:`${t.getTocItemPadding(e.depth)}px`},onClick:g,children:[s===l?null:(0,a.jsx)(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(s,l)} 0 ${Math.abs(l-s)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(s,l)}px`,top:`-6px`,width:`${Math.abs(l-s)+1}px`,zIndex:-1},children:(0,a.jsx)(`path`,{d:`M ${l} 0 C ${l} 8 ${s} 4 ${s} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),(0,a.jsx)(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:s===u?`0px`:`6px`,insetInlineStart:`${s}px`,top:s===l?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})),S=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function C(e){let[t,n]=(0,i.useState)([]);return(0,i.useEffect)(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=f([...t.values()]);if(r.length===0){let n=p([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function w(e,n){let r=(0,i.useRef)(null),[a,o]=(0,i.useState)(null),[s,c]=(0,i.useState)(null),l=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=r.current;if(!e)return;let i=0,a=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=t.buildTocTrackGeometry(g(e,n)),i={...r,itemLineLengths:_(r.positions,r.path)};o(e=>v(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(a);return s?.observe(e),window.addEventListener(`resize`,a),a(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,a)}},[n]),(0,i.useEffect)(()=>{let t=0;return t=requestAnimationFrame(()=>{if(!a||e.length===0){l.current=null,c(e=>e===null?e:null);return}let[t,n]=S(e,a,l.current);l.current=n,c(e=>y(e,t)?e:t)}),()=>{cancelAnimationFrame(t)}},[e,a]),[r,a,s]}const T=({className:e,collapseDirection:t=`left`,collapseLabel:n=`Collapse outline`,collapseEnabled:c=!1,defaultCollapsed:l=!1,dock:u=`sticky`,expandLabel:d=`Expand outline`,headings:f,minHeadings:p=1,title:m=s})=>{let h=b(f),[g,_]=(0,i.useState)(l),v=g?d:n,y=t===`right`?`right-0`:`left-0`,S=c?t===`right`?`pr-10`:`pl-10`:void 0;return f.length<p?null:(0,a.jsx)(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":c?`true`:void 0,"data-docs-toc-collapsed":c?String(g):void 0,className:(0,r.cn)(`hidden w-64 xl:block`,u===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:(0,a.jsxs)(`nav`,{"aria-label":m,className:(0,r.cn)(`relative flex w-64 flex-col text-sm`,t===`right`?`ml-auto`:void 0),children:[(0,a.jsxs)(`div`,{inert:c&&g?!0:void 0,"aria-hidden":c&&g?!0:void 0,className:(0,r.cn)(`flex w-64 flex-col gap-3 overflow-hidden transition-opacity duration-200 ease-out motion-reduce:transition-none`,c&&g?`pointer-events-none opacity-0`:`opacity-100`),children:[(0,a.jsx)(`p`,{className:(0,r.cn)(`font-medium text-foreground`,S),children:m}),(0,a.jsx)(x,{...h,headings:f,listClassName:`max-h-[calc(100dvh-8rem)]`})]}),c?(0,a.jsxs)(r.Button,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":h.listId,"aria-label":v,"aria-expanded":!g,title:v,className:(0,r.cn)(y,`absolute top-0 z-10 shrink-0 text-muted-foreground transition-opacity duration-200 ease-out hover:text-foreground hover:opacity-100 motion-reduce:transition-none`,g?`opacity-100`:`opacity-60`),onClick:()=>{_(e=>!e)},children:[(0,a.jsx)(o.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`sr-only`,children:v})]}):null]})})},E=({className:e,headings:t,minHeadings:c=1,openLabel:l=`Open outline`,title:u=s})=>{let d=b(t),[f,p]=(0,i.useState)(!1);return t.length<c?null:(0,a.jsx)(`div`,{className:(0,r.cn)(`xl:hidden`,e),children:(0,a.jsxs)(r.Sheet,{open:f,onOpenChange:p,children:[(0,a.jsx)(r.SheetTrigger,{asChild:!0,children:(0,a.jsxs)(r.Button,{type:`button`,variant:`outline`,size:`icon`,title:l,"aria-label":l,"data-docs-toc-mobile-trigger":`true`,className:`fixed border border-input bg-background shadow-sm`,style:n.getDocsFloatingActionStyle(1),children:[(0,a.jsx)(o.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`sr-only`,children:l})]})}),(0,a.jsxs)(r.SheetContent,{side:`right`,className:`flex h-dvh flex-col gap-0 p-0 sm:max-w-sm`,children:[(0,a.jsx)(r.SheetHeader,{className:`border-b border-border/60 px-6 pb-4 pt-[calc(env(safe-area-inset-top)+1.5rem)] text-left`,children:(0,a.jsx)(r.SheetTitle,{children:u})}),(0,a.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-6 pb-[calc(env(safe-area-inset-bottom)+1.5rem)] pt-4`,children:(0,a.jsx)(x,{...d,headings:t,listClassName:`min-h-0 flex-1`,wrapperClassName:`min-h-0 flex-1`,onSelect:()=>{p(!1)}})})]})]})})};exports.DefaultDocsToc=T,exports.MobileDocsToc=E;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @blackwork/docs
|
|
3
|
-
* version: v0.4.
|
|
3
|
+
* version: v0.4.2
|
|
4
4
|
* description: Next-first documentation framework for Blackwork projects.
|
|
5
5
|
* author: chengpeiquan <chengpeiquan@chengpeiquan.com>
|
|
6
6
|
* homepage: https://chengpeiquan.com
|
|
7
7
|
* license: MIT
|
|
8
8
|
*/
|
|
9
|
-
"use client";import{buildTocTrackGeometry as e,getTocGuideOffset as t,getTocItemPadding as n}from"./docs-toc-geometry.mjs";import{getDocsFloatingActionStyle as r}from"./floating-actions.mjs";import{Button as i,Sheet as a,SheetContent as o,SheetHeader as s,SheetTitle as c,SheetTrigger as l,cn as u}from"blackwork";import{useEffect as d,useId as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{Toc as v}from"blackwork/icons";const y=`On This Page`,b=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),x=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),S=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},C=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),w=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),T=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},E=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},D=({itemBottom:e,itemTop:t,margin:n,scrollHeight:r,scrollTop:i,viewportHeight:a})=>{let o=i+n,s=i+a-n,c=Math.max(0,r-a);return t<o?Math.max(0,t-n):e>s?Math.min(c,e-a+n):i},O=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-E(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+E(r.paddingTop)}]})},k=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},A=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},j=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,M=e=>{let t=F(e),[n,r,i]=I(t,e),a=p(()=>new Set(t),[t]),o=f(),[s,c]=h(0);return{activeIds:t,activeIdSet:a,listId:o,listRef:n,measurement:r,scrollTop:s,setScrollTop:c,track:i}},N=({activeIds:e,activeIdSet:r,headings:i,listClassName:a,listId:o,listRef:s,measurement:c,onSelect:l,scrollTop:f,setScrollTop:p,track:m,wrapperClassName:h})=>(d(()=>{let t=s.current,n=e[0];if(!t||!n)return;let r=Array.from(t.querySelectorAll(`a[data-heading-id]`)).find(e=>e.dataset.headingId===n);if(!r)return;let i=D({itemBottom:r.offsetTop+r.offsetHeight,itemTop:r.offsetTop,margin:16,scrollHeight:t.scrollHeight,scrollTop:t.scrollTop,viewportHeight:t.clientHeight});i!==t.scrollTop&&t.scrollTo({top:i})},[e,s]),_(`div`,{className:u(`relative`,h),children:[_(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:x(c,f),children:[g(`svg`,{"data-docs-toc-track-path":`true`,height:c?.height??1,viewBox:`0 0 ${c?.width??1} ${c?.height??1}`,width:c?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:S(m),children:g(`path`,{d:c?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),g(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:C(c,m)})]}),g(`ol`,{id:o,ref:s,className:u(`flex flex-col overflow-auto py-1 [scrollbar-width:none]`,a),onScroll:e=>{p(e.currentTarget.scrollTop)},children:i.map((e,a)=>{let o=r.has(e.id),s=t(e.depth),c=a>0?t(i[a-1].depth):s,u=a+1<i.length?t(i[a+1].depth):s;return g(`li`,{children:_(`a`,{href:`#${e.id}`,"data-active":o?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:b(),style:{paddingInlineStart:`${n(e.depth)}px`},onClick:l,children:[s===c?null:g(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(s,c)} 0 ${Math.abs(c-s)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(s,c)}px`,top:`-6px`,width:`${Math.abs(c-s)+1}px`,zIndex:-1},children:g(`path`,{d:`M ${c} 0 C ${c} 8 ${s} 4 ${s} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),g(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:s===u?`0px`:`6px`,insetInlineStart:`${s}px`,top:s===c?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})),P=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function F(e){let[t,n]=h([]);return d(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=w([...t.values()]);if(r.length===0){let n=T([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function I(t,n){let r=m(null),[i,a]=h(null),[o,s]=h(null),c=m(null);return d(()=>{let t=r.current;if(!t)return;let i=0,o=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=e(O(t,n)),i={...r,itemLineLengths:k(r.positions,r.path)};a(e=>A(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(o);return s?.observe(t),window.addEventListener(`resize`,o),o(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,o)}},[n]),d(()=>{let e=0;return e=requestAnimationFrame(()=>{if(!i||t.length===0){c.current=null,s(e=>e===null?e:null);return}let[e,n]=P(t,i,c.current);c.current=n,s(t=>j(t,e)?t:e)}),()=>{cancelAnimationFrame(e)}},[t,i]),[r,i,o]}const L=({className:e,collapseDirection:t=`left`,collapseLabel:n=`Collapse outline`,collapseEnabled:r=!1,defaultCollapsed:a=!1,dock:o=`sticky`,expandLabel:s=`Expand outline`,headings:c,minHeadings:l=1,title:d=y})=>{let f=M(c),[p,m]=h(a),b=p?s:n,x=t===`right`?`right-0`:`left-0`,S=r?t===`right`?`pr-10`:`pl-10`:void 0;return c.length<l?null:g(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":r?`true`:void 0,"data-docs-toc-collapsed":r?String(p):void 0,className:u(`hidden w-64 xl:block`,o===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:_(`nav`,{"aria-label":d,className:u(`relative flex w-64 flex-col text-sm`,t===`right`?`ml-auto`:void 0),children:[_(`div`,{inert:r&&p?!0:void 0,"aria-hidden":r&&p?!0:void 0,className:u(`flex w-64 flex-col gap-3 overflow-hidden transition-opacity duration-200 ease-out motion-reduce:transition-none`,r&&p?`pointer-events-none opacity-0`:`opacity-100`),children:[g(`p`,{className:u(`font-medium text-foreground`,S),children:d}),g(N,{...f,headings:c,listClassName:`max-h-[calc(100dvh-8rem)]`})]}),r?_(i,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":f.listId,"aria-label":b,"aria-expanded":!p,title:b,className:u(x,`absolute top-0 z-10 shrink-0 text-muted-foreground transition-opacity duration-200 ease-out hover:text-foreground hover:opacity-100 motion-reduce:transition-none`,p?`opacity-100`:`opacity-60`),onClick:()=>{m(e=>!e)},children:[g(v,{className:`size-4`,"aria-hidden":`true`}),g(`span`,{className:`sr-only`,children:b})]}):null]})})},R=({className:e,headings:t,minHeadings:n=1,openLabel:d=`Open outline`,title:f=y})=>{let p=M(t),[m,b]=h(!1);return t.length<n?null:g(`div`,{className:u(`xl:hidden`,e),children:_(a,{open:m,onOpenChange:b,children:[g(l,{asChild:!0,children:_(i,{type:`button`,variant:`outline`,size:`icon`,title:d,"aria-label":d,"data-docs-toc-mobile-trigger":`true`,className:`fixed border border-input bg-background shadow-sm`,style:r(1),children:[g(v,{className:`size-4`,"aria-hidden":`true`}),g(`span`,{className:`sr-only`,children:d})]})}),_(o,{side:`right`,className:`flex h-dvh flex-col gap-0 p-0 sm:max-w-sm`,children:[g(s,{className:`border-b border-border/60 px-6 pb-4 pt-[calc(env(safe-area-inset-top)+1.5rem)] text-left`,children:g(c,{children:f})}),g(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-6 pb-[calc(env(safe-area-inset-bottom)+1.5rem)] pt-4`,children:g(N,{...p,headings:t,listClassName:`min-h-0 flex-1`,wrapperClassName:`min-h-0 flex-1`,onSelect:()=>{b(!1)}})})]})]})})};export{L as DefaultDocsToc,R as MobileDocsToc};
|
|
9
|
+
"use client";import{buildTocTrackGeometry as e,getTocGuideOffset as t,getTocItemPadding as n}from"./docs-toc-geometry.mjs";import{getDocsFloatingActionStyle as r}from"./floating-actions.mjs";import{Button as i,Sheet as a,SheetContent as o,SheetHeader as s,SheetTitle as c,SheetTrigger as l,cn as u}from"blackwork";import{useEffect as d,useId as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{Toc as v}from"blackwork/icons";const y=`On This Page`,b=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),x=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),S=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},C=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),w=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),T=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},E=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},D=({itemBottom:e,itemTop:t,margin:n,scrollHeight:r,scrollTop:i,viewportHeight:a})=>{let o=i+n,s=i+a-n,c=Math.max(0,r-a);return t<o?Math.max(0,t-n):e>s?Math.min(c,e-a+n):i},O=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-E(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+E(r.paddingTop)}]})},k=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},A=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},j=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,M=e=>{let t=F(e),[n,r,i]=I(t,e),a=p(()=>new Set(t),[t]),o=f(),[s,c]=h(0);return{activeIds:t,activeIdSet:a,listId:o,listRef:n,measurement:r,scrollTop:s,setScrollTop:c,track:i}},N=({activeIds:e,activeIdSet:r,headings:i,listClassName:a,listId:o,listRef:s,measurement:c,onSelect:l,scrollTop:f,setScrollTop:p,track:m,wrapperClassName:h})=>(d(()=>{let t=s.current,n=e[0];if(!t||!n)return;let r=Array.from(t.querySelectorAll(`a[data-heading-id]`)).find(e=>e.dataset.headingId===n);if(!r)return;let i=D({itemBottom:r.offsetTop+r.offsetHeight,itemTop:r.offsetTop,margin:16,scrollHeight:t.scrollHeight,scrollTop:t.scrollTop,viewportHeight:t.clientHeight});i!==t.scrollTop&&t.scrollTo({top:i})},[e,s]),_(`div`,{className:u(`relative flex min-h-0 flex-col`,h),children:[_(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:x(c,f),children:[g(`svg`,{"data-docs-toc-track-path":`true`,height:c?.height??1,viewBox:`0 0 ${c?.width??1} ${c?.height??1}`,width:c?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:S(m),children:g(`path`,{d:c?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),g(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:C(c,m)})]}),g(`ol`,{id:o,ref:s,className:u(`flex flex-col overflow-auto py-1 [scrollbar-width:none]`,a),onScroll:e=>{p(e.currentTarget.scrollTop)},children:i.map((e,a)=>{let o=r.has(e.id),s=t(e.depth),c=a>0?t(i[a-1].depth):s,u=a+1<i.length?t(i[a+1].depth):s;return g(`li`,{children:_(`a`,{href:`#${e.id}`,"data-active":o?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:b(),style:{paddingInlineStart:`${n(e.depth)}px`},onClick:l,children:[s===c?null:g(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(s,c)} 0 ${Math.abs(c-s)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(s,c)}px`,top:`-6px`,width:`${Math.abs(c-s)+1}px`,zIndex:-1},children:g(`path`,{d:`M ${c} 0 C ${c} 8 ${s} 4 ${s} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),g(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:s===u?`0px`:`6px`,insetInlineStart:`${s}px`,top:s===c?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})),P=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function F(e){let[t,n]=h([]);return d(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=w([...t.values()]);if(r.length===0){let n=T([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function I(t,n){let r=m(null),[i,a]=h(null),[o,s]=h(null),c=m(null);return d(()=>{let t=r.current;if(!t)return;let i=0,o=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=e(O(t,n)),i={...r,itemLineLengths:k(r.positions,r.path)};a(e=>A(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(o);return s?.observe(t),window.addEventListener(`resize`,o),o(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,o)}},[n]),d(()=>{let e=0;return e=requestAnimationFrame(()=>{if(!i||t.length===0){c.current=null,s(e=>e===null?e:null);return}let[e,n]=P(t,i,c.current);c.current=n,s(t=>j(t,e)?t:e)}),()=>{cancelAnimationFrame(e)}},[t,i]),[r,i,o]}const L=({className:e,collapseDirection:t=`left`,collapseLabel:n=`Collapse outline`,collapseEnabled:r=!1,defaultCollapsed:a=!1,dock:o=`sticky`,expandLabel:s=`Expand outline`,headings:c,minHeadings:l=1,title:d=y})=>{let f=M(c),[p,m]=h(a),b=p?s:n,x=t===`right`?`right-0`:`left-0`,S=r?t===`right`?`pr-10`:`pl-10`:void 0;return c.length<l?null:g(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":r?`true`:void 0,"data-docs-toc-collapsed":r?String(p):void 0,className:u(`hidden w-64 xl:block`,o===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:_(`nav`,{"aria-label":d,className:u(`relative flex w-64 flex-col text-sm`,t===`right`?`ml-auto`:void 0),children:[_(`div`,{inert:r&&p?!0:void 0,"aria-hidden":r&&p?!0:void 0,className:u(`flex w-64 flex-col gap-3 overflow-hidden transition-opacity duration-200 ease-out motion-reduce:transition-none`,r&&p?`pointer-events-none opacity-0`:`opacity-100`),children:[g(`p`,{className:u(`font-medium text-foreground`,S),children:d}),g(N,{...f,headings:c,listClassName:`max-h-[calc(100dvh-8rem)]`})]}),r?_(i,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":f.listId,"aria-label":b,"aria-expanded":!p,title:b,className:u(x,`absolute top-0 z-10 shrink-0 text-muted-foreground transition-opacity duration-200 ease-out hover:text-foreground hover:opacity-100 motion-reduce:transition-none`,p?`opacity-100`:`opacity-60`),onClick:()=>{m(e=>!e)},children:[g(v,{className:`size-4`,"aria-hidden":`true`}),g(`span`,{className:`sr-only`,children:b})]}):null]})})},R=({className:e,headings:t,minHeadings:n=1,openLabel:d=`Open outline`,title:f=y})=>{let p=M(t),[m,b]=h(!1);return t.length<n?null:g(`div`,{className:u(`xl:hidden`,e),children:_(a,{open:m,onOpenChange:b,children:[g(l,{asChild:!0,children:_(i,{type:`button`,variant:`outline`,size:`icon`,title:d,"aria-label":d,"data-docs-toc-mobile-trigger":`true`,className:`fixed border border-input bg-background shadow-sm`,style:r(1),children:[g(v,{className:`size-4`,"aria-hidden":`true`}),g(`span`,{className:`sr-only`,children:d})]})}),_(o,{side:`right`,className:`flex h-dvh flex-col gap-0 p-0 sm:max-w-sm`,children:[g(s,{className:`border-b border-border/60 px-6 pb-4 pt-[calc(env(safe-area-inset-top)+1.5rem)] text-left`,children:g(c,{children:f})}),g(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-6 pb-[calc(env(safe-area-inset-bottom)+1.5rem)] pt-4`,children:g(N,{...p,headings:t,listClassName:`min-h-0 flex-1`,wrapperClassName:`min-h-0 flex-1`,onSelect:()=>{b(!1)}})})]})]})})};export{L as DefaultDocsToc,R as MobileDocsToc};
|
package/dist/theme/slots.cjs
CHANGED
package/dist/theme/slots.mjs
CHANGED
package/dist/theme.cjs
CHANGED
package/dist/theme.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blackwork/docs",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Next-first documentation framework for Blackwork projects.",
|
|
5
5
|
"author": "chengpeiquan <chengpeiquan@chengpeiquan.com>",
|
|
6
6
|
"homepage": "https://chengpeiquan.com",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"chokidar": "^4.0.3",
|
|
54
54
|
"jiti": "^1.21.7",
|
|
55
|
-
"@blackwork/machine": "0.2.
|
|
55
|
+
"@blackwork/machine": "0.2.1"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"blackwork": ">=0.11.0",
|