e007bdd4e7
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
6 lines
18 KiB
JavaScript
6 lines
18 KiB
JavaScript
document.addEventListener("DOMContentLoaded",function(){const e=document.querySelector("#backToTop");e&&(e.addEventListener("click",scrollUp),document.addEventListener("scroll",t=>{window.scrollY>300?(e.classList.remove("hx:opacity-0"),e.removeAttribute("tabindex")):(e.classList.add("hx:opacity-0"),e.setAttribute("tabindex","-1"))}))});function scrollUp(){const e=window.matchMedia("(prefers-reduced-motion: reduce)").matches;window.scroll({top:0,left:0,behavior:e?"auto":"smooth"})}document.addEventListener("DOMContentLoaded",function(){const n=()=>{const e=document.createElementNS("http://www.w3.org/2000/svg","svg");return e.innerHTML=`
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
|
|
`,e.setAttribute("fill","none"),e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("stroke","currentColor"),e.setAttribute("stroke-width","2"),e},s=()=>{const e=document.createElementNS("http://www.w3.org/2000/svg","svg");return e.innerHTML=`
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
|
|
`,e.setAttribute("fill","none"),e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("stroke","currentColor"),e.setAttribute("stroke-width","2"),e},t=()=>{document.querySelectorAll(".hextra-code-block pre, .highlight pre").forEach(function(e){e.scrollWidth>e.clientWidth?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")})};t();let e;window.addEventListener("resize",()=>{e&&cancelAnimationFrame(e),e=requestAnimationFrame(t)}),document.querySelectorAll(".hextra-code-copy-btn").forEach(function(e){e.querySelector(".hextra-copy-icon")?.appendChild(n()),e.querySelector(".hextra-success-icon")?.appendChild(s()),e.addEventListener("click",function(t){t.preventDefault();const s=e.parentElement.previousElementSibling;let n;if(s.tagName==="CODE")n=s;else{const e=s.querySelectorAll("code");n=e[e.length-1]}if(n){let t=n.innerText;"lang"in n.dataset&&(t=t.replace(/\n\n/g,`
|
|
`)),navigator.clipboard.writeText(t).then(function(){e.classList.add("copied");var t=e.getAttribute("aria-label"),n=e.dataset.copiedLabel||"Copied!";e.setAttribute("aria-label",n),setTimeout(function(){e.classList.remove("copied"),e.setAttribute("aria-label",t)},1e3)}).catch(function(e){console.error("Failed to copy text: ",e)})}else console.error("Target element not found")})})}),function(){const e=document.getElementById("favicon-svg"),n="false"==="true";if(e&&n){const s="/favicon.svg",o="/favicon-dark.svg",n=window.matchMedia("(prefers-color-scheme: dark)");function t(t){e.href=t.matches?o:s}t(n),n.addEventListener("change",t)}}(),document.addEventListener("DOMContentLoaded",function(){const e=document.querySelectorAll(".hextra-filetree-folder");e.forEach(function(e){e.addEventListener("click",function(){Array.from(e.children).forEach(function(e){e.dataset.state=e.dataset.state==="open"?"closed":"open"});var t=e.nextElementSibling.dataset.state==="open"?"closed":"open";e.nextElementSibling.dataset.state=t,e.setAttribute("aria-expanded",t==="open"?"true":"false")})})}),function(){const e=document.querySelectorAll(".hextra-language-switcher"),t=(e,t=!1)=>{e.dataset.state="closed",e.setAttribute("aria-expanded","false");const n=e.nextElementSibling;n.classList.add("hx:hidden"),t&&e.focus()},n=(e,t="none")=>{e.dataset.state="open",e.setAttribute("aria-expanded","true");const n=e.nextElementSibling;if(n.classList.contains("hx:hidden")?toggleMenu(e):resizeMenu(e),t!=="none"){const e=Array.from(n.querySelectorAll('[role="menuitem"]'));if(e.length>0){const n=t==="last"?e[e.length-1]:e[0];n.focus()}}};e.forEach(e=>{e.addEventListener("click",s=>{s.preventDefault(),e.dataset.state==="open"?t(e):n(e)}),e.addEventListener("keydown",t=>{t.key==="ArrowDown"?(t.preventDefault(),n(e,"first")):t.key==="ArrowUp"&&(t.preventDefault(),n(e,"last"))})}),document.querySelectorAll(".hextra-language-options[role=menu]").forEach(e=>{e.addEventListener("keydown",n=>{const s=Array.from(e.querySelectorAll('[role="menuitem"]'));if(s.length===0)return;const i=s.indexOf(document.activeElement);let o;switch(n.key){case"ArrowDown":n.preventDefault(),o=(i+1)%s.length,s[o].focus();break;case"ArrowUp":n.preventDefault(),o=(i-1+s.length)%s.length,s[o].focus();break;case"Home":n.preventDefault(),s[0].focus();break;case"End":n.preventDefault(),s[s.length-1].focus();break;case"Escape":{n.preventDefault();const s=e.previousElementSibling;s&&t(s,!0);break}}})}),window.addEventListener("resize",()=>e.forEach(resizeMenu)),document.addEventListener("click",n=>{!n.target.closest(".hextra-language-switcher")&&!n.target.closest(".hextra-language-options")&&e.forEach(e=>{t(e)})})}(),document.addEventListener("DOMContentLoaded",function(){const t=document.querySelector(".hextra-hamburger-menu"),e=document.querySelector(".hextra-sidebar-container"),n=window.matchMedia("(max-width: 767px)");function s(){return t.querySelector("svg").classList.contains("open")}function o(){n.matches?e.setAttribute("aria-hidden",s()?"false":"true"):e.removeAttribute("aria-hidden")}o(),n.addEventListener("change",o);function i(n={}){const{focusOnOpen:a=!0}=n;t.querySelector("svg").classList.toggle("open"),e.classList.toggle("hx:max-md:[transform:translate3d(0,-100%,0)]"),e.classList.toggle("hx:max-md:[transform:translate3d(0,0,0)]"),document.body.classList.toggle("hx:overflow-hidden"),document.body.classList.toggle("hx:md:overflow-auto");const i=s();if(t.setAttribute("aria-expanded",i?"true":"false"),o(),i){if(a){const t=e.querySelector('a, button, input, [tabindex="0"]');t&&t.focus()}}else t.focus()}t.addEventListener("click",e=>{e.preventDefault(),i({focusOnOpen:e.detail===0})}),document.addEventListener("keydown",e=>{e.key==="Escape"&&n.matches&&s()&&i()});const a=e.querySelectorAll("a");a.forEach(e=>{e.addEventListener("click",t=>{e.getAttribute("href")&&e.getAttribute("href").startsWith("#")&&window.innerWidth<768&&i()})})}),function(){const s="hx:hidden",t=document.querySelectorAll(".hextra-nav-menu-toggle"),e=(e,t=!1)=>{e.dataset.state="closed",e.setAttribute("aria-expanded","false");const n=e.nextElementSibling;n.classList.add(s),t&&e.focus()},n=(n,o="none")=>{t.forEach(t=>{t!==n&&e(t)}),n.dataset.state="open",n.setAttribute("aria-expanded","true");const i=n.nextElementSibling;if(i.style.position="absolute",i.style.top="100%",i.style.left="50%",i.style.transform="translateX(-50%)",i.style.zIndex="1000",i.classList.remove(s),o!=="none"){const e=Array.from(i.querySelectorAll('[role="menuitem"]'));if(e.length>0){const t=o==="last"?e[e.length-1]:e[0];t.focus()}}};t.forEach(t=>{t.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation();const o=t.dataset.state==="open";o?e(t):n(t)}),t.addEventListener("keydown",e=>{e.key==="ArrowDown"?(e.preventDefault(),n(t,"first")):e.key==="ArrowUp"&&(e.preventDefault(),n(t,"last"))})}),document.querySelectorAll(".hextra-nav-menu-items[role=menu]").forEach(t=>{t.addEventListener("keydown",n=>{const s=Array.from(t.querySelectorAll('[role="menuitem"]'));if(s.length===0)return;const i=s.indexOf(document.activeElement);let o;switch(n.key){case"ArrowDown":n.preventDefault(),o=(i+1)%s.length,s[o].focus();break;case"ArrowUp":n.preventDefault(),o=(i-1+s.length)%s.length,s[o].focus();break;case"Home":n.preventDefault(),s[0].focus();break;case"End":n.preventDefault(),s[s.length-1].focus();break;case"Escape":{n.preventDefault();const s=t.previousElementSibling;s&&e(s,!0);break}}})}),document.addEventListener("click",n=>{!n.target.closest(".hextra-nav-menu-toggle")&&!n.target.closest(".hextra-nav-menu-items")&&t.forEach(t=>{e(t)})}),document.addEventListener("keydown",n=>{n.key==="Escape"&&t.forEach(t=>{t.dataset.state==="open"&&e(t,!0)})})}(),document.addEventListener("DOMContentLoaded",()=>{const s=document.querySelectorAll(".hextra-page-context-menu-copy"),t=new Map;s.forEach(e=>{const n=e.dataset.url;n&&fetch(n).then(e=>{if(e.ok)return e.text();throw new Error("Failed to fetch")}).then(e=>t.set(n,e)).catch(e=>console.error("Failed to pre-fetch markdown:",e))}),s.forEach(e=>{e.addEventListener("click",()=>{const n=e.dataset.url,s=t.get(n);s?navigator.clipboard.writeText(s).then(()=>{e.classList.add("copied"),setTimeout(()=>e.classList.remove("copied"),1e3)}).catch(e=>console.error("Failed to copy markdown:",e)):fetch(n).then(e=>{if(!e.ok)throw new Error("Failed to fetch");return e.text()}).then(e=>(t.set(n,e),navigator.clipboard.writeText(e))).then(()=>{e.classList.add("copied"),setTimeout(()=>e.classList.remove("copied"),1e3)}).catch(e=>console.error("Failed to copy markdown:",e))})});const e=document.querySelectorAll(".hextra-page-context-menu-toggle");e.forEach(t=>{const s=t.closest(".hextra-page-context-menu"),o=s.querySelector(".hextra-page-context-menu-dropdown"),n=t.querySelector("[data-chevron]");t.addEventListener("click",s=>{s.stopPropagation();const i=t.dataset.state==="open";e.forEach(e=>{if(e!==t){e.dataset.state="closed",e.setAttribute("aria-expanded","false");const n=e.closest(".hextra-page-context-menu"),s=n.querySelector(".hextra-page-context-menu-dropdown"),t=e.querySelector("[data-chevron]");s.classList.add("hx:hidden"),t&&(t.style.transform="")}}),t.dataset.state=i?"closed":"open",t.setAttribute("aria-expanded",i?"false":"true"),o.classList.toggle("hx:hidden",i),n&&(n.style.transform=i?"":"rotate(180deg)")})}),document.addEventListener("click",t=>{const n=!t.target.closest(".hextra-page-context-menu");n&&e.forEach(e=>{e.dataset.state="closed",e.setAttribute("aria-expanded","false");const n=e.closest(".hextra-page-context-menu"),s=n.querySelector(".hextra-page-context-menu-dropdown"),t=e.querySelector("[data-chevron]");s.classList.add("hx:hidden"),t&&(t.style.transform="")})}),document.addEventListener("keydown",t=>{t.key==="Escape"&&e.forEach(e=>{if(e.dataset.state==="open"){const t=e.closest(".hextra-page-context-menu");n(t),e.focus()}})});const n=e=>{if(!e)return;const t=e.querySelector(".hextra-page-context-menu-toggle"),n=e.querySelector(".hextra-page-context-menu-dropdown");if(!t||!n)return;const s=t.querySelector("[data-chevron]");t.dataset.state="closed",t.setAttribute("aria-expanded","false"),n.classList.add("hx:hidden"),s&&(s.style.transform="")};document.querySelectorAll('.hextra-page-context-menu-dropdown button[data-action="copy"]').forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const s=e.closest(".hextra-page-context-menu");if(!s)return;const o=s.querySelector(".hextra-page-context-menu-copy");if(!o)return;n(s),o.click()})}),document.querySelectorAll('.hextra-page-context-menu-dropdown button[data-action="view"]').forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const s=e.closest(".hextra-page-context-menu");if(!s)return;const o=e.dataset.url;if(!o)return;n(s),window.open(o,"_blank","noopener,noreferrer")})})}),document.addEventListener("DOMContentLoaded",function(){scrollToActiveItem(),enableCollapsibles()});function enableCollapsibles(){const e=document.querySelectorAll(".hextra-sidebar-collapsible-button");e.forEach(function(e){e.addEventListener("click",function(t){t.preventDefault();const n=e.closest("li");n&&(n.classList.toggle("open"),e.setAttribute("aria-expanded",n.classList.contains("open")?"true":"false"))})})}function scrollToActiveItem(){const t=document.querySelector("aside.hextra-sidebar-container > .hextra-scrollbar"),n=document.querySelectorAll(".hextra-sidebar-active-item"),e=Array.from(n).find(function(e){return e.getBoundingClientRect().height>0});if(!e)return;const s=e.clientHeight,o=e.getBoundingClientRect().top-t.getBoundingClientRect().top;t.scrollTo({behavior:"instant",top:o-s})}function computeMenuTranslation(e,t){const n=e.getBoundingClientRect();t.style.minWidth=`${Math.max(n.width,50)}px`;const o=e.dataset.location==="top",r=e.dataset.location==="bottom",c=e.dataset.location==="bottom-right",s=document.documentElement.dir==="rtl";let i=n.left;(o&&!s||r&&s||c&&!s)&&(i=n.right-t.clientWidth);let a=n.top-window.innerHeight-10;return o&&(a=n.top-window.innerHeight+t.clientHeight+e.clientHeight+4),{x:i,y:a}}function toggleMenu(e){const t=e.nextElementSibling;t.classList.toggle("hx:hidden");const n=computeMenuTranslation(e,t);t.style.transform=`translate3d(${n.x}px, ${n.y}px, 0)`}function resizeMenu(e){const t=e.nextElementSibling;if(t.classList.contains("hx:hidden"))return;const n=computeMenuTranslation(e,t);t.style.transform=`translate3d(${n.x}px, ${n.y}px, 0)`}(function(){function e(e,t){const s=Array.from(e.querySelectorAll(".hextra-tabs-toggle"));s.forEach((e,n)=>{e.dataset.state=n===t?"selected":"",n===t?(e.setAttribute("aria-selected","true"),e.tabIndex=0):(e.setAttribute("aria-selected","false"),e.tabIndex=-1)});const n=e.parentElement.nextElementSibling;if(!n)return;Array.from(n.children).forEach((e,n)=>{e.dataset.state=n===t?"selected":"",e.setAttribute("aria-hidden",n===t?"false":"true"),n===t?e.tabIndex=0:e.removeAttribute("tabindex")})}const t=document.querySelectorAll("[data-tab-group]");t.forEach(t=>{const s=encodeURIComponent(t.dataset.tabGroup),n=localStorage.getItem("hextra-tab-"+s);n!==null&&e(t,parseInt(n,10))}),document.querySelectorAll(".hextra-tabs-toggle").forEach(t=>{t.addEventListener("click",function(t){const o=t.currentTarget,n=o.parentElement,s=Array.from(n.querySelectorAll(".hextra-tabs-toggle")).indexOf(o);if(n.dataset.tabGroup){const t=n.dataset.tabGroup,o=encodeURIComponent(t);document.querySelectorAll('[data-tab-group="'+t+'"]').forEach(t=>e(t,s)),localStorage.setItem("hextra-tab-"+o,s.toString())}else e(n,s)}),t.addEventListener("keydown",function(n){const i=t.parentElement,o=Array.from(i.querySelectorAll(".hextra-tabs-toggle")),a=o.indexOf(t);let s;switch(n.key){case"ArrowRight":case"ArrowDown":n.preventDefault(),s=(a+1)%o.length;break;case"ArrowLeft":case"ArrowUp":n.preventDefault(),s=(a-1+o.length)%o.length;break;case"Home":n.preventDefault(),s=0;break;case"End":n.preventDefault(),s=o.length-1;break;default:return}if(i.dataset.tabGroup){const t=i.dataset.tabGroup,n=encodeURIComponent(t);document.querySelectorAll('[data-tab-group="'+t+'"]').forEach(t=>e(t,s)),localStorage.setItem("hextra-tab-"+n,s.toString())}else e(i,s);o[s].focus()})})})(),document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("main#content li > input[type='checkbox']").forEach(function(e){if(e.hasAttribute("aria-label")||e.hasAttribute("aria-labelledby"))return;var t,n=e.closest("li");if(!n)return;t=n.textContent.replace(/\s+/g," ").trim(),t&&e.setAttribute("aria-label",t)})}),function(){const s="light",o=["light","dark"],e=document.querySelectorAll(".hextra-theme-toggle"),t=document.querySelectorAll(".hextra-theme-toggle-options button[role=menuitemradio]");function i(n){n=o.includes(n)?n:"system",e.forEach(e=>e.parentElement.dataset.theme=n),t.forEach(e=>{e.setAttribute("aria-checked",e.dataset.item===n?"true":"false")}),localStorage.setItem("color-theme",n)}function n(e){setTheme(e),i(e)}const a="color-theme"in localStorage?localStorage.getItem("color-theme"):s;n(a),t.forEach(e=>{e.addEventListener("click",function(t){t.preventDefault(),n(e.dataset.item)})}),e.forEach(e=>{e.addEventListener("click",function(t){t.preventDefault(),e.dataset.state=e.dataset.state==="open"?"closed":"open",toggleMenu(e);const n=e.dataset.state==="open";if(e.setAttribute("aria-expanded",n?"true":"false"),n){const t=e.nextElementSibling.querySelector("button[role=menuitemradio]");t&&t.focus()}})}),window.addEventListener("resize",()=>e.forEach(resizeMenu)),document.addEventListener("click",t=>{t.target.closest(".hextra-theme-toggle")===null&&e.forEach(e=>{e.dataset.state="closed",e.setAttribute("aria-expanded","false"),e.nextElementSibling.classList.add("hx:hidden")})}),document.querySelectorAll(".hextra-theme-toggle-options[role=menu]").forEach(function(e){e.addEventListener("keydown",function(t){const n=Array.from(e.querySelectorAll("button[role=menuitemradio]")),i=n.indexOf(document.activeElement);let s;switch(t.key){case"ArrowDown":t.preventDefault(),s=(i+1)%n.length,n[s].focus();break;case"ArrowUp":t.preventDefault(),s=(i-1+n.length)%n.length,n[s].focus();break;case"Home":t.preventDefault(),n[0].focus();break;case"End":t.preventDefault(),n[n.length-1].focus();break;case"Escape":t.preventDefault();var o=e.previousElementSibling;o.dataset.state="closed",o.setAttribute("aria-expanded","false"),e.classList.add("hx:hidden"),o.focus();break}})}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{localStorage.getItem("color-theme")==="system"&&setTheme("system")})}(),document.addEventListener("DOMContentLoaded",function(){const t=document.querySelector(".hextra-toc");if(!t)return;const s=t.querySelectorAll('a[href^="#"]');if(s.length===0)return;const a=Array.from(s).map(e=>e.getAttribute("href").substring(1)),o=a.map(e=>document.getElementById(decodeURIComponent(e))).filter(Boolean);if(o.length===0)return;let e=null,n=!1;const r=new IntersectionObserver(s=>{if(n)return;const i=s.filter(e=>e.isIntersecting).map(e=>e.target);if(i.length===0)return;const a=i.reduce((e,t)=>{const n=t.getBoundingClientRect().top,s=e.getBoundingClientRect().top;return(n<0?-n:n)<(s<0?-s:s)?t:e}),r=encodeURIComponent(a.id).toLowerCase(),o=t.querySelector(`a[href="#${r}"]`);o&&o!==e&&(e&&(e.classList.remove("hextra-toc-active"),e.removeAttribute("aria-current")),o.classList.add("hextra-toc-active"),o.setAttribute("aria-current","location"),e=o)},{rootMargin:"-20px 0px -60% 0px",threshold:[0,.1,.5,1]});o.forEach(e=>r.observe(e));function i(){const s=window.location.hash;if(s){const o=t.querySelector(`a[href="${s}"]`);if(o){n=!0,e&&(e.classList.remove("hextra-toc-active"),e.removeAttribute("aria-current")),o.classList.add("hextra-toc-active"),o.setAttribute("aria-current","location"),e=o,setTimeout(()=>{n=!1},500);return}}}window.addEventListener("hashchange",i),setTimeout(i,100)}) |