PageSourceSearch

https://cedars-ncat.org/assets/themes/lattice/runtime.js

js cedars-ncat.org collected 2026-10-07 21:57:56 UTC 6,298 bytes, 1 lines download raw bytes

1function x(a,c=!0){let h=matchMedia("(prefers-reduced-motion: reduce)"),d=new AbortController,i=new Set,m=getComputedStyle(a).getPropertyValue("--ease-out").trim(),u=getComputedStyle(a).getPropertyValue("--ease-in-out").trim(),n=!c;document.addEventListener("keydown",()=>{n=!0},{signal:d.signal}),document.addEventListener("pointerdown",()=>{n=!1},{signal:d.signal});let p=(e,t,l)=>{if(h.matches||n)return;let o=e.animate(t,l);i.add(o),o.finished.then(()=>i.delete(o)).catch(()=>i.delete(o))};a.querySelectorAll(".hero-word").forEach((e,t)=>{p(e,[{opacity:0,transform:"translateY(105%)"},{opacity:1,transform:"translateY(0)"}],{duration:720,delay:100+t*80,easing:m,fill:"backwards"})}),a.querySelectorAll(".field-top, .hero-description, .hero-copy>.primary, .field-aside").forEach((e,t)=>{p(e,[{opacity:0,transform:"translateY(8px)"},{opacity:1,transform:"translateY(0)"}],{duration:500,delay:80+t*80,easing:m,fill:"backwards"})}),a.querySelectorAll(".hero-light").forEach((e,t)=>{p(e,[{opacity:.25,transform:`translate(${t?"-4%":"4%"}, 3%) scale(1.08)`},{opacity:1,transform:"translate(0, 0) scale(1)"}],{duration:1600,delay:t*80,easing:u,fill:"backwards"})}),a.querySelectorAll(".lab-backdrop, .prism-art img, .tool-photo img").forEach(e=>{p(e,[{opacity:.6,transform:"scale(1.025)"},{opacity:1,transform:"scale(1)"}],{duration:1200,easing:u})});let r=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&(t.target.matches(".instrument-photo")?p(t.target,[{clipPath:"inset(0 0 100% 0)"},{clipPath:"inset(0 0 0 0)"}],{duration:600,easing:u}):p(t.target,[{opacity:0,transform:"translateY(8px)"},{opacity:1,transform:"translateY(0)"}],{duration:300,easing:m}),r.unobserve(t.target))})},{threshold:.15});return a.querySelectorAll(".section-heading, .about-grid h2, .instrument-photo, .join-grid").forEach(e=>r.observe(e)),h.addEventListener("change",()=>{h.matches&&i.forEach(e=>e.finish())},{signal:d.signal}),()=>
1{r.disconnect(),d.abort(),i.forEach(e=>e.cancel())}}var g=[{id:"plan",name:"Plan",detail:"Define a process recipe and schedule an experimental workflow through a remote interface."},{id:"execute",name:"Execute",detail:"Run synthesis with programmable instruments, experiment monitoring and in-situ diagnostics."},{id:"analyze",name:"Analyze",detail:"Bring characterization and process data together, with experiment records in the LiST database."},{id:"refine",name:"Refine",detail:"Use AI and digital twin simulations to inform the next experiment and refine its recipe."}];var M=4.8;function E(a){let c=a.querySelector(".cloud-map"),h=matchMedia("(prefers-reduced-motion: reduce)"),d=new AbortController,i=a.querySelector("[data-cloud-motion]"),m=g.map(s=>a.querySelector(`[data-cloud-packet="${s.id}"] animateMotion`)),u=0,n=!1,p=!1,r=!1,e=0,t=s=>{u=s,a.dataset.step=g[s].id,a.querySelectorAll("[data-cloud-stage]").forEach((f,y)=>f.setAttribute("aria-pressed",String(y===s))),g.forEach((f,y)=>{a.querySelector(`#cloud-detail-${f.id}`).hidden=y!==s})},l=()=>{e=c.getCurrentTime(),m[u].beginElement()},o=()=>{let s=!n&&!h.matches&&p&&!document.hidden;s&&!r?c.unpauseAnimations():!s&&r&&c.pauseAnimations(),r=s,a.dataset.running=String(s),i.disabled=h.matches,i.textContent=n?"\u25B7":"\u2161",i.setAttribute("aria-label",h.matches?"Cloud diagram motion reduced":n?"Play cloud diagram":"Pause cloud diagram"),i.setAttribute("aria-pressed",String(!n&&!h.matches))};m.forEach((s,f)=>{s.addEventListener("endEvent",()=>{f!==u||c.getCurrentTime()<e+M-.001||(t((u+1)%g.length),l())},{signal:d.signal})}),a.querySelectorAll("[data-cloud-stage]").forEach((s,f)=>{s.addEventListener("click",()=>{n=!0,o(),t(f),l()},{signal:d.signal})}),i.addEventListener("click",()=>{n=!n,o()},{signal:d.signal}),h.addEventListener("change",o,{signal:d.signal}),document.addEventListener("visibilitychange",o,{signal:d.signal});let b=new IntersectionObserver(s=>{p=s[0].isIntersecting,o()},{threshold:.1});return c.pauseAnimations(),l(),b.observe(a),a.dataset.enhanced="true",o(),()=>{d.abort(),b.disconnect(),c.pauseAnimations()}}function S(a){a.dataset.latticeReady="true";let c=new AbortController,h=x(a),d=[...a.querySelectorAll("[data-cloud-lab]")].map(E),i=null,m=!1,u=null,n=a.querySelector("[data-material-scene]"),p=(r,e=!1)=>{a.querySelectorAll("[data-science]").forEach((t,l)=>{t.setAttribute("aria-selected",String(l===r)),t.tabIndex=l===r?0:-1,l===r&&e&&t.focus()}),a.querySelectorAll("[data-science-panel]").forEach((t,l)=>{t.hidden=l!==r})};return a.addEventListener("click",r=>{let e=r.target.closest("button");if(e){if(e.matches("[data-science]")&&p(Number(e.dataset.science)),e.matches("[data-filter]")){let t=0;a.querySelectorAll("[data-category]").forEach(o=>{o.hidden=e.dataset.filter!=="All"&&o.dataset.category!==e.dataset.filter,o.hidden||t++}),a.querySelectorAll("[data-filter]").forEach(o=>o.setAttribute("aria-pressed",String(o===e)));let l=a.querySelector("#instrument-count");l&&(l.textContent=`${t} instruments`)}if(e.matches(".layer-control")&&n){let t=e.getAttribute("aria-pressed")!=="true";i?i.setExpanded(t):(e.setAttribute("aria-pressed",String(t)),e.innerHTML=`${t?"Hide":"Show"} labels <span aria-hidden="true">\u2197</span>`,n.dataset.expanded=String(t),n.querySelector(".layer-labels")?.setAttribute("aria-hidden",String(!t)))}}},{signal:c.signal}),a.addEventListener("keydown",r=>{let e=r.target;if(e.matches("[data-science]")&&["ArrowLeft","ArrowRight","Home","End"].includes(r.key)){r.preventDefault();let t=a.querySelectorAll("[data-science]").length,l=Number(e.dataset.science);p(r.key==="Home"?0:r.key==="End"?t-1:(l+(r.key==="ArrowRight"?1:t-1))%t,!0)}},{signal:c.signal}),n&&(n.querySelectorAll(".scene-poster img").forEach(r=>{let e=()=>{r.naturalWidth&&(r.closest("picture").dataset.ready="true")};r.addEventListener("load",e,{once:!0,signal:c.signal}),r.complete&&e()}),u=new IntersectionObserver(r=>{r.some(e=>e.isIntersecting)&&(u?.disconnect(),import("./material-scene-NPUX7WSD.js").then(({mountMaterialScene:e})=>{m||!n.isConnected||(i=e(n),n.querySelector(".layer-control")?.getAttribute("aria-pressed")==="true"&&i?.setExpanded(!0))}).catch(()=>{m||(n.dataset.renderer="fallback")}))},{rootMargin:"300px"}),u.observe(n)),()=>{delete a.dataset.latticeReady,m=!0,c.abort(),u?.disconnect(),i?.dispose(),d.forEach(r=>r()),h()}}export{S as mount};

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.