UNPKG

mongoku

Version:

[![CI](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml/badge.svg)](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)

7 lines (6 loc) 42.3 kB
import{f as k,a as g,b as ut,t as wt,c as Pt}from"../chunks/DaMh_eeB.js";import{b as C,al as ct,g as e,p as Nt,a as Dt,f as te,c as i,s as a,u as A,r as l,t as D,a8 as ze,a1 as Me,O as Be,d as v,n as tt,b9 as Xt,aA as xt,L as yt,e as dt}from"../chunks/IwGwbOe7.js";import{d as jt,a as E,s as O,e as Mt}from"../chunks/BDGd1aqF.js";import{a as Rt}from"../chunks/DFXj4NOH.js";import{i as S,p as Ee}from"../chunks/CCOVnadf.js";import{s as We,c as vt,e as Bt,n as G}from"../chunks/DqxUmOYD.js";import{a as Oe,p as $t}from"../chunks/CKvueigk.js";import{a as be,b as ht,r as It,s as Pe}from"../chunks/CmI1igJD.js";import{b as fe}from"../chunks/ChWGK2Ce.js";import{p as Yt,P as mt,q as bt,s as Tt,t as Zt,u as er,b as tr,v as rr,i as or,w as ar}from"../chunks/YMZQSnF3.js";import{g as nr,f as St}from"../chunks/v8XDA7ui.js";import{J as sr,j as _t}from"../chunks/DCAtHodH.js";import{s as Et}from"../chunks/8tf5Lvl3.js";import{M as lr}from"../chunks/Z7BFksgg.js";import{p as ft,s as gt,P as ir}from"../chunks/IixngxlS.js";import{b as et}from"../chunks/CkMoyTwc.js";import{p as At}from"../chunks/CTk2PBcX.js";import{a as oe}from"../chunks/BN_N9-2s.js";const cr=Symbol();class Ot extends URLSearchParams{#e=C(0);#o=ur();#t=!1;#r(){if(!this.#o||this.#t)return;this.#t=!0;const c=this.toString();this.#o.search=c&&`?${c}`,this.#t=!1}[cr](c){if(!this.#t){this.#t=!0;for(const y of[...super.keys()])super.delete(y);for(const[y,r]of c)super.append(y,r);ct(this.#e),this.#t=!1}}append(c,y){super.append(c,y),this.#r(),ct(this.#e)}delete(c,y){var r=super.has(c,y);super.delete(c,y),r&&(this.#r(),ct(this.#e))}get(c){return e(this.#e),super.get(c)}getAll(c){return e(this.#e),super.getAll(c)}has(c,y){return e(this.#e),super.has(c,y)}keys(){return e(this.#e),super.keys()}set(c,y){var r=super.getAll(c).join("");super.set(c,y),r!==super.getAll(c).join("")&&(this.#r(),ct(this.#e))}sort(){super.sort(),this.#r(),ct(this.#e)}toString(){return e(this.#e),super.toString()}values(){return e(this.#e),super.values()}entries(){return e(this.#e),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return e(this.#e),super.size}}let dr=null;function ur(){return dr}const vr=async q=>({...q.data,categories:[{key:"documents",label:"Documents"},{key:"indexes",label:"Indexes"},{key:"mappings",label:"Mappings"},{key:"schema",label:"Schema"}]}),Co=Object.freeze(Object.defineProperty({__proto__:null,load:vr},Symbol.toStringTag,{value:"Module"}));var pr=k('<button class="btn btn-default btn-sm">Close</button>'),mr=k('<p class="text-xs mt-2" style="color: var(--error);">⚠️ This query is using a collection scan (COLLSCAN). Consider adding an index for better performance.</p>'),br=k('<div class="efficiency-bar mb-6"><div class="flex justify-between items-center mb-2"><span class="text-sm font-semibold" style="color: var(--text);">Efficiency</span> <span class="text-sm font-mono" style="color: var(--text-secondary);"> </span></div> <div class="h-2 rounded-full bg-[var(--color-3)] overflow-hidden"><div></div></div> <!></div>'),fr=k('<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mb-6"><div class="metric-card svelte-10vh4gh"><span class="metric-label svelte-10vh4gh">Execution Time</span> <span class="metric-value svelte-10vh4gh"> </span></div> <div class="metric-card svelte-10vh4gh"><span class="metric-label svelte-10vh4gh">Documents Returned</span> <span class="metric-value svelte-10vh4gh"> </span></div> <div class="metric-card svelte-10vh4gh"><span class="metric-label svelte-10vh4gh">Documents Examined</span> <span class="metric-value svelte-10vh4gh"> </span></div> <div class="metric-card svelte-10vh4gh"><span class="metric-label svelte-10vh4gh">Keys Examined</span> <span class="metric-value svelte-10vh4gh"> </span></div> <div class="metric-card svelte-10vh4gh"><span class="metric-label svelte-10vh4gh">Index Used</span> <span> </span></div> <div class="metric-card svelte-10vh4gh"><span class="metric-label svelte-10vh4gh">Query Stage</span> <span class="metric-value svelte-10vh4gh"> </span></div></div> <!>',1),gr=k('<!> <details class="mt-4"><summary class="cursor-pointer text-sm font-semibold mb-3" style="color: var(--link);">View full explain output</summary> <div class="p-4 rounded-xl bg-[var(--color-3)] font-mono text-sm overflow-auto max-h-[400px] border border-[var(--border-color)]"><!></div></details>',1);function xr(q,c){Nt(c,!0);function y(h){if(!h)return null;if(h.indexName||h.stage==="IXSCAN"&&h.indexName)return String(h.indexName);if(h.inputStage){const b=y(h.inputStage);if(b)return b}if(Array.isArray(h.inputStages))for(const b of h.inputStages){const j=y(b);if(j)return j}if(h.queryPlan){const b=y(h.queryPlan);if(b)return b}return null}function r(h){if(!h)return!1;if(h.stage==="COLLSCAN"||h.inputStage&&r(h.inputStage))return!0;if(Array.isArray(h.inputStages)){for(const b of h.inputStages)if(r(b))return!0}return!!(h.queryPlan&&r(h.queryPlan))}const t=A(()=>{if(!c.data||typeof c.data!="object")return null;const h=c.data,b=h.executionStats,Q=h.queryPlanner?.winningPlan,ae=y(Q),Ne=r(Q);let _;ae?_=ae:Ne?_="COLLSCAN":_="N/A";const X=Q?.stage??"N/A";return{executionTimeMs:b?.executionTimeMillis??"N/A",docsExamined:b?.totalDocsExamined??"N/A",keysExamined:b?.totalKeysExamined??"N/A",nReturned:b?.nReturned??"N/A",indexUsed:_,stage:X}}),d=A(()=>{if(!e(t))return null;const h=Number(e(t).keysExamined),b=Number(e(t).nReturned);return h>0?(b/h*100).toFixed(1):"0.0"}),ce=A(()=>{if(!e(t))return"";const h=Number(e(t).keysExamined),b=Number(e(t).docsExamined),j=Number(e(t).nReturned);return h>0?`${j} / ${h} keys to docs`:`${h} keys / ${b} docs`}),F=A(()=>e(t)?!(e(t).indexUsed==="COLLSCAN"||e(t).indexUsed==="N/A"):null);lr(q,{get show(){return c.show},get onclose(){return c.onclose},title:"Execution Stats",wide:!0,footer:b=>{var j=pr();E("click",j,function(...Q){c.onclose?.apply(this,Q)}),g(b,j)},children:(b,j)=>{var Q=gr(),ae=te(Q);{var Ne=K=>{var ge=fr(),ke=te(ge),ne=i(ke),xe=a(i(ne),2),ye=i(xe);l(xe),l(ne);var de=a(ne,2),De=a(i(de),2),he=i(De,!0);l(De),l(de);var Re=a(de,2),Fe=a(i(Re),2),je=i(Fe,!0);l(Fe),l(Re);var Ie=a(Re,2),$e=a(i(Ie),2),se=i($e,!0);l($e),l(Ie);var we=a(Ie,2),Le=a(i(we),2);let Se;var Qe=i(Le,!0);l(Le),l(we);var Ge=a(we,2),He=a(i(Ge),2),rt=i(He,!0);l(He),l(Ge),l(ke);var ot=a(ke,2);{var Ke=qe=>{var Ce=br(),ue=i(Ce),Te=a(i(ue),2),Ve=i(Te);l(Te),l(ue);var n=a(ue,2),u=i(n);let m;l(n);var w=a(n,2);{var M=B=>{var N=mr();g(B,N)};S(w,B=>{e(F)===!1&&B(M)})}l(Ce),D((B,N)=>{O(Ve,`${e(ce)??""} (${e(d)??""}%)`),m=We(u,1,"h-full rounded-full transition-all duration-300",null,m,B),Et(u,`width: ${N??""}%`)},[()=>({"bg-green-500":e(F)&&Number(e(d))>=70,"bg-yellow-500":e(F)&&Number(e(d))>=30&&Number(e(d))<70,"bg-red-500":!e(F)||Number(e(d))<30}),()=>e(F)?Math.min(Number(e(d)),100):100]),g(qe,Ce)};S(ot,qe=>{e(d)!==null&&qe(Ke)})}D((qe,Ce,ue)=>{O(ye,`${e(t).executionTimeMs??""}ms`),O(he,qe),O(je,Ce),O(se,ue),Se=We(Le,1,"metric-value svelte-10vh4gh",null,Se,{warning:e(t).indexUsed==="COLLSCAN",good:e(t).indexUsed!=="COLLSCAN"}),O(Qe,e(t).indexUsed),O(rt,e(t).stage)},[()=>typeof e(t).nReturned=="number"?e(t).nReturned.toLocaleString():e(t).nReturned,()=>typeof e(t).docsExamined=="number"?e(t).docsExamined.toLocaleString():e(t).docsExamined,()=>typeof e(t).keysExamined=="number"?e(t).keysExamined.toLocaleString():e(t).keysExamined]),g(K,ge)};S(ae,K=>{e(t)&&K(Ne)})}var _=a(ae,2),X=a(i(_),2),Je=i(X);sr(Je,{get value(){return c.data},collapsed:!1}),l(X),l(_),g(b,Q)},$$slots:{footer:!0,default:!0}}),Dt()}jt(["click"]);function Ft(q,c){const y=t=>{q&&!q.contains(t.target)&&c()},r=setTimeout(()=>{document.addEventListener("click",y,!0)},0);return{destroy(){clearTimeout(r),document.removeEventListener("click",y,!0)}}}var yr=ut('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"></path></svg>');function Qt(q,c){let y=Ee(c,"class",3,"w-4 h-4");var r=yr();D(()=>We(r,0,vt(y()))),g(q,r)}var hr=ut('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path><path d="m15 5 4 4"></path></svg>');function _r(q,c){let y=Ee(c,"class",3,"w-4 h-4");var r=hr();D(()=>We(r,0,vt(y()))),g(q,r)}var kr=k('<textarea placeholder="[]" name="query" rows="5" class="w-full px-3 py-2 bg-transparent outline-none font-mono text-[13px] resize-y svelte-1o0c7a1" style="color: var(--text);"></textarea>'),wr=k('<input type="text" name="field" placeholder="field name" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/>'),Sr=k('<textarea name="query" rows="5" class="w-full px-3 py-2 bg-transparent outline-none font-mono text-[13px] resize-y svelte-1o0c7a1" style="color: var(--text);"></textarea>'),qr=k('<input type="text" name="query" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/>'),Cr=k('<button type="button" class="h-9 px-3 rounded-xl border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] transition cursor-pointer text-[13px] font-medium flex items-center gap-1" style="color: var(--text-secondary);" title="Filter by document creation time"><span>📊</span> <!></button>'),Er=k('<button type="button" class="h-9 px-3 rounded-xl border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] transition disabled:opacity-50 cursor-pointer" style="color: var(--text);"><!></button>'),Nr=k('<button type="button" class="h-9 px-3 rounded-xl border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] transition disabled:opacity-50 cursor-pointer text-[13px] font-medium" style="color: var(--link);"> </button>'),Dr=k('<div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50 sm:col-span-2"><div class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]" style="color: var(--text-secondary);">Filter (optional)</div> <input type="text" name="query" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/></div>'),jr=k('<div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50"><div class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]" style="color: var(--text-secondary);">Sort</div> <input type="text" name="sort" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/></div> <div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50"><div class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]" style="color: var(--text-secondary);">Project</div> <input type="text" name="project" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/></div>',1),Ir=k('<div class="grid gap-2 sm:grid-cols-2"><!> <div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50"><div class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]" style="color: var(--text-secondary);">Skip</div> <input type="number" name="skip" min="0" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/></div> <div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50"><div class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]" style="color: var(--text-secondary);">Limit</div> <input type="number" name="limit" min="1" class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none svelte-1o0c7a1" style="color: var(--text);"/></div></div>'),Lr=k('<div class="fixed z-[1000] rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] shadow-lg overflow-hidden"><button type="button" class="w-full px-3 py-2 text-left text-[13px] hover:bg-[var(--color-3)] transition cursor-pointer" style="color: var(--text);">Query</button> <button type="button" class="w-full px-3 py-2 text-left text-[13px] hover:bg-[var(--color-3)] transition cursor-pointer" style="color: var(--text);">Distinct</button> <button type="button" class="w-full px-3 py-2 text-left text-[13px] hover:bg-[var(--color-3)] transition cursor-pointer" style="color: var(--text);">Aggregation</button></div>'),Ur=k('<span class="inline-block w-3 h-3 border-2 border-[var(--border-color)] border-t-[var(--link)] rounded-full animate-spin"></span>'),Pr=k('<button type="button" class="w-full px-3 py-2 text-left text-[13px] hover:bg-[var(--color-3)] transition cursor-pointer flex justify-between items-center" style="color: var(--text);"><span> </span> <span class="font-medium tabular-nums" style="color: var(--text-secondary);"><!></span></button>'),Mr=k('<div class="fixed z-[1000] rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] shadow-lg overflow-hidden"></div>'),Rr=k('<div class="rounded-2xl border border-[var(--border-color)] bg-[var(--light-background)]/70 shadow-sm p-3 sm:p-4"><form class="flex flex-col gap-3" method="GET" action="?"><div class="flex items-stretch gap-2"><div class="flex-1 flex items-stretch rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50"><button type="button" class="h-full px-3 flex items-center gap-1 text-[13px] border-r border-[var(--border-color)] hover:bg-[var(--color-3)] transition cursor-pointer" style="color: var(--text-secondary);"><span class="capitalize"> </span> <!></button> <!></div> <input type="hidden" name="mode"/> <input type="hidden" name="v"/> <div class="flex items-center gap-2"><!> <button type="button" class="h-9 px-3 rounded-xl border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[15px] font-semibold leading-none transition cursor-pointer" style="color: var(--text);" title="Toggle optional fields"> </button> <!> <!> <button type="submit" class="h-9 px-4 py-0 rounded-xl btn btn-success text-lg font-semibold transition">Go</button></div></div> <!></form></div> <!> <!>',1);function $r(q,c){Nt(c,!0);const y=2e4;let r=Ee(c,"params",15),t=Ee(c,"editMode",15,!1),d=Ee(c,"readonly",11,!1),ce=Ee(c,"explainLoading",3,!1),F=C(ze(r().sort!=="{}"||r().project!=="{}"||r().skip!==0||r().limit!==20)),h=C(ze(Math.random())),b=C(void 0),j=C(!1),Q=C(void 0),ae=C(ze({left:"0px",top:"0px",minWidth:"140px"})),Ne=A(()=>r().query?.includes(` `)??!1);function _(s){if(s.key==="Enter"&&s.shiftKey){s.preventDefault();const p=s.target.selectionStart??0,x=r().query.slice(0,p),f=r().query.slice(p);r(r().query=x+` `+f,!0),Be().then(()=>{Be().then(()=>{e(b)?.setSelectionRange(p+1,p+1)})})}}function X(s){const o=s.clipboardData?.getData("text");if(o&&o.includes(` `)){s.preventDefault();const p=s.target,x=p.selectionStart??0,f=p.selectionEnd??x,L=r().query.slice(0,x),P=r().query.slice(f);r(r().query=L+o+P,!0);const W=x+o.length;Be().then(()=>{Be().then(()=>{e(b)?.setSelectionRange(W,W)})})}}Me(()=>{e(j)&&e(Q)&&Be().then(()=>{if(!e(Q))return;const s=e(Q).getBoundingClientRect();v(ae,{left:`${s.left}px`,top:`${s.bottom+5}px`,minWidth:`${s.width}px`},!0)})}),Me(()=>{(r().mode==="aggregation"||r().mode==="distinct")&&t()&&t(!1)}),Me(()=>{e(b)&&(e(b).setSelectionRange(1,1),e(b).focus())});async function Je(s){s.preventDefault(),Xt(h);const o=new FormData(e(ge)),p=[...o.entries()].map(f=>encodeURIComponent(f[0])+"="+encodeURIComponent(f[1])).join("&");if((At.url.pathname+"?"+p).length>y&&c.onsearch){c.onsearch(r());return}await nr(It(At.url.pathname+"?"+[...o.entries()].map(f=>encodeURIComponent(f[0])+"="+encodeURIComponent(f[1])).join("&")),{keepFocus:!0})}function K(s){if(r(r().mode=s,!0),v(j,!1),s==="aggregation"&&!r().query?.trimStart().startsWith("[")){const o=r().query?.trim();r(o&&o!=="{}"&&o!==""?r().query=`[{ $match: ${o} }]`:r().query="[]",!0)}else s==="query"&&r().query?.trimStart().startsWith("[")?r(r().query="{}",!0):s==="distinct"&&(r(r().field=void 0,!0),!r().query||r().query.trim()===""?r(r().query="{}",!0):r().query.trim()!=="{}"&&v(F,!0))}let ge=C(void 0);const ke=[{label:"Last 24 hours",days:1},{label:"Last 7 days",days:7},{label:"Last 30 days",days:30},{label:"Last 90 days",days:90},{label:"Last 180 days",days:180}];let ne=C(!1),xe=C(void 0),ye=C(ze({left:"0px",top:"0px",minWidth:"200px"})),de=C(!1),De=C(void 0),he=C(ze(ke.map(s=>({...s,count:null,error:null,loading:!1}))));Me(()=>{e(ne)&&e(xe)&&Be().then(()=>{if(!e(xe))return;const s=e(xe).getBoundingClientRect();v(ye,{left:`${s.right-200}px`,top:`${s.bottom+5}px`,minWidth:"200px"},!0)})});async function Re(){if(!c.server||!c.database||!c.collection||e(de))return;v(de,!0),v(he,ke.map(o=>({...o,count:null,error:null,loading:!0})),!0);const s=r().mode==="query"?r().query:void 0;v(De,s,!0);for(let o=0;o<ke.length;o++){const p=ke[o];try{const x=await Yt({server:c.server,database:c.database,collection:c.collection,days:p.days,query:s});e(he)[o]={...p,count:x.count,error:x.error,loading:!1}}catch(x){e(he)[o]={...p,count:null,error:x instanceof Error?x.message:String(x),loading:!1}}}v(de,!1)}function Fe(){if(v(ne,!e(ne)),!e(ne))return;const s=r().mode==="query"?r().query:void 0;(e(he).every(p=>p.count===null&&!p.error&&!p.loading)||e(De)!==s)&&Re()}function je(s){const o=Date.now(),p=s*24*60*60*1e3,f=Math.floor((o-p)/1e3).toString(16).padStart(8,"0")+"0000000000000000",L={$gte:{$type:"ObjectId",$value:f}};let P=`{_id: {$gte: ObjectId("${f}")}}`;try{const W=ft(r().query);if(W&&typeof W=="object"&&!Array.isArray(W)){const ve={...W,_id:L};P=gt(ve)}}catch{}r(r().query=P,!0),r(r().mode="query",!0),v(ne,!1),Be().then(()=>{e(ge)?.requestSubmit()})}var Ie=Rr(),$e=te(Ie),se=i($e),we=i(se),Le=i(we),Se=i(Le),Qe=i(Se),Ge=i(Qe,!0);l(Qe);var He=a(Qe,2);Qt(He,{class:"w-3 h-3"}),l(Se),et(Se,s=>v(Q,s),()=>e(Q));var rt=a(Se,2);{var ot=s=>{var o=kr();xt(o),et(o,p=>v(b,p),()=>e(b)),yt(()=>fe(o,()=>r().query,p=>r(r().query=p,!0))),Oe(o,(p,x)=>_t?.(p,x),()=>({onsubmit:()=>e(ge)?.requestSubmit()})),g(s,o)},Ke=s=>{var o=wr();be(o),fe(o,()=>r().field,p=>r(r().field=p,!0)),g(s,o)},qe=s=>{var o=Sr();xt(o),Pe(o,"placeholder","{}"),et(o,p=>v(b,p),()=>e(b)),yt(()=>fe(o,()=>r().query,p=>r(r().query=p,!0))),Oe(o,(p,x)=>_t?.(p,x),()=>({onsubmit:()=>e(ge)?.requestSubmit()})),g(s,o)},Ce=s=>{var o=qr();be(o),Pe(o,"placeholder","{}"),et(o,p=>v(b,p),()=>e(b)),E("keydown",o,_),Mt("paste",o,X),fe(o,()=>r().query,p=>r(r().query=p,!0)),g(s,o)};S(rt,s=>{r().mode==="aggregation"?s(ot):r().mode==="distinct"?s(Ke,1):e(Ne)?s(qe,2):s(Ce,-1)})}l(Le);var ue=a(Le,2);be(ue);var Te=a(ue,2);be(Te);var Ve=a(Te,2),n=i(Ve);{var u=s=>{var o=Cr(),p=a(i(o),2);Qt(p,{class:"w-3 h-3"}),l(o),et(o,x=>v(xe,x),()=>e(xe)),E("click",o,Fe),g(s,o)};S(n,s=>{c.server&&c.database&&c.collection&&s(u)})}var m=a(n,2),w=i(m,!0);l(m);var M=a(m,2);{var B=s=>{var o=Er(),p=i(o);_r(p,{class:"w-4 h-4"}),l(o),D(()=>{Pe(o,"title",r().mode!=="query"?"Update not available in this mode":"Update multiple documents"),o.disabled=r().mode!=="query"}),E("click",o,()=>{t(!t())}),g(s,o)};S(M,s=>{d()||s(B)})}var N=a(M,2);{var I=s=>{var o=Nr(),p=i(o,!0);l(o),D(()=>{Pe(o,"title",r().mode==="distinct"?"Explain not available for distinct queries":"Show query execution plan"),o.disabled=r().mode==="distinct"||ce(),O(p,ce()?"...":"Explain")}),E("click",o,function(...x){c.onexplain?.apply(this,x)}),g(s,o)};S(N,s=>{c.onexplain&&s(I)})}tt(2),l(Ve),l(we);var H=a(we,2);{var le=s=>{var o=Ir(),p=i(o);{var x=V=>{var pe=Dr(),ee=a(i(pe),2);be(ee),Pe(ee,"placeholder","{}"),l(pe),fe(ee,()=>r().query,_e=>r(r().query=_e,!0)),g(V,pe)},f=V=>{var pe=jr(),ee=te(pe),_e=a(i(ee),2);be(_e),Pe(_e,"placeholder","{}"),l(ee);var U=a(ee,2),R=a(i(U),2);be(R),Pe(R,"placeholder","{}"),l(U),fe(_e,()=>r().sort,re=>r(r().sort=re,!0)),fe(R,()=>r().project,re=>r(r().project=re,!0)),g(V,pe)};S(p,V=>{r().mode==="distinct"?V(x):V(f,-1)})}var L=a(p,2),P=a(i(L),2);be(P),l(L);var W=a(L,2),ve=a(i(W),2);be(ve),l(W),l(o),fe(P,()=>r().skip,V=>r(r().skip=V,!0)),fe(ve,()=>r().limit,V=>r(r().limit=V,!0)),g(s,o)};S(H,s=>{e(F)&&s(le)})}l(se),et(se,s=>v(ge,s),()=>e(ge)),l($e);var Y=a($e,2);{var ie=s=>{var o=Lr();let p;var x=i(o),f=a(x,2),L=a(f,2);l(o),Oe(o,P=>$t?.(P)),Oe(o,(P,W)=>Ft?.(P,W),()=>()=>v(j,!1)),D(()=>p=Et(o,"",p,{left:e(ae).left,top:e(ae).top,"min-width":e(ae).minWidth})),E("click",x,()=>K("query")),E("click",f,()=>K("distinct")),E("click",L,()=>K("aggregation")),g(s,o)};S(Y,s=>{e(j)&&s(ie)})}var Z=a(Y,2);{var z=s=>{var o=Mr();let p;Bt(o,21,()=>e(he),x=>x.label,(x,f)=>{var L=Pr(),P=i(L),W=i(P,!0);l(P);var ve=a(P,2),V=i(ve);{var pe=R=>{var re=Ur();g(R,re)},ee=R=>{var re=wt("⚠️");g(R,re)},_e=R=>{var re=wt();D(at=>O(re,at),[()=>oe(e(f).count)]),g(R,re)},U=R=>{var re=wt("—");g(R,re)};S(V,R=>{e(f).loading?R(pe):e(f).error?R(ee,1):e(f).count!==null?R(_e,2):R(U,-1)})}l(ve),l(L),D(()=>{L.disabled=e(f).loading,O(W,e(f).label)}),E("click",L,()=>je(e(f).days)),g(x,L)}),l(o),Oe(o,x=>$t?.(x)),Oe(o,(x,f)=>Ft?.(x,f),()=>()=>v(ne,!1)),D(()=>p=Et(o,"",p,{left:e(ye).left,top:e(ye).top,"min-width":e(ye).minWidth})),g(s,o)};S(Z,s=>{e(ne)&&s(z)})}D(()=>{O(Ge,r().mode),ht(ue,r().mode),ht(Te,e(h)),O(w,e(F)?"−":"+")}),Mt("submit",se,Je),E("click",Se,()=>v(j,!e(j))),E("click",m,()=>{v(F,!e(F))}),g(q,Ie),Dt()}jt(["click","keydown"]);var Tr=ut('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>');function Ar(q,c){let y=Ee(c,"class",3,"w-4 h-4");var r=Tr();D(()=>We(r,0,vt(y()))),g(q,r)}var Or=ut('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14M5 12h14"></path></svg>');function Fr(q,c){let y=Ee(c,"class",3,"w-4 h-4");var r=Or();D(()=>We(r,0,vt(y()))),g(q,r)}var Qr=ut('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M7 12h10"></path><path d="M10 18h4"></path><path d="m7 16 3 3 3-3"></path></svg>');function Br(q,c){let y=Ee(c,"class",3,"w-4 h-4");var r=Qr();D(()=>We(r,0,vt(y()))),g(q,r)}const qt=(q,c=dt,y=dt)=>{var r=zr();D(t=>Pe(r,"href",t),[()=>It(c())]),E("click",r,function(...t){y()?.apply(this,t)}),g(q,r)},Ct=(q,c=dt,y=dt)=>{var r=Wr();D(t=>Pe(r,"href",t),[()=>It(c())]),E("click",r,function(...t){y()?.apply(this,t)}),g(q,r)};var zr=k('<a class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition no-underline -my-2" style="color: var(--text);">Previous</a>'),Wr=k('<a class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition no-underline" style="color: var(--text);">Next</a>'),Jr=k('<button class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition" style="color: var(--text); cursor: pointer;" title="Reverse sort order"><!></button>'),Gr=k('<button class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition" style="color: var(--text); cursor: pointer;" title="Copy distinct values"><!></button>'),Hr=k('<button class="btn btn-success"><!> Insert Document</button>'),Kr=k('<div class="space-y-3"><label for="insert-document" class="block text-sm font-semibold mb-2" style="color: var(--text);">Document JSON:</label> <textarea id="insert-document" placeholder="Document JSON" rows="6" class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm focus:outline-none focus:ring-2" style="color: var(--text); --tw-ring-color: var(--link);"></textarea> <div class="flex gap-3"><button class="btn btn-success hover:bg-[var(--button-success-l)]"> </button> <button class="btn btn-default">Cancel</button></div></div>'),Vr=k('<div class="flex gap-3"><button class="btn btn-default"> </button></div>'),Xr=k(`<div class="text-sm rounded-xl bg-yellow-500/10 p-4 border border-yellow-500/30" style="color: var(--text-secondary);"><p class="font-semibold text-yellow-600 mb-2">⚠️ Query Changed</p> <p style="color: var(--text);">The filter has changed since you last checked the count. Please check the document count again before proceeding.</p></div> <div class="flex gap-3"><button class="btn btn-default"> </button> <button class="btn btn-default">Cancel</button></div>`,1),Yr=k(`<p class="mb-2" style="color: var(--text);"> </p> <p>You can still proceed with deletion, but please be cautious. This operation will permanently delete all documents matching the filter. This action cannot be undone.</p>`,1),Zr=k('<p class="mb-2" style="color: var(--text);">This will delete <strong class="text-red-600"> </strong> </p> <p>This operation is permanent and cannot be undone.</p>',1),eo=k(`<div class="text-sm rounded-xl bg-red-500/10 p-4 border border-red-500/30" style="color: var(--text-secondary);"><p class="font-semibold text-red-600 mb-2">⚠️ Warning</p> <!></div> <div><label for="delete-confirm" class="block text-sm font-semibold mb-2" style="color: var(--text);">Type <code class="bg-[var(--light-background)] px-2 py-1 rounded border border-[var(--border-color)] font-mono text-xs">confirm</code> to proceed:</label> <input type="text" id="delete-confirm" placeholder="Type 'confirm' to enable deletion" class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm focus:outline-none focus:ring-2" style="color: var(--text); --tw-ring-color: var(--link);"/></div> <div class="flex gap-3"><button class="btn btn-danger hover:bg-red-700"> </button> <button class="btn btn-default">Cancel</button></div>`,1),to=k('<div class="p-4 sm:p-6 space-y-6"><div class="rounded-xl bg-[var(--color-3)]/30 p-4 border border-[var(--border-color)]"><h3 class="text-lg font-semibold mb-3" style="color: var(--text);">Insert New Document</h3> <!></div> <div class="rounded-xl bg-[var(--color-3)]/30 p-4 border border-[var(--border-color)]"><h3 class="text-lg font-semibold mb-3" style="color: var(--text);">Update Multiple Documents</h3> <div class="space-y-4"><div><label for="update-filter" class="block text-sm font-semibold mb-2" style="color: var(--text);">Filter (which documents to update):</label> <input type="text" id="update-filter" readonly="" class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm opacity-75 cursor-not-allowed" style="color: var(--text);"/> <p class="text-xs mt-2" style="color: var(--text-secondary);">This filter is taken from the query above. Modify the query to change which documents will be updated.</p></div> <div><label for="update-operation" class="block text-sm font-semibold mb-2" style="color: var(--text);">Update Operation (e.g., $set, $inc, $unset):</label> <textarea placeholder="Update operation" rows="4" class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm focus:outline-none focus:ring-2" style="color: var(--text); --tw-ring-color: var(--link);"></textarea></div> <div class="flex gap-3"><button class="btn btn-success hover:bg-[var(--button-success-l)]"> </button></div></div></div> <div class="rounded-xl bg-[var(--color-3)]/30 p-4 border border-[var(--border-color)]"><h3 class="text-lg font-semibold mb-3" style="color: var(--text);">Delete Multiple Documents</h3> <div class="space-y-4"><div><label for="delete-filter" class="block text-sm font-semibold mb-2" style="color: var(--text);">Filter (which documents to delete):</label> <input type="text" id="delete-filter" readonly="" class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm opacity-75 cursor-not-allowed" style="color: var(--text);"/> <p class="text-xs mt-2" style="color: var(--text-secondary);">This filter is taken from the query above. Modify the query to change which documents will be deleted.</p></div> <!></div></div> <div class="flex justify-end"><button class="btn btn-default hover:bg-[var(--color-3)]">Close Edit Mode</button></div> <div class="text-sm rounded-xl bg-[var(--color-3)]/50 p-4 border border-[var(--border-color)]" style="color: var(--text-secondary);"><p class="mb-2 font-semibold" style="color: var(--text);">Update Operation Examples:</p> <p class="mb-2">• Set a field: <code class="bg-[var(--light-background)] px-2 py-1 rounded border border-[var(--border-color)] font-mono text-xs"></code></p> <p class="mb-2">• Increment a value: <code class="bg-[var(--light-background)] px-2 py-1 rounded border border-[var(--border-color)] font-mono text-xs"></code></p> <p class="mb-2">• Unset a field: <code class="bg-[var(--light-background)] px-2 py-1 rounded border border-[var(--border-color)] font-mono text-xs"></code></p> <p>• Pipeline (compute from existing fields): <code class="bg-[var(--light-background)] px-2 py-1 rounded border border-[var(--border-color)] font-mono text-xs"></code></p></div></div>'),ro=k("<!> <!> <!>",1),oo=k("<!> <!> <!>",1),ao=k("<!> <!>",1),no=k("<!> <!>",1),so=k("<!> <!> <!> <!>",1);function Eo(q,c){Nt(c,!0);const y=n=>{var u=Jr(),m=i(u);Br(m,{class:"w-4 h-4"}),l(u),E("click",u,Ge),g(n,u)},r=(n,u=dt)=>{var m=Gr(),w=i(m);Ar(w,{class:"w-4 h-4"}),l(m),E("click",m,()=>He(u())),g(n,m)};let t=Ee(c,"data",7),d=C(ze({...t().params})),ce=A(()=>t().results),F=C(!1),h=C("{}"),b=C(!1),j=C(!1),Q=C(!1),ae=C(null),Ne=C(!1),_=ze({countChecked:!1,count:null,countError:null,confirmText:"",isCounting:!1,countQuery:null}),X=C(null),Je=0;Me(()=>{v(d,{...t().params},!0),je()}),Me(()=>{const n=++Je;v(X,null),t().count.then(u=>{n===Je&&v(X,u.error?null:u.data,!0)})}),Me(()=>{e(ce)&&v(K,null),e(ce).then(n=>{n.error&&G.notifyError(n.error)})}),Me(()=>{t().count.then(n=>{n.error&&!n.error.includes("operation exceeded time limit")&&G.notifyError(n.error)})});let K=C(null),ge=A(()=>e(K)?{data:e(K),error:null}:e(ce));async function ke(n,u,m){const w=!!(e(d).project&&e(d).project!=="{}"&&Object.keys(ft(e(d).project)).length>0),M=u?._id?.$value,B=n?.$value;if(M!==B){G.notifyError("ObjectId changed. This is not supported, update canceled.");return}if(B)try{const N=await er({server:t().server,database:t().database,collection:t().collection,document:B,value:u,partial:w});if(N.ok){G.notifySuccess("Document updated successfully");const I=m.findIndex(H=>H._id?.$value===B);I!==-1&&(m[I]=N.update),v(K,m,!0)}}catch(N){console.error(N),G.notifyError(N,"Failed to update document")}}async function ne(n,u){const m=n?.$value??n;if(!(!m||typeof m!="string"))try{await tr({server:t().server,database:t().database,collection:t().collection,document:m}),G.notifySuccess("Document removed successfully"),v(K,u.filter(w=>(w._id?.$value??w._id)!==m),!0)}catch(w){G.notifyError(w,"Failed to remove document")}}function xe(n){const u=new Ot;return u.set("query",e(d).query||"{}"),u.set("sort",e(d).sort||""),u.set("project",e(d).project||""),u.set("skip",String(n)),u.set("limit",String(e(d).limit)),`/servers/${encodeURIComponent(t().server)}/databases/${encodeURIComponent(t().database)}/collections/${encodeURIComponent(t().collection)}/documents?${u.toString()}`}const ye=A(()=>xe(e(d).skip+e(d).limit)),de=A(()=>xe(Math.max(0,e(d).skip-e(d).limit)));function De(n){n.preventDefault(),t().params.skip+=t().params.limit,e(d).skip=t().params.skip,St(e(ye),{}),v(ce,bt({server:t().server,database:t().database,collection:t().collection,query:e(d).query,sort:e(d).sort,project:e(d).project,skip:e(d).skip,limit:e(d).limit,mode:e(d).mode,field:e(d).field}))}function he(n){n.preventDefault(),t().params.skip=Math.max(0,t().params.skip-t().params.limit),e(d).skip=t().params.skip,St(e(de),{}),v(ce,bt({server:t().server,database:t().database,collection:t().collection,query:e(d).query,sort:e(d).sort,project:e(d).project,skip:e(d).skip,limit:e(d).limit,mode:e(d).mode,field:e(d).field}))}async function Re(){v(b,!0);try{const n=await rr({server:t().server,database:t().database,collection:t().collection,filter:e(d).query||"{}",update:e(h)});n.ok&&(G.notifySuccess(`Updated ${n.modifiedCount} document(s) (matched ${n.matchedCount})`),v(K,null),v(F,!1))}catch(n){console.error(n),G.notifyError(n,"Failed to update documents")}finally{v(b,!1)}}async function Fe(){_.isCounting=!0,_.countError=null;const n=e(d).query||"{}";try{const u=await Tt({server:t().server,database:t().database,collection:t().collection,filter:n});_.count=u.data,_.countError=u.error,_.countChecked=!0,_.countQuery=n}catch(u){G.notifyError(u,"Failed to count documents"),_.countError=u instanceof Error?u.message:String(u)}finally{_.isCounting=!1}}function je(){_.countChecked=!1,_.count=null,_.countError=null,_.confirmText="",_.countQuery=null}let Ie=A(()=>_.countChecked&&_.countQuery!==(e(d).query||"{}"));Me(()=>{e(Ie)&&(_.confirmText="")});async function $e(){v(b,!0);try{const n=await ar({server:t().server,database:t().database,collection:t().collection,filter:e(d).query||"{}"});n.ok&&(G.notifySuccess(`Deleted ${n.deletedCount} document(s)`),v(K,null),v(F,!1),je())}catch(n){console.error(n),G.notifyError(n,"Failed to delete documents")}finally{v(b,!1)}}let se=C("{}");async function we(){v(b,!0);try{const n=ft(e(se));(await or({server:t().server,database:t().database,collection:t().collection,document:null,value:n})).ok&&(G.notifySuccess("Document inserted successfully"),v(K,null),v(j,!1),v(se,"{}"))}catch(n){console.error(n),G.notifyError(n,"Failed to insert document")}finally{v(b,!1)}}function Le(){v(j,!0),v(se,"{}")}function Se(){v(j,!1),v(se,"{}")}function Qe(){const n=e(d).sort||"{}";if(n.replace(/\s/g,"")==="{}")return gt({_id:-1}).replace(/[\n\t]/g," ").replace(/\s+/g," ");const u=ft(n),m={};for(const[w,M]of Object.entries(u))typeof M=="number"?m[w]=M===1?-1:1:m[w]=M;return gt(m).replace(/[\n\t]/g," ").replace(/\s+/g," ")}function Ge(n){n.preventDefault();const u=Qe();e(d).sort=u,t().params.sort=u,t().params.skip=0,e(d).skip=0;const m=new Ot;m.set("query",e(d).query||"{}"),m.set("sort",u),m.set("project",e(d).project||""),m.set("skip","0"),m.set("limit",String(e(d).limit));const w=`/servers/${encodeURIComponent(t().server)}/databases/${encodeURIComponent(t().database)}/collections/${encodeURIComponent(t().collection)}/documents?${m.toString()}`;St(w,{}),v(ce,bt({server:t().server,database:t().database,collection:t().collection,query:e(d).query,sort:u,project:e(d).project,skip:0,limit:e(d).limit,mode:e(d).mode,field:e(d).field}))}async function He(n){try{const u=n.map(w=>w.value),m=gt(u);await navigator.clipboard.writeText(m),G.notifySuccess("Copied distinct values to clipboard")}catch(u){console.error(u),G.notifyError(u,"Failed to copy to clipboard")}}async function rt(){v(Q,!0);try{const n=await Zt({server:t().server,database:t().database,collection:t().collection,query:e(d).query||"{}",sort:e(d).sort||"{}",project:e(d).project||"{}",skip:e(d).skip,limit:e(d).limit,mode:e(d).mode==="aggregation"?"aggregation":"query",verbosity:"executionStats"});n.error?G.notifyError(n.error):(v(ae,n.data,!0),v(Ne,!0))}catch(n){console.error(n),G.notifyError(n,"Failed to explain query")}finally{v(Q,!1)}}function ot(n){const u={...n,field:n.field??""};t().params=u,v(d,u,!0),v(ce,bt({server:t().server,database:t().database,collection:t().collection,query:u.query,sort:u.sort,project:u.project,skip:u.skip,limit:u.limit,mode:u.mode,field:u.field})),t().count=Tt({server:t().server,database:t().database,collection:t().collection,filter:u.query})}var Ke=so(),qe=te(Ke);$r(qe,{get readonly(){return t().readOnly},get explainLoading(){return e(Q)},onexplain:rt,onsearch:ot,get server(){return t().server},get database(){return t().database},get collection(){return t().collection},get params(){return e(d)},set params(n){v(d,n,!0)},get editMode(){return e(F)},set editMode(n){v(F,n,!0)}});var Ce=a(qe,2);xr(Ce,{get data(){return e(ae)},get show(){return e(Ne)},onclose:()=>v(Ne,!1)});var ue=a(Ce,2);{var Te=n=>{mt(n,{title:"Edit Mode",children:(u,m)=>{var w=to(),M=i(w),B=a(i(M),2);{var N=$=>{var T=Hr(),J=i(T);Fr(J,{class:"w-4 h-4 inline mr-2"}),tt(),l(T),E("click",T,Le),g($,T)},I=$=>{var T=Kr(),J=a(i(T),2);xt(J),yt(()=>fe(J,()=>e(se),Ze=>v(se,Ze))),Oe(J,(Ze,pt)=>_t?.(Ze,pt),()=>({onsubmit:we}));var me=a(J,2),Ue=i(me),Xe=i(Ue,!0);l(Ue);var Ye=a(Ue,2);l(me),l(T),D(()=>{Ue.disabled=e(b),O(Xe,e(b)?"Inserting...":"Insert"),Ye.disabled=e(b)}),E("click",Ue,we),E("click",Ye,Se),g($,T)};S(B,$=>{e(j)?$(I,-1):$(N)})}l(M);var H=a(M,2),le=a(i(H),2),Y=i(le),ie=a(i(Y),2);be(ie),tt(2),l(Y);var Z=a(Y,2),z=a(i(Z),2);xt(z),yt(()=>fe(z,()=>e(h),$=>v(h,$))),Oe(z,($,T)=>_t?.($,T),()=>({onsubmit:Re})),l(Z);var s=a(Z,2),o=i(s),p=i(o,!0);l(o),l(s),l(le),l(H);var x=a(H,2),f=a(i(x),2),L=i(f),P=a(i(L),2);be(P),tt(2),l(L);var W=a(L,2);{var ve=$=>{var T=Vr(),J=i(T),me=i(J,!0);l(J),l(T),D(()=>{J.disabled=_.isCounting,O(me,_.isCounting?"Counting...":"Check Document Count")}),E("click",J,Fe),g($,T)},V=$=>{var T=Xr(),J=a(te(T),2),me=i(J),Ue=i(me,!0);l(me);var Xe=a(me,2);l(J),D(()=>{me.disabled=_.isCounting,O(Ue,_.isCounting?"Counting...":"Check Count Again"),Xe.disabled=_.isCounting}),E("click",me,Fe),E("click",Xe,je),g($,T)},pe=$=>{var T=eo(),J=te(T),me=a(i(J),2);{var Ue=Ae=>{var st=Yr(),lt=te(st),it=i(lt);l(lt),tt(2),D(()=>O(it,`Unable to count documents: ${_.countError??""}`)),g(Ae,st)},Xe=Ae=>{var st=Zr(),lt=te(st),it=a(i(lt)),Ht=i(it,!0);l(it);var Kt=a(it);l(lt),tt(2),D(Vt=>{O(Ht,Vt),O(Kt,` document${_.count===1?"":"s"}.`)},[()=>_.count?.toLocaleString()]),g(Ae,st)};S(me,Ae=>{_.countError?Ae(Ue):Ae(Xe,-1)})}l(J);var Ye=a(J,2),Ze=a(i(Ye),2);be(Ze),l(Ye);var pt=a(Ye,2),nt=i(pt),Gt=i(nt,!0);l(nt);var Ut=a(nt,2);l(pt),D(()=>{nt.disabled=e(b)||_.confirmText!=="confirm",O(Gt,e(b)?"Deleting...":"Execute Delete"),Ut.disabled=e(b)}),fe(Ze,()=>_.confirmText,Ae=>_.confirmText=Ae),E("click",nt,$e),E("click",Ut,je),g($,T)};S(W,$=>{_.countChecked?e(Ie)?$(V,1):$(pe,-1):$(ve)})}l(f),l(x);var ee=a(x,2),_e=i(ee);l(ee);var U=a(ee,2),R=a(i(U),2),re=a(i(R));re.textContent='{"$set": {"status": "active"}}',l(R);var at=a(R,2),zt=a(i(at));zt.textContent='{"$inc": {"count": 1}}',l(at);var kt=a(at,2),Wt=a(i(kt));Wt.textContent='{"$unset": {"oldField": ""}}',l(kt);var Lt=a(kt,2),Jt=a(i(Lt));Jt.textContent='[{"$set": {"fullName": {"$concat": ["$firstName", " ", "$lastName"]}}}]',l(Lt),l(U),l(w),D(()=>{ht(ie,e(d).query||"{}"),o.disabled=e(b),O(p,e(b)?"Updating...":"Execute Update"),ht(P,e(d).query||"{}")}),E("click",o,Re),E("click",_e,()=>{v(F,!1),v(j,!1),je()}),g(u,w)},$$slots:{default:!0}})};S(ue,n=>{e(F)&&n(Te)})}var Ve=a(ue,2);Rt(Ve,()=>e(ge),n=>{{const u=w=>{var M=Pt(),B=te(M);{var N=I=>{var H=no(),le=te(H);{var Y=z=>{qt(z,()=>e(de),()=>he)};S(le,z=>{t().params.skip>0&&z(Y)})}var ie=a(le,2);{var Z=z=>{Ct(z,()=>e(ye),()=>De)};S(ie,z=>{t().params.skip+t().params.limit<e(X)&&z(Z)})}g(I,H)};S(B,I=>{e(X)!==null&&I(N)})}g(w,M)};let m=A(()=>e(X)!==null?t().params.mode==="distinct"?`${oe(e(X))} distinct value${e(X)===1?"":"s"}...`:`${oe(t().params.skip+1)} - ${oe(t().params.skip+t().params.limit)} of ${oe(e(X))} documents...`:t().params.mode==="distinct"?"Loading distinct values...":"Loading documents...");mt(n,{get title(){return e(m)},titleClass:"py-1",actions:u,$$slots:{actions:!0}})}},(n,u)=>{const m=A(()=>e(u)?.data??[]);var w=ao(),M=te(w);Rt(M,()=>t().count,N=>{{const I=le=>{var Y=oo(),ie=te(Y);{var Z=f=>{qt(f,()=>e(de),()=>he)};S(ie,f=>{t().params.skip>0&&f(Z)})}var z=a(ie,2);{var s=f=>{Ct(f,()=>e(ye),()=>De)};S(z,f=>{e(m).length>=t().params.limit&&f(s)})}var o=a(z,2);{var p=f=>{r(f,()=>e(m))},x=f=>{y(f)};S(o,f=>{t().params.mode==="distinct"?f(p):f(x,-1)})}g(le,Y)};let H=A(()=>e(m).length>0?t().params.mode==="distinct"?`${oe(e(m).length)} distinct value${e(m).length===1?"":"s"} (counting...)`:`${oe(t().params.skip+1)} - ${oe(t().params.skip+e(m).length)} Documents (counting...)`:t().params.mode==="distinct"?"No distinct values":"No documents");mt(N,{titleClass:"py-1",get title(){return e(H)},actions:I,$$slots:{actions:!0}})}},(N,I)=>{var H=Pt(),le=te(H);{var Y=ie=>{const Z=A(()=>e(I).data),z=A(()=>e(I).error?e(m).length>=t().params.limit:t().params.skip+e(m).length<e(Z)),s=A(()=>t().params.skip>0),o=A(()=>e(I).error?.includes("operation exceeded time limit"));{const p=f=>{var L=ro(),P=te(L);{var W=U=>{qt(U,()=>e(de),()=>he)};S(P,U=>{e(s)&&U(W)})}var ve=a(P,2);{var V=U=>{Ct(U,()=>e(ye),()=>De)};S(ve,U=>{e(z)&&U(V)})}var pe=a(ve,2);{var ee=U=>{r(U,()=>e(m))},_e=U=>{y(U)};S(pe,U=>{t().params.mode==="distinct"?U(ee):U(_e,-1)})}g(f,L)};let x=A(()=>e(m).length>0?t().params.mode==="distinct"?`${oe(e(Z))} distinct value${e(Z)===1?"":"s"}`:e(Z)>0?`${oe(t().params.skip+1)} - ${oe(t().params.skip+e(m).length)} of ${oe(e(Z))} documents`:`${oe(t().params.skip+1)} - ${oe(t().params.skip+e(m).length)} documents (count ${e(o)?"timeout":"unavailable"})`:t().params.mode==="distinct"?"No distinct values":"No documents");mt(ie,{get title(){return e(x)},titleClass:"py-1",actions:p,$$slots:{actions:!0}})}};S(le,ie=>{t().params&&ie(Y)})}g(N,H)});var B=a(M,2);Bt(B,19,()=>e(m),(N,I)=>N._id?.$value||I,(N,I)=>{{let H=A(()=>t().params.mode==="aggregation"||t().params.mode==="distinct"||t().readOnly?void 0:Y=>ke(e(I)._id,Y,e(m))),le=A(()=>t().params.mode==="aggregation"||t().params.mode==="distinct"||t().readOnly?void 0:()=>ne(e(I)._id,e(m)));ir(N,{get json(){return e(I)},autoCollapse:!0,get onedit(){return e(H)},get onremove(){return e(le)},get server(){return t().server},get database(){return t().database},get collection(){return t().collection},get mappings(){return t().mappings}})}}),g(n,w)}),g(q,Ke),Dt()}jt(["click"]);export{Eo as component,Co as universal};