-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchunk-JMJLOH3Z.js
1 lines (1 loc) · 3.13 KB
/
chunk-JMJLOH3Z.js
1
import{a}from"./chunk-3EQGR4CQ.js";import{w as R}from"./chunk-KHILBKJ3.js";import{B as E,Ea as u,F as _,Gc as C,aa as f,eb as T,ga as i,hb as h,sa as p}from"./chunk-FNSPSJSE.js";var S=".docs-reference-header",b=".docs-reference-members-container",g=".adev-reference-tab-body",v="data-tab",N="data-tab-url",B="API",O="tab",P=".docs-reference-api-tab",I=".docs-reference-member-card",l="hljs-ln-line-highlighted";var A="member-id";var M=20,L=20,q=(()=>{let s=class s{constructor(){this.destroyRef=i(u),this.document=i(C),this.injector=i(p),this.window=i(R),this.cardOffsetTop=new Map,this.resizeObserver=null,this.membersMarginTopInPx=h(0)}ngOnDestroy(){this.resizeObserver?.disconnect()}setupListeners(e){this.setupCodeToCListeners(e),this.setupMemberCardListeners(),this.setScrollEventHandlers(),this.listenToResizeCardContainer()}updateMembersMarginTop(e){let t=this.document.querySelector(e);t&&this.updateMarginTopWhenTabBodyIsResized(t)}setupCodeToCListeners(e){let t=this.document.querySelector(e);t&&E(t,"click").pipe(a(this.destroyRef)).subscribe(r=>{let c=r.target instanceof HTMLButtonElement?r.target:this.findButtonElement(r.target),o=this.getMemberId(c);if(o){let n=this.document.querySelector(`#${o}`);this.scrollToCard(n)}})}setupMemberCardListeners(){this.getAllMemberCards().forEach(e=>{this.cardOffsetTop.set(e.id,e.offsetTop),E(e,"click").pipe(a(this.destroyRef)).subscribe(()=>{this.scrollToCard(e)})})}setScrollEventHandlers(){E(this.document,"scroll").pipe(_(M),a(this.destroyRef)).subscribe(()=>this.setActiveCodeLine())}listenToResizeCardContainer(){let e=this.document.querySelector(b);e&&T(()=>{let t=new ResizeObserver(()=>{this.updateCardsOffsetTop(),this.setActiveCodeLine()});t.observe(e),this.destroyRef.onDestroy(()=>t.disconnect())},{injector:this.injector})}setActiveCodeLine(){let e=Array.from(this.cardOffsetTop).filter(([n,m])=>m<this.window.scrollY+this.membersMarginTopInPx()+L).pop();if(!e)return;let t=this.document.querySelectorAll(`button.${l}`),r=t.length>0?t.item(0):null,c=this.getMemberId(r),o=e[0];if(c&&c!==o)for(let n of Array.from(t))n.classList.remove(l);else{let n=this.document.querySelectorAll(`button[${A}="${o}"]`);for(let m of Array.from(n))m.classList.add(l);this.document.getElementById(`${o}`)?.focus({preventScroll:!0})}}scrollToCard(e){e&&(e!==document.activeElement&&document.activeElement.blur(),this.window.scrollTo({top:e.offsetTop-this.membersMarginTopInPx(),behavior:"smooth"}))}updateCardsOffsetTop(){this.getAllMemberCards().forEach(e=>{this.cardOffsetTop.set(e.id,e.offsetTop)})}getAllMemberCards(){return this.document.querySelectorAll(`${I}`)}getMemberId(e){if(e)return e.attributes.getNamedItem(A)?.value}updateMarginTopWhenTabBodyIsResized(e){this.resizeObserver?.disconnect(),this.resizeObserver=new ResizeObserver(t=>{let r=e.getBoundingClientRect().top;r&&this.membersMarginTopInPx.set(r)}),this.resizeObserver.observe(e)}findButtonElement(e){let t=e.parentElement;for(;t;){if(t instanceof HTMLButtonElement)return t;t=t.parentElement}return null}};s.\u0275fac=function(t){return new(t||s)},s.\u0275prov=f({token:s,factory:s.\u0275fac});let d=s;return d})();export{S as a,b,g as c,v as d,N as e,B as f,O as g,P as h,q as i};