'; echo '(function(){'; echo 'var drawer=document.getElementById("prv-drawer");'; echo 'var body=document.getElementById("prv-drawer-body");'; echo 'var closeBtn=document.getElementById("prv-drawer-close");'; echo 'var lastFocus=null;'; echo 'function openDrawer(callId,triggerEl){'; echo ' lastFocus=triggerEl||null;'; echo ' drawer.removeAttribute("hidden");'; echo ' body.setAttribute("aria-busy","true");'; echo ' var skel=document.querySelector(".prv-drawer-skeleton");'; echo ' if(skel){body.innerHTML=skel.outerHTML;}'; echo ' closeBtn.focus();'; echo ' loadCall(callId);'; echo '}'; echo 'function closeDrawer(){'; echo ' drawer.setAttribute("hidden","");'; echo ' body.setAttribute("aria-busy","false");'; echo ' if(lastFocus&&lastFocus.focus){lastFocus.focus();}'; echo '}'; echo 'function loadCall(callId){'; echo ' var data=new URLSearchParams();'; echo ' data.append("action","prv_call_detail");'; echo ' data.append("nonce","' . $nonce_js . '");'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- esc_js applied above echo ' data.append("call_id",callId);'; echo ' fetch("' . $ajax_js . '",{method:"POST",credentials:"same-origin",body:data})'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- esc_url applied above echo ' .then(function(r){return r.json();})'; echo ' .then(function(json){'; echo ' if(json.success){'; echo ' body.innerHTML=json.data.html;'; echo ' body.setAttribute("aria-busy","false");'; echo ' attachCopyButtons();'; echo ' }else{'; echo ' body.innerHTML="

"+json.data+"

";'; echo ' body.setAttribute("aria-busy","false");'; echo ' }'; echo ' })'; echo ' .catch(function(){'; echo ' body.innerHTML="

Error loading call details.

";'; echo ' body.setAttribute("aria-busy","false");'; echo ' });'; echo '}'; echo 'function attachCopyButtons(){'; echo ' document.querySelectorAll(".prv-copy-btn").forEach(function(btn){'; echo ' btn.addEventListener("click",function(){'; echo ' var target=document.getElementById(btn.dataset.copyTarget);'; echo ' if(target){'; echo ' var orig=btn.textContent;'; echo ' navigator.clipboard.writeText(target.textContent||"").then(function(){'; echo ' btn.textContent="Copied!";'; echo ' setTimeout(function(){btn.textContent=orig;},1500);'; echo ' });'; echo ' }'; echo ' });'; echo ' });'; echo '}'; echo 'closeBtn.addEventListener("click",closeDrawer);'; echo 'document.addEventListener("keydown",function(e){'; echo ' if("Escape"===e.key&&!drawer.hasAttribute("hidden")){closeDrawer();}'; echo '});'; echo 'document.querySelectorAll(".prv-call-row").forEach(function(row){'; echo ' function handleOpen(){openDrawer(row.dataset.callId,row);}'; echo ' row.addEventListener("click",handleOpen);'; echo ' row.addEventListener("keydown",function(e){'; echo ' if("Enter"===e.key||" "===e.key){e.preventDefault();handleOpen();}'; echo ' });'; echo '});'; echo '})();'; echo ''; } }