/*!
 * @license
 * Copyright 2021 The Go Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style
 * license that can be found in the LICENSE file.
 */import{CopyToClipboardController as i}from"./clipboard.js";import"./toggle-tip.js";import{ExpandableRowsTableController as u}from"./table.js";document.querySelectorAll(".js-expandableTable").forEach(e=>new u(e,document.querySelector(".js-expandAllDirectories"))),document.querySelectorAll(".js-copyToClipboard").forEach(e=>{new i(e)});const t=document.querySelector(".js-readme"),d=document.querySelector(".js-readmeContent"),o=document.querySelector(".js-readmeOutline"),n=document.querySelectorAll(".js-readmeExpand"),a=document.querySelector(".js-readmeCollapse");t&&d&&o&&n.length&&a&&(window.location.hash.includes("readme")&&t.classList.add("UnitReadme--expanded"),n.forEach(e=>e.addEventListener("click",r=>{r.preventDefault(),t.classList.add("UnitReadme--expanded"),t.scrollIntoView()})),a.addEventListener("click",e=>{e.preventDefault(),t.classList.remove("UnitReadme--expanded"),n[1]&&n[1].scrollIntoView({block:"center"})}),d.addEventListener("keyup",()=>{t.classList.add("UnitReadme--expanded")}),d.addEventListener("click",()=>{t.classList.add("UnitReadme--expanded")}),o.addEventListener("click",()=>{t.classList.add("UnitReadme--expanded")}),document.addEventListener("keydown",e=>{(e.ctrlKey||e.metaKey)&&e.key==="f"&&t.classList.add("UnitReadme--expanded")}));const s=document.querySelector(".js-readmeOption");s&&!t&&s.setAttribute("disabled","true");const m=document.querySelector(".js-unitDirectories"),l=document.querySelector(".js-directoriesOption");!m&&l&&l.setAttribute("disabled","true"),document.querySelectorAll(".js-buildContextSelect").forEach(e=>{e.addEventListener("change",r=>{window.location.search=`?GOOS=${r.target.value}`})});const p=new IntersectionObserver(([e])=>{e.intersectionRatio<1?(document.querySelector(".js-unitHeader")?.classList.add("UnitHeader--sticky"),document.querySelector(".js-unitHeader")?.classList.remove("UnitHeader--full")):(document.querySelector(".js-unitHeader")?.classList.remove("UnitHeader--sticky"),document.querySelector(".js-unitHeader")?.classList.add("UnitHeader--full"))},{threshold:1,rootMargin:"-20px"}),c=document.querySelector(".js-headerSentinel");c&&p.observe(c);
//# sourceMappingURL=unit.js.map
