PageSourceSearch

https://www.bluettipower.ca/cdn/shop/t/47/assets/bluetti.bluetti-article-nav.D6E96VOj.min.js

js bluettipower.ca collected 2026-09-26 02:22:22 UTC 3,113 bytes, 1 lines download raw bytes

1import{s as t}from"./bluetti.theme.DMb47qTq.min.js";import"./bluetti.preload-helper.DTdAas1V.min.js";import"./bluetti.modulepreload-polyfill.YP0FEG5d.min.js";import"./bluetti.Customer.Ckm4_sV5.min.js";import"./bluetti.constants.Cyvr9pHy.min.js";import"./bluetti.modal.BkmKJNm2.min.js";import"./bluetti.vendor.OdbWYEnF.min.js";import"./bluetti.mallApi.DsZj8Mwg.min.js";import"./bluetti.utils.BeiRElZ6.min.js";import"./bluetti.member-price-sdk.DEQAWf2_.min.js";class e extends window.HTMLElement{get articleNav(){return this.querySelector("[data-article-nav]")}get menuButton(){return this.querySelector('[type="button"]')}get articleContent(){return this.querySelector('[role="menu"]')}constructor(){super(),this.overlay="",this.isMenuOpen=!1}connectedCallback(){var e,i;t("article-content-generated",this.render.bind(this)),window.addEventListener("scroll",this.handleScroll.bind(this)),null==(e=this.menuButton)||e.addEventListener("click",this.handleClick.bind(this)),null==(i=this.articleNav)||i.addEventListener("click",this.handleNavClick.bind(this))}disconnectedCallback(){var t,e;null==(t=this.menuButton)||t.removeEventListener("click",this.handleClick.bind(this)),null==(e=this.articleNav)||e.removeEventListener("click",this.handleNavClick.bind(this)),window.removeEventListener("scroll",this.handleScroll.bind(this))}render({anchorPoints:t}){this.anchorPoints=t,this.generateTableOfContents()}generateTableOfContents(){let t="";this.anchorPoints.forEach((e,i)=>{t+=`<a class="no-underline hover:no-underline hover:text-primary-500 active:text-primary-600 transition-colors" href="#anchor-point-${i}" title="${e.textContent}" rel="noopener noreferrer">${e.textContent}</a>`}),this.articleNav.innerHTML=t}toggleSvgStyles(){const t=this.menuButton.querySelector("svg");t.classList.toggle("rotate-180",this.isMenuOpen),t.classList.toggle("text-primary-400",this.isMenuOpen)}toggleDropdown(){this.isMenuOpen=!this.isMenuOpen,this.articleContent&&(this.isMenuOpen?this.classList.replace("z-40","z-50"):this.classList.replace("z-50","z-40"),this.articleContent.toggleAttribute("hidden",!this.isMenuOpen),this.toggleSvgStyles(),this.isMenuOpen&&!this.overlay?(this.overlay=this.createOverlay(),document.body.appendChild(this.overlay)):!this.isMenuOpen&&this.overlay&&(this.overlay.remove(),this.overlay=""))}createOverlay(){const t=document.createElement("div");return t.classList.add("fixed","inset-0","z-40","bg-black/50","backdrop-blur-sm","transition-all"),t.addEventListener("click",this.toggleDropdown.bind(this)),t}handleClick(){const{top:t,height:e}=this.getBoundingClientRect();t>e?(window.scrollTo({top:window.scrollY+t-e,behavior:"smooth"}),setTimeout(()=>{this.toggleDropdown()},800)):this.toggleDropdown()}handleScroll(){if(!this.anchorPoints)return;let t=0,e=1/0;this.anchorPoints.forEach((i,n)=>{const s=i.getBoundingClientRect(),l=Math.abs(s.top);l<e&&(e=l,t=n)});this.articleNav.querySelectorAll("a").forEach((e,i)=>{["text-primary-400","font-semibold"].forEach(n=>{e.classList.toggle(n,i===t)})})}handleNavClick(){this.toggleDropdown()}}window.customElements.define("bluetti-article-nav",e);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.