1!function(){function qs(el,sel){return el.querySelector(sel)}function qsa(el,sel){return Array.from(el.querySelectorAll(sel))}function create({id:id,onOpen:onOpen,onClose:onClose}={}){if(!id)throw new Error("BUModal.create requires { id }");const modal=function(id){let wrapper=document.getElementById(id);if(wrapper)return wrapper;wrapper=document.getElementById("bu-modal-tpl").content.cloneNode(!0).firstElementChild,wrapper.id=id,wrapper.setAttribute("aria-labelledby",id+"__title");const titleEl=qs(wrapper,"[data-modal-title]");return titleEl&&(titleEl.id=id+"__title"),qs(wrapper,".relative").addEventListener("click",e=>e.stopPropagation()),document.body.appendChild(wrapper),window.gsap&&gsap.set(wrapper,{autoAlpha:0}),wrapper}(id),closeBtn=qs(modal,"[data-close]"),mountEl=qs(modal,"[data-mount]");let lastActive=null,scrollY=0;function onKeydown(e){if("Escape"!==e.key){if("Tab"===e.key){const focusable=qsa(modal,'button,[href],input,select,textarea,[tabindex]:not([tabindex="-1"])');if(!focusable.length)return;const first=focusable[0],last=focusable[focusable.length-1];e.shiftKey&&document.activeElement===first?(last.focus(),e.preventDefault()):e.shiftKey||document.activeElement!==last||(first.focus(),e.preventDefault())}}else hide()}function show(triggerBtn){lastActive=document.activeElement,scrollY=window.pageYOffset||document.documentElement.scrollTop,document.documentElement.classList.add("bu-modal-open"),document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top="-"+scrollY+"px",document.body.style.width="100%",window.gsap?(gsap.killTweensOf(modal),gsap.set(modal,{display:"flex"}),gsap.fromTo(modal,{autoAlpha:0},{autoAlpha:1,overwrite:"auto"})):modal.style.display="flex",onOpen&&onOpen(mountEl,triggerBtn),queueMicrotask(()=>closeBtn&&closeBtn.focus()),document.addEventListener("keydown",onKeydown)}function hide(){onClose&&onClose(mountEl),document.documentElement.classList.remove("bu-modal-open"),document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo(0,scrollY),window.gsap?(gsap.killTweensOf(modal),gsap.to(modal,{autoAlpha:0,overwrite:"auto",onComplete:()=>{modal.style.display="none"}})):modal.style.display="none",document.removeEventListener("keydown",onKeydown),lastActive&&lastActive.focus&&lastActive.focus()}function wireTriggers(scope){qsa(scope||document,'[data-open-modal="'+id+'"]').forEach(btn=>{btn.addEventListener("click",e=>{e.preventDefault(),show(btn)},{passive:!1})})}modal.addEventListener("mousedown",e=>{e.target===modal&&hide()}),closeBtn&&closeBtn.addEventListener("click",e=>{e.preventDefault(),hide()}),wireTriggers();const api={id:id,el:modal,mountEl:mountEl,show:show,hide:hide,wireTriggers:wireTriggers};return window.BUModals=window.BUModals||{},window.BUModals[id]=api,api}function createVideo({id:id}={}){return create({id:id,onOpen(mountEl,btn){const vid=btn&&btn.getAttribute("data-vimeo-id"),hash=btn&&btn.getAttribute("data-vimeo-hash")||"",extraParams=btn&&btn.getAttribute("data-vimeo-params")||"";if(!vid)return;mountEl.className="w-full aspect-video bg-black";const iframe=document.createElement("iframe");iframe.src=function(id,hash,extraParams){const params=new URLSearchParams({autoplay:"1",muted:"0",playsinline:"1",title:"0",byline:"0",portrait:"0",dnt:"1"});return hash&¶ms.set("h",hash),extraParams&&new URLSearchParams(extraParams).forEach((val,key)=>params.set(key,val)),"https://player.vimeo.com/video/"+id+"?"+params.toString()}(vid,hash,extraParams),iframe.allow="autoplay; fullscreen; picture-in-picture",iframe.setAttribute("allowfullscreen",""),iframe.className="w-full h-full",mountEl.appendChild(iframe)},onClose(mountEl){mountEl.innerHTML=""}})}function createEmbed({id:id}={}){const srcs=new WeakMap;const modal=create({id:id,onOpen(){qsa(modal.el,"iframe").forEach(iframe=>{const stored=srcs.get(iframe);stored&&(iframe.src=stored)})},onClose(){qsa(modal.el,"iframe").forEach(iframe=>{srcs.has(iframe)||srcs.set(iframe,iframe.src),iframe.removeAttribute("src")})}});return modal}function autoInit(){const seen={};qsa(document,"[data-open-modal][data-vimeo-id]").forEach(btn=>{const id=btn.getAttribute("data-open-modal");
1id&&!seen[id]&&(seen[id]=!0,createVideo({id:id}))}),qsa(document,"[data-open-modal]:not([data-vimeo-id])").forEach(btn=>{const id=btn.getAttribute("data-open-modal");if(!id||seen[id])return;document.getElementById(id)&&(seen[id]=!0,id.startsWith("cta-embed-")?createEmbed({id:id}):create({id:id}))})}window.BUModal||(window.BUModal={create:create,createVideo:createVideo,createEmbed:createEmbed},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",autoInit):autoInit())}(); 2//# sourceURL=https://9253440.fs1.hubspotusercontent-na1.net/hubfs/9253440/hub_generated/template_assets/1/209470273090/1790207699669/template_modal.js
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.