/* AskTam MCP Admin JS */ (function(){ 'use strict'; function initToolsForm(){ var form=document.getElementById('asktam-mcp-tools-form'); if(!form)return; var en=form.querySelector('.asktam-mcp-enable-all'); var dis=form.querySelector('.asktam-mcp-disable-all'); if(en)en.addEventListener('click',function(){form.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=true;});updateCards(form);}); if(dis)dis.addEventListener('click',function(){form.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=false;});updateCards(form);}); form.querySelectorAll('.asktam-mcp-category').forEach(function(cat){ var ce=cat.querySelector('.asktam-mcp-cat-enable-all'); var cd=cat.querySelector('.asktam-mcp-cat-disable-all'); if(ce)ce.addEventListener('click',function(){cat.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=true;});updateCards(form);}); if(cd)cd.addEventListener('click',function(){cat.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=false;});updateCards(form);}); }); form.addEventListener('change',function(e){if(e.target.type==='checkbox')updateCards(form);}); } function updateCards(form){ form.querySelectorAll('.asktam-mcp-tool-card').forEach(function(card){ var cb=card.querySelector('input[type="checkbox"]'); card.classList.toggle('is-enabled',cb.checked); card.classList.toggle('is-disabled',!cb.checked); }); } /* ---- Categories (collapsible) + per-tool expand arrow (cards minimized by default) ---- */ var LSKEY='asktamMcpCatCollapsed'; function loadState(){try{return JSON.parse(localStorage.getItem(LSKEY)||'{}')||{};}catch(e){return {};}} function saveState(m){try{localStorage.setItem(LSKEY,JSON.stringify(m));}catch(e){}} function initCollapsibleTools(){ var form=document.getElementById('asktam-mcp-tools-form'); if(!form)return; var state=loadState(); var cats=form.querySelectorAll('.asktam-mcp-category'); function setAll(collapsed){ cats.forEach(function(cat){ cat.classList.toggle('is-collapsed',collapsed); state[cat.getAttribute('data-category')||'']=collapsed; }); saveState(state); } function setAllCards(min){ form.querySelectorAll('.asktam-mcp-tool-card').forEach(function(card){ card.classList.toggle('is-min',min); var b=card.querySelector('.asktam-mcp-card-min'); if(b){b.textContent=min?'▸':'▾';b.setAttribute('aria-label',min?'Expand tool':'Minimize tool');} }); } // Global controls: category expand/collapse + expand/minimize every tool card var bulk=form.querySelector('.asktam-mcp-bulk-actions'); if(bulk && !bulk.querySelector('.asktam-mcp-collapse-tools')){ var wrap=document.createElement('span'); wrap.className='asktam-mcp-collapse-tools'; var exp=document.createElement('button');exp.type='button';exp.className='button asktam-mcp-expand-all';exp.textContent='Expand all'; var col=document.createElement('button');col.type='button';col.className='button asktam-mcp-collapse-all';col.textContent='Collapse all'; wrap.appendChild(exp);wrap.appendChild(col); var save=bulk.querySelector('.asktam-mcp-bulk-save'); if(save)bulk.insertBefore(wrap,save);else bulk.appendChild(wrap); // Expand all = open every category AND open every tool card; Collapse all = reverse exp.addEventListener('click',function(){setAll(false);setAllCards(false);}); col.addEventListener('click',function(){setAll(false);setAllCards(true);}); } cats.forEach(function(cat){ var id=cat.getAttribute('data-category')||''; var header=cat.querySelector('.asktam-mcp-category-header'); if(header && !header.querySelector('.asktam-mcp-cat-caret')){ var caret=document.createElement('span'); caret.className='asktam-mcp-cat-caret'; caret.setAttribute('aria-hidden','true'); caret.textContent='▾'; header.insertBefore(caret,header.firstChild); } // Categories default EXPANDED so the full tool list is visible. var collapsed=(id in state)?!!state[id]:false; cat.classList.toggle('is-collapsed',collapsed); if(header && !header.dataset.collBound){ header.dataset.collBound='1'; header.addEventListener('click',function(e){ if(e.target.closest('.asktam-mcp-category-actions'))return; // let All/None work var now=!cat.classList.contains('is-collapsed'); cat.classList.toggle('is-collapsed',now); state[id]=now;saveState(state); }); } }); // Per-tool arrow — each tool MINIMIZED by default (shows just the name). Arrow expands it. form.querySelectorAll('.asktam-mcp-tool-card').forEach(function(card){ if(card.querySelector('.asktam-mcp-card-min'))return; card.classList.add('is-min'); var b=document.createElement('button'); b.type='button'; b.className='asktam-mcp-card-min'; b.setAttribute('aria-label','Expand tool'); b.textContent='▸'; // right-pointing arrow = minimized b.addEventListener('click',function(e){ e.preventDefault();e.stopPropagation(); // don't toggle the tool's checkbox var min=card.classList.toggle('is-min'); b.textContent=min?'▸':'▾'; // ▸ minimized / ▾ expanded b.setAttribute('aria-label',min?'Expand tool':'Minimize tool'); }); card.appendChild(b); }); } function initFooter(){ var admin=document.querySelector('.asktam-mcp-admin'); if(!admin||admin.querySelector('.asktam-mcp-footer'))return; var f=document.createElement('div'); f.className='asktam-mcp-footer'; f.innerHTML='Built by AskTam.net'; admin.appendChild(f); } function setBlock(codeId,copyId,text){ var c=document.getElementById(codeId); var t=document.getElementById(copyId); if(c)c.textContent=text; if(t)t.value=text; } function initConnectionConfigs(){ var btn=document.getElementById('asktam-generate-configs'); if(!btn)return; btn.addEventListener('click',function(){ var keyInput=document.getElementById('asktam-api-key-input'); if(!keyInput||!keyInput.value.trim()){alert('Please enter your API key.');return;} var apiKey=keyInput.value.trim(); var endpoint=(typeof asktamMcpAdmin!=='undefined')?asktamMcpAdmin.sseEndpoint:''; var bearer='Bearer '+apiKey; var configsDiv=document.getElementById('asktam-http-configs'); if(configsDiv)configsDiv.style.display=''; var claudeAiJson=JSON.stringify({ mcpServers:{wordpress:{url:endpoint,headers:{Authorization:bearer}}} },null,2); setBlock('asktam-claude-ai-code','asktam-claude-ai-copy',claudeAiJson); var desktopJson=JSON.stringify({ mcpServers:{wordpress:{url:endpoint,headers:{Authorization:bearer}}} },null,2); setBlock('asktam-desktop-code','asktam-desktop-copy',desktopJson); var cursorJson=JSON.stringify({ mcpServers:{wordpress:{url:endpoint,headers:{Authorization:bearer}}} },null,2); setBlock('asktam-cursor-code','asktam-cursor-copy',cursorJson); var windsurfJson=JSON.stringify({ mcpServers:{wordpress:{serverUrl:endpoint,headers:{Authorization:bearer}}} },null,2); setBlock('asktam-windsurf-code','asktam-windsurf-copy',windsurfJson); var remoteJson=JSON.stringify({ mcpServers:{wordpress:{command:'npx',args:['-y','mcp-remote',endpoint,'--header','Authorization: '+bearer]}} },null,2); setBlock('asktam-remote-code','asktam-remote-copy',remoteJson); }); } function copyToClipboard(text){ if(navigator.clipboard&&navigator.clipboard.writeText)return navigator.clipboard.writeText(text); return new Promise(function(resolve){ var ta=document.createElement('textarea');ta.value=text;ta.style.position='fixed';ta.style.opacity='0'; document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);resolve(); }); } function initCopyButtons(){ document.querySelectorAll('.asktam-mcp-copy-btn').forEach(function(btn){ btn.addEventListener('click',function(){ var id=this.getAttribute('data-target'); var src=document.getElementById(id); if(!src)return; var copied=(typeof asktamMcpAdmin!=='undefined'&&asktamMcpAdmin.copied)?asktamMcpAdmin.copied:'Copied!'; copyToClipboard(src.value).then(function(){ var orig=btn.textContent;btn.textContent=copied; setTimeout(function(){btn.textContent=orig;},2000); }); }); }); } function boot(){initToolsForm();initCollapsibleTools();initConnectionConfigs();initCopyButtons();initFooter();} if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',boot); }else{ boot(); } })();