PageSourceSearch

https://nianticspatial.com/assets/BXvoRlx1.min.js

js nianticspatial.com collected 2026-10-09 22:38:58 UTC 6,723 bytes, 20 lines download raw bytes

1function e(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var t=class extends HTMLElement{panel=null;overlay=null;navRow=null;prevBtn=null;nextBtn=null;_onResize=null;_onKeydown=null;_onClick=null;_onScroll=null;_arrowsSetUp=!1;connectedCallback(){requestAnimationFrame(()=>{this.updateLayout(),this.setupScrollArrows()}),this._onResize=()=>{this.updateLayout(),this.updateArrowVisibility()},window.addEventListener(`resize`,this._onResize,{passive:!0}),this._onClick=e=>this.handleClick(e),this.addEventListener(`click`,this._onClick),this._onKeydown=e=>{e.key===`Escape`&&this.closePanel()},document.addEventListener(`keydown`,this._onKeydown)}disconnectedCallback(){this._onResize&&window.removeEventListener(`resize`,this._onResize),this._onKeydown&&document.removeEventListener(`keydown`,this._onKeydown),this._onClick&&this.removeEventListener(`click`,this._onClick);let e=this.querySelector(`[data-slot="track"]`);e&&this._onScroll&&e.removeEventListener(`scroll`,this._onScroll),this.panel?.remove(),this.overlay?.remove(),this.panel=null,this.overlay=null}updateLayout(){let e=this.querySelector(`[data-slot="track"]`);if(!e)return;let t=Array.from(e.querySelectorAll(`[data-slot="card"]`)),n=t.length;if(!n)return;let r=window.innerWidth>=992;r&&n<=4?(e.style.display=`grid`,e.style.gridTemplateColumns=`repeat(${n}, 1fr)`,e.style.overflowX=`visible`,t.forEach(e=>{e.style.width=`auto`,e.style.flexShrink=``})):r?(e.style.display=`flex`,e.style.overflowX=`auto`,e.style.gridTemplateColumns=``,t.forEach(e=>{e.style.width=`280px`,e.style.flexShrink=`0`})):(e.style.display=``,e.style.gridTemplateColumns=``,e.style.overflowX=``,t.forEach(e=>{e.style.width=``,e.style.flexShrink=``})),this.panel&&this.panel.style.transform!==this.closedTransform()&&this.applyPanelStyles()}setupScrollArrows(){if(this._arrowsSetUp)return;let e=this.querySelector(`[data-slot="track"]`);this.navRow=this.querySelector(`[data-slot="nav"]`),this.prevBtn=this.querySelector(`[data-slot="prev"]`),this.nextBtn=this.querySelector(`[data-slot="next"]`),!(!e||!this.navRow||!this.prevBtn||!this.nextBtn)&&(this.prevBtn.addEventListener(`click`,t=>{t.stopPropagation();let n=e.querySelector(`[data-slot="card"]`),r=n?n.offsetWidth+24:304;e.scrollBy({left:-r,behavior:`smooth`})}),this.nextBtn.addEventListener(`click`,t=>{t.stopPropagation();let n=e.querySelector(`[data-slot="card"]`),r=n?n.offsetWidth+24:304;e.scrollBy({left:r,behavior:`smooth`})}),this._onScroll=()=>this.updateArrowVisibility(),e.addEventListener(`scroll`,this._onScroll,{passive:!0}),this._arrowsSetUp=!0,this.updateArrowVisibility())}updateArrowVisibility(){let e=this.querySelector(`[data-slot="track"]`);if(!e||!this.navRow||!this.prevBtn||!this.nextBtn)return;let t=e.scrollWidth>e.clientWidth+2;if(this.navRow.style.display=t?`flex`:`none`,!t)return;let n=e.scrollLeft<=4,r=e.scrollLeft+e.clientWidth>=e.scrollWidth-4;this.prevBtn.disabled=n,this.nextBtn.disabled=r}handleClick(e){let t=e.target.closest(`[data-slot="card"]`);!t||!t.dataset.bio||(e.preventDefault(),this.openPanel({name:t.dataset.name||``,title:t.dataset.title||``,bio:t.dataset.bio||``,headshot:t.dataset.headshot||``,headshotAlt:t.dataset.headshotAlt||``}))}ensurePanel(){if(this.panel)return;let e=document.createElement(`div`);e.style.cssText=`position:fixed;inset:0;background:rgba(0,0,0,0.35);z-index:9998;opacity:0;pointer-events:none;transition:opacity 0.3s ease;`,e.addEventListener(`click`,()=>this.closePanel()),document.body.appendChild(e),this.overlay=e;let t=document.createElement(`div`);document.body.appendChild(t),this.panel=t,this.applyPanelStyles()}isDesktop(){return window.innerWidth>=992}closedTransform(){return this.isDesktop()?`translateX(100%)`:`translateY(100%)`}applyPanelStyles(){this.panel&&(this.isDesktop()?this.panel.style.cssText=`position:fixed;top:0;right:0;bottom:0;width:480px;background:white;overflow-y:auto;z-index:9999;transform:translateX(100%);transition:transform 0.35s cubic-bezier(0.4,0,0.2,1);`:this.panel.style.cssText=`position:fixed;left:0;right:0;bottom:0;height:82vh;background:white;border-radius:20px 20px 0 0;overflow-y:auto;z-index:9999;transform:translateY(100%);transition:transform 0.35s cubic-bezier(0.4,0,0.2,1);`)}
1openPanel(t){this.ensurePanel(),this.applyPanelStyles();let n=this.isDesktop(),r=t.bio.split(`
2
3`).filter(Boolean).map(t=>`<p style="font-size:15px;color:#374151;line-height:1.75;margin-bottom:16px;">${e(t)}</p>`).join(``),i=t.headshot?`<img src="${e(t.headshot)}" alt="${e(t.headshotAlt)}" style="width:${n?`100px`:`80px`};aspect-ratio:1;border-radius:12px;object-fit:cover;object-position:top;flex-shrink:0;">`:`<div style="width:${n?`100px`:`80px`};aspect-ratio:1;border-radius:12px;background:#f3f4f6;flex-shrink:0;"></div>`,a=n?``:`<div style="display:flex;justify-content:center;padding:10px 0 0;"><div style="width:36px;height:4px;background:#e5e7eb;border-radius:2px;"></div></div>`;this.panel.innerHTML=`
4      ${a}
5      <div style="position:sticky;top:0;background:white;padding:14px 20px 0;display:flex;justify-content:flex-end;z-index:1;">
6        <button data-close style="width:36px;height:36px;border-radius:50%;border:none;background:#f3f4f6;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;">
7          <svg width="16" height="16" fill="none" viewBox="0 0 24 24"><path d="M18 6L6 18M6 6l12 12" stroke="#6b7280" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
8        </button>
9      </div>
10      <div style="padding:${n?`16px 40px 40px`:`12px 24px 40px`};">
11        <div style="display:flex;gap:16px;align-items:flex-start;margin-bottom:24px;">
12          ${i}
13          <div style="padding-top:4px;">
14            <p style="font-size:${n?`20px`:`17px`};font-weight:700;color:#111827;line-height:1.2;">${e(t.name)}</p>
15            <p style="font-size:${n?`14px`:`13px`};color:#6b7280;margin-top:4px;">${e(t.title)}</p>
16          </div>
17        </div>
18        <div style="border-top:1px solid #f3f4f6;padding-top:20px;">${r}</div>
19      </div>
20    `,this.panel.querySelector(`[data-close]`)?.addEventListener(`click`,()=>this.closePanel()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.panel&&(this.panel.style.transform=n?`translateX(0)`:`translateY(0)`,this.overlay&&(this.overlay.style.opacity=`1`,this.overlay.style.pointerEvents=`all`),document.body.style.overflow=`hidden`)})})}closePanel(){this.panel&&(this.panel.style.transform=this.closedTransform(),this.overlay&&(this.overlay.style.opacity=`0`,this.overlay.style.pointerEvents=`none`),document.body.style.overflow=``)}};customElements.get(`root-leadership-scroll`)||customElements.define(`root-leadership-scroll`,t);

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.