@decocms/mesh 1.0.0-alpha.1 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/client/assets/{alert-dialog-DsYjmjQa.js → alert-dialog-Caf0mgW9.js} +1 -1
  2. package/dist/client/assets/{auth-dQSMuI_r.js → auth-CGqqbEan.js} +1 -1
  3. package/dist/client/assets/{auth-catchall-vTieIyKZ.js → auth-catchall-Bw-KJI1v.js} +1 -1
  4. package/dist/client/assets/{avatar-DFNVHH7B.js → avatar-CdPaDOIs.js} +1 -1
  5. package/dist/client/assets/{badge-D0svJbIE.js → badge-j-myHF25.js} +1 -1
  6. package/dist/client/assets/{button-CB7Gt-Ba.js → button-DnKGwZ1P.js} +1 -1
  7. package/dist/client/assets/{card-BZePxfHz.js → card-I0CWqn2J.js} +1 -1
  8. package/dist/client/assets/{checkbox-CJwRElzS.js → checkbox-v3iP8MNg.js} +1 -1
  9. package/dist/client/assets/{circle-alert-FONBIc_T.js → circle-alert-CpqBZI3V.js} +1 -1
  10. package/dist/client/assets/{collection-detail-CFf2hZjF.js → collection-detail-BSfYYwzG.js} +1 -1
  11. package/dist/client/assets/{collection-display-button-Ccjj22Xn.js → collection-display-button-Cws3c2TG.js} +1 -1
  12. package/dist/client/assets/{collection-header-C3vTyWNy.js → collection-header-CJC3zXGa.js} +1 -1
  13. package/dist/client/assets/{collection-page-BplXISpO.js → collection-page-CkAonVNX.js} +1 -1
  14. package/dist/client/assets/{collection-search-BpPEPb0j.js → collection-search-Bd4XQ4_K.js} +1 -1
  15. package/dist/client/assets/{collection-table-wrapper-CJdrG443.js → collection-table-wrapper-Dv4rgxdy.js} +1 -1
  16. package/dist/client/assets/{connection-card-B7VMSnFz.js → connection-card-CgJm9r5i.js} +1 -1
  17. package/dist/client/assets/{connection-detail-DGFMHZQW.js → connection-detail-HAGAOVY9.js} +1 -1
  18. package/dist/client/assets/{connections-BFxMYtuo.js → connections-C8Z338-P.js} +1 -1
  19. package/dist/client/assets/{create-organization-dialog-Mq1L8DSD.js → create-organization-dialog-CWgFMDXV.js} +1 -1
  20. package/dist/client/assets/{dialog-DhrfZsqb.js → dialog-Qusr5Dgc.js} +1 -1
  21. package/dist/client/assets/{dropdown-menu-zoKN8fKM.js → dropdown-menu-BIeRR6rM.js} +1 -1
  22. package/dist/client/assets/{empty-state-BCgOYCyG.js → empty-state-DV83eIhT.js} +1 -1
  23. package/dist/client/assets/{error-boundary-L4NxoU-J.js → error-boundary-qOVcoWbq.js} +1 -1
  24. package/dist/client/assets/{extract-connection-data-mJfi2GDs.js → extract-connection-data-DzgXoQyz.js} +1 -1
  25. package/dist/client/assets/{form-BmhZau8F.js → form-0C1lYHJ2.js} +1 -1
  26. package/dist/client/assets/{gateway-detail-BEN_sL0j.js → gateway-detail-mD14k5vr.js} +1 -1
  27. package/dist/client/assets/{gateways-DPfP8fjF.js → gateways-BSGLH5Mc.js} +1 -1
  28. package/dist/client/assets/{home-RT_Ssleq.js → home-B1IT0slW.js} +1 -1
  29. package/dist/client/assets/{icon-Zm7eEeKG.js → icon-C1glN-Ga.js} +1 -1
  30. package/dist/client/assets/index-B5e6fytH.js +118 -0
  31. package/dist/client/assets/{index-CfNAXm02.js → index-C1xA8jg5.js} +1 -1
  32. package/dist/client/assets/{index-CoeZDSQf.js → index-Chpp7zg0.js} +1 -1
  33. package/dist/client/assets/{index-BAut7b_p.js → index-D2ODleHN.js} +1 -1
  34. package/dist/client/assets/{index-CBL6DTCM.js → index-DqmRoUE9.js} +1 -1
  35. package/dist/client/assets/{input-DWY0hRYC.js → input-DpAKmHHm.js} +1 -1
  36. package/dist/client/assets/{integration-icon-Dgf9Pzxc.js → integration-icon-C_Dk6BbN.js} +1 -1
  37. package/dist/client/assets/{layout-C75gYFRR.js → layout-BMHVtK0w.js} +1 -1
  38. package/dist/client/assets/{lazy-highlighter-V_ETf5s5.js → lazy-highlighter-9rAB2zZq.js} +1 -1
  39. package/dist/client/assets/{localstorage-keys-CdMYd__a.js → localstorage-keys-DC7ymQmZ.js} +1 -1
  40. package/dist/client/assets/{login-CaI2gNh0.js → login-BMjQy3tL.js} +1 -1
  41. package/dist/client/assets/{members-BD990Z5F.js → members-k_V-Gxfi.js} +1 -1
  42. package/dist/client/assets/{monitoring-s9rrPP3V.js → monitoring-BG-rBDyv.js} +1 -1
  43. package/dist/client/assets/{monitoring-stats-row-DiSEgwHP.js → monitoring-stats-row-PYfuhQHX.js} +1 -1
  44. package/dist/client/assets/{oauth-callback-ChC_4XSg.js → oauth-callback-CQ4D18kW.js} +1 -1
  45. package/dist/client/assets/{page-BauA0SPJ.js → page-h-kmS-QS.js} +1 -1
  46. package/dist/client/assets/{popover-B7GJHYd2.js → popover-TCQphQTw.js} +1 -1
  47. package/dist/client/assets/{prism-BsII3tZL.js → prism-CcSucC56.js} +1 -1
  48. package/dist/client/assets/{resource-tabs-Djqhz6PB.js → resource-tabs-E4yf0eYT.js} +1 -1
  49. package/dist/client/assets/{schema-CJRWBwzd.js → schema-BLzWyGtx.js} +1 -1
  50. package/dist/client/assets/{select-CrueAR2N.js → select-fvQCifl4.js} +1 -1
  51. package/dist/client/assets/{settings-85tu13fN.js → settings-Bjk195Z6.js} +1 -1
  52. package/dist/client/assets/{shell-layout-CwcEMEv3.js → shell-layout-B8oNCzSa.js} +3 -3
  53. package/dist/client/assets/{spinner-R42f7AVH.js → spinner-Cck765yW.js} +1 -1
  54. package/dist/client/assets/{store-zixro3Vs.js → store-DD1aCoWU.js} +1 -1
  55. package/dist/client/assets/{store-app-detail-D89e4NIX.js → store-app-detail-DZvzqAVf.js} +1 -1
  56. package/dist/client/assets/{textarea-CAmjTm6l.js → textarea--4iImQiq.js} +1 -1
  57. package/dist/client/assets/{tool-set-selector-BfScgRcK.js → tool-set-selector-Fu1vBXWK.js} +1 -1
  58. package/dist/client/assets/{tooltip-BLbXpJcn.js → tooltip-DjXyjtiH.js} +1 -1
  59. package/dist/client/assets/{upload-CG7PZ6WF.js → upload-DkfUhTLj.js} +1 -1
  60. package/dist/client/assets/{use-binding-CeSgmpzj.js → use-binding-BLIUV5ER.js} +1 -1
  61. package/dist/client/assets/{use-connection-D5nZyekX.js → use-connection-IMyxygAc.js} +1 -1
  62. package/dist/client/assets/{use-gateway-pRk3-ua4.js → use-gateway-CuMrhcvh.js} +1 -1
  63. package/dist/client/assets/{use-list-state-BTIryg2o.js → use-list-state-Bas0EIwN.js} +1 -1
  64. package/dist/client/assets/{use-members-OyBpbFn0.js → use-members-DHcrnzKP.js} +1 -1
  65. package/dist/client/assets/{use-mobile-BPQzOCZP.js → use-mobile-CxX0wu31.js} +1 -1
  66. package/dist/client/assets/{use-organization-settings-CMP1q4u_.js → use-organization-settings-CpvpbwdB.js} +1 -1
  67. package/dist/client/assets/{use-tool-call-BsMTRGjQ.js → use-tool-call-p0lqBezD.js} +1 -1
  68. package/dist/client/assets/useQuery-BO2jzwkw.js +1 -0
  69. package/dist/client/assets/utils-BLBjpUfr.js +1 -0
  70. package/dist/client/index.html +1 -1
  71. package/dist/server/cli.js +1 -1
  72. package/package.json +18 -18
  73. package/dist/client/assets/index-VCe1FY3E.js +0 -118
  74. package/dist/client/assets/useQuery-DEUZMq4A.js +0 -1
  75. package/dist/client/assets/utils-B-QWwgyW.js +0 -1
@@ -1 +1 @@
1
- import{s as Q,B as V}from"./chunk-2RRQPJJO-DGhxLrrR.js";import{a as H,C as be,U as X,L as ee,R as Ce,b as te,G as Ee,c as Te}from"./auth-dQSMuI_r.js";import{r as s}from"./index-VCe1FY3E.js";import{C as $e,S as ye,c as ve}from"./use-binding-CeSgmpzj.js";function U(q,g){if(!q)throw new Error(g)}var re=3e3,Se=5e3,j=300*1e3;function Me(q){const{url:g,clientName:k,clientUri:P,callbackUrl:L=typeof window<"u"?Q(new URL("/oauth/callback",window.location.origin).toString()):"/oauth/callback",storageKeyPrefix:M="mcp:auth",clientConfig:T={},customHeaders:G={},debug:Ae=!1,autoRetry:I=!1,autoReconnect:z=re,transportType:D="auto",preventAutoAuth:O=!1,onPopupWindow:Y}=q,[m,b]=s.useState("discovering"),[ne,Z]=s.useState([]),[oe,_]=s.useState([]),[se,N]=s.useState([]),[ae,x]=s.useState([]),[ce,F]=s.useState(void 0),[ie,ue]=s.useState([]),[B,v]=s.useState(void 0),l=s.useRef(null),$=s.useRef(null),f=s.useRef(null),C=s.useRef(!1),u=s.useRef(!0),S=s.useRef(0),a=s.useRef(null),p=s.useRef(m),J=s.useRef(z),W=s.useRef(null);s.useEffect(()=>{p.current=m,J.current=z},[m,z]);const e=s.useCallback((t,n,...o)=>{const d=o.length>0?`${n} ${o.map(r=>JSON.stringify(r)).join(" ")}`:n;console[t](`[useMcp] ${d}`),u.current&&ue(r=>[...r.slice(-100),{level:t,message:d,timestamp:Date.now()}])},[]),y=s.useCallback(async(t=!1)=>{t||e("info","Disconnecting..."),C.current=!1,a.current&&clearTimeout(a.current),a.current=null;const n=$.current;if(l.current=null,$.current=null,u.current&&!t&&(b("discovering"),Z([]),_([]),N([]),x([]),F(void 0),v(void 0)),n)try{await n.close(),t||e("debug","Transport closed")}catch(o){t||e("warn","Error closing transport:",o)}},[e]),w=s.useCallback((t,n)=>{if(e("error",t,n??""),u.current){b("failed"),F(t);const o=f.current?.getLastAttemptedAuthUrl();o&&(v(o),e("info","Manual authentication URL may be available.",o))}C.current=!1},[e]),R=s.useCallback(async()=>{if(C.current){e("debug","Connection attempt already in progress.");return}if(!u.current){e("debug","Connect called after unmount, aborting.");return}C.current=!0,S.current+=1,F(void 0),v(void 0),W.current=null,b("discovering"),e("info",`Connecting attempt #${S.current} to ${g}...`),f.current||(f.current=new V(g,{storageKeyPrefix:M,clientName:k,clientUri:P,callbackUrl:L,preventAutoAuth:O,onPopupWindow:Y}),e("debug","BrowserOAuthClientProvider initialized in connect.")),l.current||(l.current=new $e({name:T.name||"use-mcp-react-client",version:T.version||"0.1.0"},{capabilities:{}}),e("debug","MCP Client initialized in connect."));const t=async o=>{e("info",`Attempting connection with ${o.toUpperCase()} transport...`),p.current!=="authenticating"&&b("connecting");let d;try{U(f.current,"Auth Provider must be initialized"),U(l.current,"Client must be initialized"),$.current&&(await $.current.close().catch(h=>e("warn",`Error closing previous transport: ${h.message}`)),$.current=null);const r={authProvider:f.current,requestInit:{headers:{Accept:"application/json, text/event-stream",...G}}},i=Q(g),c=new URL(i);e("debug",`Creating ${o.toUpperCase()} transport for URL: ${c.toString()}`),e("debug","Transport options:",{authProvider:!!f.current,headers:G,url:c.toString()}),o==="http"?(e("debug","Creating StreamableHTTPClientTransport..."),d=new ye(c,r),e("debug","StreamableHTTPClientTransport created successfully")):(e("debug","Creating SSEClientTransport..."),d=new ve(c,r),e("debug","SSEClientTransport created successfully")),$.current=d,e("debug",`${o.toUpperCase()} transport created and assigned to ref.`)}catch(r){return w(`Failed to create ${o.toUpperCase()} transport: ${r instanceof Error?r.message:String(r)}`,r instanceof Error?r:void 0),"failed"}d.onmessage=r=>{e("debug",`[Transport] Received: ${JSON.stringify(r)}`),l.current?.handleMessage?.(r)},d.onerror=r=>{e("warn",`Transport error event (${o.toUpperCase()}):`,r),e("debug","Error details:",{message:r.message,stack:r.stack,name:r.name,cause:r.cause}),w(`Transport error (${o.toUpperCase()}): ${r.message}`,r)},d.onclose=()=>{if(!u.current||C.current)return;e("info",`Transport connection closed (${W.current||"unknown"} type).`);const r=p.current,i=J.current;if(r==="ready"&&i){const c=typeof i=="number"?i:re;e("info",`Attempting to reconnect in ${c}ms...`),b("connecting"),setTimeout(()=>{u.current&&R()},c)}else r!=="failed"&&r!=="authenticating"&&w("Connection closed unexpectedly.")};try{e("info",`Connecting client via ${o.toUpperCase()}...`),e("debug","About to call client.connect() with transport instance"),e("debug",`Transport instance type: ${d.constructor.name}`),await l.current.connect(d),e("info",`Client connected via ${o.toUpperCase()}. Loading tools, resources, and prompts...`),W.current=o,b("loading");const r=await l.current.request({method:"tools/list"},Te);let i={resources:[],resourceTemplates:[]};try{i=await l.current.request({method:"resources/list"},ee)}catch(h){e("debug","Server does not support resources/list method",h)}let c={prompts:[]};try{c=await l.current.request({method:"prompts/list"},te)}catch(h){e("debug","Server does not support prompts/list method",h)}if(u.current){Z(r.tools),_(i.resources),N(Array.isArray(i.resourceTemplates)?i.resourceTemplates:[]),x(c.prompts);const h=[`Loaded ${r.tools.length} tools`];return(i.resources.length>0||i.resourceTemplates&&i.resourceTemplates.length>0)&&(h.push(`${i.resources.length} resources`),Array.isArray(i.resourceTemplates)&&i.resourceTemplates.length>0&&h.push(`${i.resourceTemplates.length} resource templates`)),c.prompts.length>0&&h.push(`${c.prompts.length} prompts`),e("info",h.join(", ")+"."),b("ready"),S.current=0,"success"}else return"failed"}catch(r){e("debug",`Client connect error via ${o.toUpperCase()}:`,r),e("debug","Connect error details:",{message:r instanceof Error?r.message:String(r),stack:r instanceof Error?r.stack:"N/A",name:r instanceof Error?r.name:"Unknown",cause:r instanceof Error?r.cause:void 0});const i=r instanceof Error?r:new Error(String(r)),c=i.message,h=c.includes("404")||c.includes("Not Found"),we=c.includes("405")||c.includes("Method Not Allowed"),K=c==="Failed to fetch"||c==="NetworkError when attempting to fetch resource."||c==="Load failed";if(o==="http"&&(h||we||K))return e("warn",`HTTP transport failed (${K?"CORS":h?"404":"405"}).`),"fallback";if(i instanceof X||c.includes("Unauthorized")||c.includes("401")){e("info","Authentication required."),U(f.current,"Auth Provider not available for auth flow");const Re=await f.current.tokens();if(O&&!Re)return e("info","Authentication required but auto-auth prevented. User action needed."),b("pending_auth"),"auth_redirect";p.current!=="authenticating"&&p.current!=="pending_auth"&&(b("authenticating"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{},j));try{const E=await H(f.current,{serverUrl:g});if(!u.current)return"failed";if(E==="AUTHORIZED")return e("info","Authentication successful via existing token or refresh. Re-attempting connection..."),a.current&&clearTimeout(a.current),C.current=!1,R(),"failed";if(E==="REDIRECT")return e("info","Redirecting for authentication. Waiting for callback..."),"auth_redirect"}catch(E){return u.current&&(a.current&&clearTimeout(a.current),w(`Failed to initiate authentication: ${E instanceof Error?E.message:String(E)}`,E instanceof Error?E:void 0)),"failed"}}return w(`Failed to connect via ${o.toUpperCase()}: ${c}`,i),"failed"}};let n="failed";if(console.log({transportType:D}),D==="sse")e("debug","Using SSE-only transport mode"),n=await t("sse");else if(D==="http")e("debug","Using HTTP-only transport mode"),n=await t("http");else{e("debug","Using auto transport mode (HTTP with SSE fallback)");const o=await t("http");if(o==="fallback"&&u.current&&p.current!=="authenticating"){e("info","HTTP failed, attempting SSE fallback...");const d=await t("sse");n=d,d==="failed"&&u.current}else n=o}(n==="success"||n==="failed")&&(C.current=!1),e("debug",`Connection sequence finished with status: ${n}`)},[e,w,y,H,g,M,k,P,L,T.name,T.version]),le=s.useCallback(async(t,n)=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot call tool "${t}".`);e("info",`Calling tool: ${t}`,n);try{const o=await l.current.request({method:"tools/call",params:{name:t,arguments:n}},be);return e("info",`Tool "${t}" call successful:`,o),o}catch(o){e("error",`Error calling tool "${t}": ${o instanceof Error?o.message:String(o)}`,o);const d=o instanceof Error?o:new Error(String(o));if(d instanceof X||d.message.includes("Unauthorized")||d.message.includes("401")){e("warn","Tool call unauthorized, attempting re-authentication..."),b("authenticating"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{},j);try{U(f.current,"Auth Provider not available for tool re-auth");const r=await H(f.current,{serverUrl:g});if(!u.current)return;r==="AUTHORIZED"?(e("info","Re-authentication successful. Retrying tool call is recommended, or reconnecting."),a.current&&clearTimeout(a.current),C.current=!1,R()):r==="REDIRECT"&&e("info","Redirecting for re-authentication for tool call.")}catch(r){if(!u.current)return;a.current&&clearTimeout(a.current),w(`Re-authentication failed: ${r instanceof Error?r.message:String(r)}`,r instanceof Error?r:void 0)}}if(p.current!=="authenticating")throw o;return}},[m,g,e,w,R]),A=s.useCallback(()=>{p.current==="failed"?(e("info","Retry requested..."),R()):e("warn",`Retry called but state is not 'failed' (state: ${p.current}). Ignoring.`)},[e,R]),fe=s.useCallback(async()=>{e("info","Manual authentication requested...");const t=p.current;if(t==="failed")e("info","Attempting to reconnect and authenticate via retry..."),A();else if(t==="pending_auth"){e("info","Proceeding with authentication from pending state..."),b("authenticating"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{},j);try{U(f.current,"Auth Provider not available for manual auth");const n=await H(f.current,{serverUrl:g});if(!u.current)return;n==="AUTHORIZED"?(e("info","Manual authentication successful. Re-attempting connection..."),a.current&&clearTimeout(a.current),C.current=!1,R()):n==="REDIRECT"&&e("info","Redirecting for manual authentication. Waiting for callback...")}catch(n){if(!u.current)return;a.current&&clearTimeout(a.current),w(`Manual authentication failed: ${n instanceof Error?n.message:String(n)}`,n instanceof Error?n:void 0)}}else if(t==="authenticating"){e("warn","Already attempting authentication. Check for blocked popups or wait for timeout.");const n=f.current?.getLastAttemptedAuthUrl();n&&!B&&(v(n),e("info","Manual authentication URL retrieved:",n))}else e("info",`Client not in a state requiring manual authentication trigger (state: ${t}). If needed, try disconnecting and reconnecting.`)},[e,A,B,g,w,R]),de=s.useCallback(()=>{if(f.current){const t=f.current.clearStorage();e("info",`Cleared ${t} item(s) from localStorage for ${g}.`),v(void 0),y()}else e("warn","Auth provider not initialized, cannot clear storage.")},[g,e,y]),ge=s.useCallback(async()=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot list resources.`);e("info","Listing resources...");try{const t=await l.current.request({method:"resources/list"},ee);u.current&&(_(t.resources),N(Array.isArray(t.resourceTemplates)?t.resourceTemplates:[]),e("info",`Listed ${t.resources.length} resources, ${Array.isArray(t.resourceTemplates)?t.resourceTemplates.length:0} resource templates.`))}catch(t){throw e("error",`Error listing resources: ${t instanceof Error?t.message:String(t)}`,t),t}},[m,e]),me=s.useCallback(async t=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot read resource "${t}".`);e("info",`Reading resource: ${t}`);try{const n=await l.current.request({method:"resources/read",params:{uri:t}},Ce);return e("info",`Resource "${t}" read successfully`),n}catch(n){throw e("error",`Error reading resource "${t}": ${n instanceof Error?n.message:String(n)}`,n),n}},[m,e]),pe=s.useCallback(async()=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot list prompts.`);e("info","Listing prompts...");try{const t=await l.current.request({method:"prompts/list"},te);u.current&&(x(t.prompts),e("info",`Listed ${t.prompts.length} prompts.`))}catch(t){throw e("error",`Error listing prompts: ${t instanceof Error?t.message:String(t)}`,t),t}},[m,e]),he=s.useCallback(async(t,n)=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot get prompt "${t}".`);e("info",`Getting prompt: ${t}`,n);try{const o=await l.current.request({method:"prompts/get",params:{name:t,arguments:n}},Ee);return e("info",`Prompt "${t}" retrieved successfully`),o}catch(o){throw e("error",`Error getting prompt "${t}": ${o instanceof Error?o.message:String(o)}`,o),o}},[m,e]);return s.useEffect(()=>{const t=n=>{n.origin===window.location.origin&&n.data?.type==="mcp_auth_callback"&&(e("info","Received auth callback message.",n.data),a.current&&clearTimeout(a.current),n.data.success?(e("info","Authentication successful via popup. Reconnecting client..."),C.current=!1,R()):w(`Authentication failed in callback: ${n.data.error||"Unknown reason."}`))};return window.addEventListener("message",t),e("debug","Auth callback message listener added."),()=>{window.removeEventListener("message",t),e("debug","Auth callback message listener removed."),a.current&&clearTimeout(a.current)}},[e,w,R]),s.useEffect(()=>(u.current=!0,e("debug","useMcp mounted, initiating connection."),S.current=0,(!f.current||f.current.serverUrl!==g)&&(f.current=new V(g,{storageKeyPrefix:M,clientName:k,clientUri:P,callbackUrl:L,preventAutoAuth:O,onPopupWindow:Y}),e("debug","BrowserOAuthClientProvider initialized/updated on mount/option change.")),R(),()=>{u.current=!1,e("debug","useMcp unmounting, disconnecting."),y(!0)}),[g,M,L,k,P,T.name,T.version,R,y]),s.useEffect(()=>{let t=null;if(m==="failed"&&I&&S.current>0){const n=typeof I=="number"?I:Se;e("info",`Connection failed, auto-retrying in ${n}ms...`),t=setTimeout(()=>{u.current&&p.current==="failed"&&A()},n)}return()=>{t&&clearTimeout(t)}},[m,I,A,e]),{state:m,tools:ne,resources:oe,resourceTemplates:se,prompts:ae,error:ce,log:ie,authUrl:B,callTool:le,listResources:ge,readResource:me,listPrompts:pe,getPrompt:he,retry:A,disconnect:y,authenticate:fe,clearStorage:de}}export{Me as u};
1
+ import{s as Q,B as V}from"./chunk-2RRQPJJO-DGhxLrrR.js";import{a as H,C as be,U as X,L as ee,R as Ce,b as te,G as Ee,c as Te}from"./auth-CGqqbEan.js";import{r as s}from"./index-B5e6fytH.js";import{C as $e,S as ye,c as ve}from"./use-binding-BLIUV5ER.js";function U(q,g){if(!q)throw new Error(g)}var re=3e3,Se=5e3,j=300*1e3;function Me(q){const{url:g,clientName:k,clientUri:P,callbackUrl:L=typeof window<"u"?Q(new URL("/oauth/callback",window.location.origin).toString()):"/oauth/callback",storageKeyPrefix:M="mcp:auth",clientConfig:T={},customHeaders:G={},debug:Ae=!1,autoRetry:I=!1,autoReconnect:z=re,transportType:D="auto",preventAutoAuth:O=!1,onPopupWindow:Y}=q,[m,b]=s.useState("discovering"),[ne,Z]=s.useState([]),[oe,_]=s.useState([]),[se,N]=s.useState([]),[ae,x]=s.useState([]),[ce,F]=s.useState(void 0),[ie,ue]=s.useState([]),[B,v]=s.useState(void 0),l=s.useRef(null),$=s.useRef(null),f=s.useRef(null),C=s.useRef(!1),u=s.useRef(!0),S=s.useRef(0),a=s.useRef(null),p=s.useRef(m),J=s.useRef(z),W=s.useRef(null);s.useEffect(()=>{p.current=m,J.current=z},[m,z]);const e=s.useCallback((t,n,...o)=>{const d=o.length>0?`${n} ${o.map(r=>JSON.stringify(r)).join(" ")}`:n;console[t](`[useMcp] ${d}`),u.current&&ue(r=>[...r.slice(-100),{level:t,message:d,timestamp:Date.now()}])},[]),y=s.useCallback(async(t=!1)=>{t||e("info","Disconnecting..."),C.current=!1,a.current&&clearTimeout(a.current),a.current=null;const n=$.current;if(l.current=null,$.current=null,u.current&&!t&&(b("discovering"),Z([]),_([]),N([]),x([]),F(void 0),v(void 0)),n)try{await n.close(),t||e("debug","Transport closed")}catch(o){t||e("warn","Error closing transport:",o)}},[e]),w=s.useCallback((t,n)=>{if(e("error",t,n??""),u.current){b("failed"),F(t);const o=f.current?.getLastAttemptedAuthUrl();o&&(v(o),e("info","Manual authentication URL may be available.",o))}C.current=!1},[e]),R=s.useCallback(async()=>{if(C.current){e("debug","Connection attempt already in progress.");return}if(!u.current){e("debug","Connect called after unmount, aborting.");return}C.current=!0,S.current+=1,F(void 0),v(void 0),W.current=null,b("discovering"),e("info",`Connecting attempt #${S.current} to ${g}...`),f.current||(f.current=new V(g,{storageKeyPrefix:M,clientName:k,clientUri:P,callbackUrl:L,preventAutoAuth:O,onPopupWindow:Y}),e("debug","BrowserOAuthClientProvider initialized in connect.")),l.current||(l.current=new $e({name:T.name||"use-mcp-react-client",version:T.version||"0.1.0"},{capabilities:{}}),e("debug","MCP Client initialized in connect."));const t=async o=>{e("info",`Attempting connection with ${o.toUpperCase()} transport...`),p.current!=="authenticating"&&b("connecting");let d;try{U(f.current,"Auth Provider must be initialized"),U(l.current,"Client must be initialized"),$.current&&(await $.current.close().catch(h=>e("warn",`Error closing previous transport: ${h.message}`)),$.current=null);const r={authProvider:f.current,requestInit:{headers:{Accept:"application/json, text/event-stream",...G}}},i=Q(g),c=new URL(i);e("debug",`Creating ${o.toUpperCase()} transport for URL: ${c.toString()}`),e("debug","Transport options:",{authProvider:!!f.current,headers:G,url:c.toString()}),o==="http"?(e("debug","Creating StreamableHTTPClientTransport..."),d=new ye(c,r),e("debug","StreamableHTTPClientTransport created successfully")):(e("debug","Creating SSEClientTransport..."),d=new ve(c,r),e("debug","SSEClientTransport created successfully")),$.current=d,e("debug",`${o.toUpperCase()} transport created and assigned to ref.`)}catch(r){return w(`Failed to create ${o.toUpperCase()} transport: ${r instanceof Error?r.message:String(r)}`,r instanceof Error?r:void 0),"failed"}d.onmessage=r=>{e("debug",`[Transport] Received: ${JSON.stringify(r)}`),l.current?.handleMessage?.(r)},d.onerror=r=>{e("warn",`Transport error event (${o.toUpperCase()}):`,r),e("debug","Error details:",{message:r.message,stack:r.stack,name:r.name,cause:r.cause}),w(`Transport error (${o.toUpperCase()}): ${r.message}`,r)},d.onclose=()=>{if(!u.current||C.current)return;e("info",`Transport connection closed (${W.current||"unknown"} type).`);const r=p.current,i=J.current;if(r==="ready"&&i){const c=typeof i=="number"?i:re;e("info",`Attempting to reconnect in ${c}ms...`),b("connecting"),setTimeout(()=>{u.current&&R()},c)}else r!=="failed"&&r!=="authenticating"&&w("Connection closed unexpectedly.")};try{e("info",`Connecting client via ${o.toUpperCase()}...`),e("debug","About to call client.connect() with transport instance"),e("debug",`Transport instance type: ${d.constructor.name}`),await l.current.connect(d),e("info",`Client connected via ${o.toUpperCase()}. Loading tools, resources, and prompts...`),W.current=o,b("loading");const r=await l.current.request({method:"tools/list"},Te);let i={resources:[],resourceTemplates:[]};try{i=await l.current.request({method:"resources/list"},ee)}catch(h){e("debug","Server does not support resources/list method",h)}let c={prompts:[]};try{c=await l.current.request({method:"prompts/list"},te)}catch(h){e("debug","Server does not support prompts/list method",h)}if(u.current){Z(r.tools),_(i.resources),N(Array.isArray(i.resourceTemplates)?i.resourceTemplates:[]),x(c.prompts);const h=[`Loaded ${r.tools.length} tools`];return(i.resources.length>0||i.resourceTemplates&&i.resourceTemplates.length>0)&&(h.push(`${i.resources.length} resources`),Array.isArray(i.resourceTemplates)&&i.resourceTemplates.length>0&&h.push(`${i.resourceTemplates.length} resource templates`)),c.prompts.length>0&&h.push(`${c.prompts.length} prompts`),e("info",h.join(", ")+"."),b("ready"),S.current=0,"success"}else return"failed"}catch(r){e("debug",`Client connect error via ${o.toUpperCase()}:`,r),e("debug","Connect error details:",{message:r instanceof Error?r.message:String(r),stack:r instanceof Error?r.stack:"N/A",name:r instanceof Error?r.name:"Unknown",cause:r instanceof Error?r.cause:void 0});const i=r instanceof Error?r:new Error(String(r)),c=i.message,h=c.includes("404")||c.includes("Not Found"),we=c.includes("405")||c.includes("Method Not Allowed"),K=c==="Failed to fetch"||c==="NetworkError when attempting to fetch resource."||c==="Load failed";if(o==="http"&&(h||we||K))return e("warn",`HTTP transport failed (${K?"CORS":h?"404":"405"}).`),"fallback";if(i instanceof X||c.includes("Unauthorized")||c.includes("401")){e("info","Authentication required."),U(f.current,"Auth Provider not available for auth flow");const Re=await f.current.tokens();if(O&&!Re)return e("info","Authentication required but auto-auth prevented. User action needed."),b("pending_auth"),"auth_redirect";p.current!=="authenticating"&&p.current!=="pending_auth"&&(b("authenticating"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{},j));try{const E=await H(f.current,{serverUrl:g});if(!u.current)return"failed";if(E==="AUTHORIZED")return e("info","Authentication successful via existing token or refresh. Re-attempting connection..."),a.current&&clearTimeout(a.current),C.current=!1,R(),"failed";if(E==="REDIRECT")return e("info","Redirecting for authentication. Waiting for callback..."),"auth_redirect"}catch(E){return u.current&&(a.current&&clearTimeout(a.current),w(`Failed to initiate authentication: ${E instanceof Error?E.message:String(E)}`,E instanceof Error?E:void 0)),"failed"}}return w(`Failed to connect via ${o.toUpperCase()}: ${c}`,i),"failed"}};let n="failed";if(console.log({transportType:D}),D==="sse")e("debug","Using SSE-only transport mode"),n=await t("sse");else if(D==="http")e("debug","Using HTTP-only transport mode"),n=await t("http");else{e("debug","Using auto transport mode (HTTP with SSE fallback)");const o=await t("http");if(o==="fallback"&&u.current&&p.current!=="authenticating"){e("info","HTTP failed, attempting SSE fallback...");const d=await t("sse");n=d,d==="failed"&&u.current}else n=o}(n==="success"||n==="failed")&&(C.current=!1),e("debug",`Connection sequence finished with status: ${n}`)},[e,w,y,H,g,M,k,P,L,T.name,T.version]),le=s.useCallback(async(t,n)=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot call tool "${t}".`);e("info",`Calling tool: ${t}`,n);try{const o=await l.current.request({method:"tools/call",params:{name:t,arguments:n}},be);return e("info",`Tool "${t}" call successful:`,o),o}catch(o){e("error",`Error calling tool "${t}": ${o instanceof Error?o.message:String(o)}`,o);const d=o instanceof Error?o:new Error(String(o));if(d instanceof X||d.message.includes("Unauthorized")||d.message.includes("401")){e("warn","Tool call unauthorized, attempting re-authentication..."),b("authenticating"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{},j);try{U(f.current,"Auth Provider not available for tool re-auth");const r=await H(f.current,{serverUrl:g});if(!u.current)return;r==="AUTHORIZED"?(e("info","Re-authentication successful. Retrying tool call is recommended, or reconnecting."),a.current&&clearTimeout(a.current),C.current=!1,R()):r==="REDIRECT"&&e("info","Redirecting for re-authentication for tool call.")}catch(r){if(!u.current)return;a.current&&clearTimeout(a.current),w(`Re-authentication failed: ${r instanceof Error?r.message:String(r)}`,r instanceof Error?r:void 0)}}if(p.current!=="authenticating")throw o;return}},[m,g,e,w,R]),A=s.useCallback(()=>{p.current==="failed"?(e("info","Retry requested..."),R()):e("warn",`Retry called but state is not 'failed' (state: ${p.current}). Ignoring.`)},[e,R]),fe=s.useCallback(async()=>{e("info","Manual authentication requested...");const t=p.current;if(t==="failed")e("info","Attempting to reconnect and authenticate via retry..."),A();else if(t==="pending_auth"){e("info","Proceeding with authentication from pending state..."),b("authenticating"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{},j);try{U(f.current,"Auth Provider not available for manual auth");const n=await H(f.current,{serverUrl:g});if(!u.current)return;n==="AUTHORIZED"?(e("info","Manual authentication successful. Re-attempting connection..."),a.current&&clearTimeout(a.current),C.current=!1,R()):n==="REDIRECT"&&e("info","Redirecting for manual authentication. Waiting for callback...")}catch(n){if(!u.current)return;a.current&&clearTimeout(a.current),w(`Manual authentication failed: ${n instanceof Error?n.message:String(n)}`,n instanceof Error?n:void 0)}}else if(t==="authenticating"){e("warn","Already attempting authentication. Check for blocked popups or wait for timeout.");const n=f.current?.getLastAttemptedAuthUrl();n&&!B&&(v(n),e("info","Manual authentication URL retrieved:",n))}else e("info",`Client not in a state requiring manual authentication trigger (state: ${t}). If needed, try disconnecting and reconnecting.`)},[e,A,B,g,w,R]),de=s.useCallback(()=>{if(f.current){const t=f.current.clearStorage();e("info",`Cleared ${t} item(s) from localStorage for ${g}.`),v(void 0),y()}else e("warn","Auth provider not initialized, cannot clear storage.")},[g,e,y]),ge=s.useCallback(async()=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot list resources.`);e("info","Listing resources...");try{const t=await l.current.request({method:"resources/list"},ee);u.current&&(_(t.resources),N(Array.isArray(t.resourceTemplates)?t.resourceTemplates:[]),e("info",`Listed ${t.resources.length} resources, ${Array.isArray(t.resourceTemplates)?t.resourceTemplates.length:0} resource templates.`))}catch(t){throw e("error",`Error listing resources: ${t instanceof Error?t.message:String(t)}`,t),t}},[m,e]),me=s.useCallback(async t=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot read resource "${t}".`);e("info",`Reading resource: ${t}`);try{const n=await l.current.request({method:"resources/read",params:{uri:t}},Ce);return e("info",`Resource "${t}" read successfully`),n}catch(n){throw e("error",`Error reading resource "${t}": ${n instanceof Error?n.message:String(n)}`,n),n}},[m,e]),pe=s.useCallback(async()=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot list prompts.`);e("info","Listing prompts...");try{const t=await l.current.request({method:"prompts/list"},te);u.current&&(x(t.prompts),e("info",`Listed ${t.prompts.length} prompts.`))}catch(t){throw e("error",`Error listing prompts: ${t instanceof Error?t.message:String(t)}`,t),t}},[m,e]),he=s.useCallback(async(t,n)=>{if(p.current!=="ready"||!l.current)throw new Error(`MCP client is not ready (current state: ${m}). Cannot get prompt "${t}".`);e("info",`Getting prompt: ${t}`,n);try{const o=await l.current.request({method:"prompts/get",params:{name:t,arguments:n}},Ee);return e("info",`Prompt "${t}" retrieved successfully`),o}catch(o){throw e("error",`Error getting prompt "${t}": ${o instanceof Error?o.message:String(o)}`,o),o}},[m,e]);return s.useEffect(()=>{const t=n=>{n.origin===window.location.origin&&n.data?.type==="mcp_auth_callback"&&(e("info","Received auth callback message.",n.data),a.current&&clearTimeout(a.current),n.data.success?(e("info","Authentication successful via popup. Reconnecting client..."),C.current=!1,R()):w(`Authentication failed in callback: ${n.data.error||"Unknown reason."}`))};return window.addEventListener("message",t),e("debug","Auth callback message listener added."),()=>{window.removeEventListener("message",t),e("debug","Auth callback message listener removed."),a.current&&clearTimeout(a.current)}},[e,w,R]),s.useEffect(()=>(u.current=!0,e("debug","useMcp mounted, initiating connection."),S.current=0,(!f.current||f.current.serverUrl!==g)&&(f.current=new V(g,{storageKeyPrefix:M,clientName:k,clientUri:P,callbackUrl:L,preventAutoAuth:O,onPopupWindow:Y}),e("debug","BrowserOAuthClientProvider initialized/updated on mount/option change.")),R(),()=>{u.current=!1,e("debug","useMcp unmounting, disconnecting."),y(!0)}),[g,M,L,k,P,T.name,T.version,R,y]),s.useEffect(()=>{let t=null;if(m==="failed"&&I&&S.current>0){const n=typeof I=="number"?I:Se;e("info",`Connection failed, auto-retrying in ${n}ms...`),t=setTimeout(()=>{u.current&&p.current==="failed"&&A()},n)}return()=>{t&&clearTimeout(t)}},[m,I,A,e]),{state:m,tools:ne,resources:oe,resourceTemplates:se,prompts:ae,error:ce,log:ie,authUrl:B,callTool:le,listResources:ge,readResource:me,listPrompts:pe,getPrompt:he,retry:A,disconnect:y,authenticate:fe,clearStorage:de}}export{Me as u};
@@ -1 +1 @@
1
- import{X as _}from"./index-VCe1FY3E.js";var S={exports:{}},r={};var $;function I(){if($)return r;$=1;var m=Symbol.for("react.element"),y=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),f=Symbol.for("react.context"),x=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),i=Symbol.for("react.suspense"),l=Symbol.for("react.suspense_list"),a=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),R=Symbol.for("react.offscreen"),b;b=Symbol.for("react.module.reference");function t(e){if(typeof e=="object"&&e!==null){var d=e.$$typeof;switch(d){case m:switch(e=e.type,e){case o:case s:case n:case i:case l:return e;default:switch(e=e&&e.$$typeof,e){case x:case f:case u:case p:case a:case c:return e;default:return d}}case y:return d}}}return r.ContextConsumer=f,r.ContextProvider=c,r.Element=m,r.ForwardRef=u,r.Fragment=o,r.Lazy=p,r.Memo=a,r.Portal=y,r.Profiler=s,r.StrictMode=n,r.Suspense=i,r.SuspenseList=l,r.isAsyncMode=function(){return!1},r.isConcurrentMode=function(){return!1},r.isContextConsumer=function(e){return t(e)===f},r.isContextProvider=function(e){return t(e)===c},r.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===m},r.isForwardRef=function(e){return t(e)===u},r.isFragment=function(e){return t(e)===o},r.isLazy=function(e){return t(e)===p},r.isMemo=function(e){return t(e)===a},r.isPortal=function(e){return t(e)===y},r.isProfiler=function(e){return t(e)===s},r.isStrictMode=function(e){return t(e)===n},r.isSuspense=function(e){return t(e)===i},r.isSuspenseList=function(e){return t(e)===l},r.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===o||e===s||e===n||e===i||e===l||e===R||typeof e=="object"&&e!==null&&(e.$$typeof===p||e.$$typeof===a||e.$$typeof===c||e.$$typeof===f||e.$$typeof===u||e.$$typeof===b||e.getModuleId!==void 0)},r.typeOf=t,r}var v;function C(){return v||(v=1,S.exports=I()),S.exports}var g=C();const h=_(g);export{h as R,g as r};
1
+ import{X as _}from"./index-B5e6fytH.js";var S={exports:{}},r={};var $;function I(){if($)return r;$=1;var m=Symbol.for("react.element"),y=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),f=Symbol.for("react.context"),x=Symbol.for("react.server_context"),u=Symbol.for("react.forward_ref"),i=Symbol.for("react.suspense"),l=Symbol.for("react.suspense_list"),a=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),R=Symbol.for("react.offscreen"),b;b=Symbol.for("react.module.reference");function t(e){if(typeof e=="object"&&e!==null){var d=e.$$typeof;switch(d){case m:switch(e=e.type,e){case o:case s:case n:case i:case l:return e;default:switch(e=e&&e.$$typeof,e){case x:case f:case u:case p:case a:case c:return e;default:return d}}case y:return d}}}return r.ContextConsumer=f,r.ContextProvider=c,r.Element=m,r.ForwardRef=u,r.Fragment=o,r.Lazy=p,r.Memo=a,r.Portal=y,r.Profiler=s,r.StrictMode=n,r.Suspense=i,r.SuspenseList=l,r.isAsyncMode=function(){return!1},r.isConcurrentMode=function(){return!1},r.isContextConsumer=function(e){return t(e)===f},r.isContextProvider=function(e){return t(e)===c},r.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===m},r.isForwardRef=function(e){return t(e)===u},r.isFragment=function(e){return t(e)===o},r.isLazy=function(e){return t(e)===p},r.isMemo=function(e){return t(e)===a},r.isPortal=function(e){return t(e)===y},r.isProfiler=function(e){return t(e)===s},r.isStrictMode=function(e){return t(e)===n},r.isSuspense=function(e){return t(e)===i},r.isSuspenseList=function(e){return t(e)===l},r.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===o||e===s||e===n||e===i||e===l||e===R||typeof e=="object"&&e!==null&&(e.$$typeof===p||e.$$typeof===a||e.$$typeof===c||e.$$typeof===f||e.$$typeof===u||e.$$typeof===b||e.getModuleId!==void 0)},r.typeOf=t,r}var v;function C(){return v||(v=1,S.exports=I()),S.exports}var g=C();const h=_(g);export{h as R,g as r};
@@ -1 +1 @@
1
- import{r as n,aQ as q,bm as R,a8 as Ee,ac as ke,ae as Se,ab as xe,bn as j}from"./index-VCe1FY3E.js";var de=1,Ie=.9,Ce=.8,Re=.17,Y=.1,Z=.999,Ae=.9999,Me=.99,$e=/[\\\/_+.#"@\[\(\{&]/,De=/[\\\/_+.#"@\[\(\{&]/g,Fe=/[\s-]/,ve=/[\s-]/g;function ee(t,l,r,f,u,c,d){if(c===l.length)return u===t.length?de:Me;var v=`${u},${c}`;if(d[v]!==void 0)return d[v];for(var b=f.charAt(c),i=r.indexOf(b,u),p=0,h,x,E,I;i>=0;)h=ee(t,l,r,f,i+1,c+1,d),h>p&&(i===u?h*=de:$e.test(t.charAt(i-1))?(h*=Ce,E=t.slice(u,i-1).match(De),E&&u>0&&(h*=Math.pow(Z,E.length))):Fe.test(t.charAt(i-1))?(h*=Ie,I=t.slice(u,i-1).match(ve),I&&u>0&&(h*=Math.pow(Z,I.length))):(h*=Re,u>0&&(h*=Math.pow(Z,i-u))),t.charAt(i)!==l.charAt(c)&&(h*=Ae)),(h<Y&&r.charAt(i-1)===f.charAt(c+1)||f.charAt(c+1)===f.charAt(c)&&r.charAt(i-1)!==f.charAt(c))&&(x=ee(t,l,r,f,i+1,c+2,d),x*Y>h&&(h=x*Y)),h>p&&(p=h),i=r.indexOf(b,i+1);return d[v]=p,p}function se(t){return t.toLowerCase().replace(ve," ")}function Ke(t,l,r){return t=r&&r.length>0?`${t+" "+r.join(" ")}`:t,ee(t,l,se(t),se(l),0,0,{})}var V='[cmdk-group=""]',_='[cmdk-group-items=""]',qe='[cmdk-group-heading=""]',me='[cmdk-item=""]',fe=`${me}:not([aria-disabled="true"])`,te="cmdk-item-select",F="data-value",Pe=(t,l,r)=>Ke(t,l,r),pe=n.createContext(void 0),L=()=>n.useContext(pe),he=n.createContext(void 0),re=()=>n.useContext(he),ge=n.createContext(void 0),be=n.forwardRef((t,l)=>{let r=K(()=>{var e,o;return{search:"",value:(o=(e=t.value)!=null?e:t.defaultValue)!=null?o:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),f=K(()=>new Set),u=K(()=>new Map),c=K(()=>new Map),d=K(()=>new Set),v=we(t),{label:b,children:i,value:p,onValueChange:h,filter:x,shouldFilter:E,loop:I,disablePointerSelection:U=!1,vimBindings:A=!0,...O}=t,H=q(),ne=q(),N=q(),M=n.useRef(null),w=We();$(()=>{if(p!==void 0){let e=p.trim();r.current.value=e,k.emit()}},[p]),$(()=>{w(6,ae)},[]);let k=n.useMemo(()=>({subscribe:e=>(d.current.add(e),()=>d.current.delete(e)),snapshot:()=>r.current,setState:(e,o,s)=>{var a,m,g,S;if(!Object.is(r.current[e],o)){if(r.current[e]=o,e==="search")J(),W(),w(1,G);else if(e==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let y=document.getElementById(N);y?y.focus():(a=document.getElementById(H))==null||a.focus()}if(w(7,()=>{var y;r.current.selectedItemId=(y=D())==null?void 0:y.id,k.emit()}),s||w(5,ae),((m=v.current)==null?void 0:m.value)!==void 0){let y=o??"";(S=(g=v.current).onValueChange)==null||S.call(g,y);return}}k.emit()}},emit:()=>{d.current.forEach(e=>e())}}),[]),T=n.useMemo(()=>({value:(e,o,s)=>{var a;o!==((a=c.current.get(e))==null?void 0:a.value)&&(c.current.set(e,{value:o,keywords:s}),r.current.filtered.items.set(e,le(o,s)),w(2,()=>{W(),k.emit()}))},item:(e,o)=>(f.current.add(e),o&&(u.current.has(o)?u.current.get(o).add(e):u.current.set(o,new Set([e]))),w(3,()=>{J(),W(),r.current.value||G(),k.emit()}),()=>{c.current.delete(e),f.current.delete(e),r.current.filtered.items.delete(e);let s=D();w(4,()=>{J(),s?.getAttribute("id")===e&&G(),k.emit()})}),group:e=>(u.current.has(e)||u.current.set(e,new Set),()=>{c.current.delete(e),u.current.delete(e)}),filter:()=>v.current.shouldFilter,label:b||t["aria-label"],getDisablePointerSelection:()=>v.current.disablePointerSelection,listId:H,inputId:N,labelId:ne,listInnerRef:M}),[]);function le(e,o){var s,a;let m=(a=(s=v.current)==null?void 0:s.filter)!=null?a:Pe;return e?m(e,r.current.search,o):0}function W(){if(!r.current.search||v.current.shouldFilter===!1)return;let e=r.current.filtered.items,o=[];r.current.filtered.groups.forEach(a=>{let m=u.current.get(a),g=0;m.forEach(S=>{let y=e.get(S);g=Math.max(y,g)}),o.push([a,g])});let s=M.current;P().sort((a,m)=>{var g,S;let y=a.getAttribute("id"),B=m.getAttribute("id");return((g=e.get(B))!=null?g:0)-((S=e.get(y))!=null?S:0)}).forEach(a=>{let m=a.closest(_);m?m.appendChild(a.parentElement===m?a:a.closest(`${_} > *`)):s.appendChild(a.parentElement===s?a:a.closest(`${_} > *`))}),o.sort((a,m)=>m[1]-a[1]).forEach(a=>{var m;let g=(m=M.current)==null?void 0:m.querySelector(`${V}[${F}="${encodeURIComponent(a[0])}"]`);g?.parentElement.appendChild(g)})}function G(){let e=P().find(s=>s.getAttribute("aria-disabled")!=="true"),o=e?.getAttribute(F);k.setState("value",o||void 0)}function J(){var e,o,s,a;if(!r.current.search||v.current.shouldFilter===!1){r.current.filtered.count=f.current.size;return}r.current.filtered.groups=new Set;let m=0;for(let g of f.current){let S=(o=(e=c.current.get(g))==null?void 0:e.value)!=null?o:"",y=(a=(s=c.current.get(g))==null?void 0:s.keywords)!=null?a:[],B=le(S,y);r.current.filtered.items.set(g,B),B>0&&m++}for(let[g,S]of u.current)for(let y of S)if(r.current.filtered.items.get(y)>0){r.current.filtered.groups.add(g);break}r.current.filtered.count=m}function ae(){var e,o,s;let a=D();a&&(((e=a.parentElement)==null?void 0:e.firstChild)===a&&((s=(o=a.closest(V))==null?void 0:o.querySelector(qe))==null||s.scrollIntoView({block:"nearest"})),a.scrollIntoView({block:"nearest"}))}function D(){var e;return(e=M.current)==null?void 0:e.querySelector(`${me}[aria-selected="true"]`)}function P(){var e;return Array.from(((e=M.current)==null?void 0:e.querySelectorAll(fe))||[])}function Q(e){let o=P()[e];o&&k.setState("value",o.getAttribute(F))}function X(e){var o;let s=D(),a=P(),m=a.findIndex(S=>S===s),g=a[m+e];(o=v.current)!=null&&o.loop&&(g=m+e<0?a[a.length-1]:m+e===a.length?a[0]:a[m+e]),g&&k.setState("value",g.getAttribute(F))}function ue(e){let o=D(),s=o?.closest(V),a;for(;s&&!a;)s=e>0?Ne(s,V):Te(s,V),a=s?.querySelector(fe);a?k.setState("value",a.getAttribute(F)):X(e)}let ie=()=>Q(P().length-1),oe=e=>{e.preventDefault(),e.metaKey?ie():e.altKey?ue(1):X(1)},ce=e=>{e.preventDefault(),e.metaKey?Q(0):e.altKey?ue(-1):X(-1)};return n.createElement(R.div,{ref:l,tabIndex:-1,...O,"cmdk-root":"",onKeyDown:e=>{var o;(o=O.onKeyDown)==null||o.call(O,e);let s=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||s))switch(e.key){case"n":case"j":{A&&e.ctrlKey&&oe(e);break}case"ArrowDown":{oe(e);break}case"p":case"k":{A&&e.ctrlKey&&ce(e);break}case"ArrowUp":{ce(e);break}case"Home":{e.preventDefault(),Q(0);break}case"End":{e.preventDefault(),ie();break}case"Enter":{e.preventDefault();let a=D();if(a){let m=new Event(te);a.dispatchEvent(m)}}}}},n.createElement("label",{"cmdk-label":"",htmlFor:T.inputId,id:T.labelId,style:Je},b),z(t,e=>n.createElement(he.Provider,{value:k},n.createElement(pe.Provider,{value:T},e))))}),Ve=n.forwardRef((t,l)=>{var r,f;let u=q(),c=n.useRef(null),d=n.useContext(ge),v=L(),b=we(t),i=(f=(r=b.current)==null?void 0:r.forceMount)!=null?f:d?.forceMount;$(()=>{if(!i)return v.item(u,d?.id)},[i]);let p=ye(u,c,[t.value,t.children,c],t.keywords),h=re(),x=C(w=>w.value&&w.value===p.current),E=C(w=>i||v.filter()===!1?!0:w.search?w.filtered.items.get(u)>0:!0);n.useEffect(()=>{let w=c.current;if(!(!w||t.disabled))return w.addEventListener(te,I),()=>w.removeEventListener(te,I)},[E,t.onSelect,t.disabled]);function I(){var w,k;U(),(k=(w=b.current).onSelect)==null||k.call(w,p.current)}function U(){h.setState("value",p.current,!0)}if(!E)return null;let{disabled:A,value:O,onSelect:H,forceMount:ne,keywords:N,...M}=t;return n.createElement(R.div,{ref:j(c,l),...M,id:u,"cmdk-item":"",role:"option","aria-disabled":!!A,"aria-selected":!!x,"data-disabled":!!A,"data-selected":!!x,onPointerMove:A||v.getDisablePointerSelection()?void 0:U,onClick:A?void 0:I},t.children)}),je=n.forwardRef((t,l)=>{let{heading:r,children:f,forceMount:u,...c}=t,d=q(),v=n.useRef(null),b=n.useRef(null),i=q(),p=L(),h=C(E=>u||p.filter()===!1?!0:E.search?E.filtered.groups.has(d):!0);$(()=>p.group(d),[]),ye(d,v,[t.value,t.heading,b]);let x=n.useMemo(()=>({id:d,forceMount:u}),[u]);return n.createElement(R.div,{ref:j(v,l),...c,"cmdk-group":"",role:"presentation",hidden:h?void 0:!0},r&&n.createElement("div",{ref:b,"cmdk-group-heading":"","aria-hidden":!0,id:i},r),z(t,E=>n.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?i:void 0},n.createElement(ge.Provider,{value:x},E))))}),Le=n.forwardRef((t,l)=>{let{alwaysRender:r,...f}=t,u=n.useRef(null),c=C(d=>!d.search);return!r&&!c?null:n.createElement(R.div,{ref:j(u,l),...f,"cmdk-separator":"",role:"separator"})}),Oe=n.forwardRef((t,l)=>{let{onValueChange:r,...f}=t,u=t.value!=null,c=re(),d=C(i=>i.search),v=C(i=>i.selectedItemId),b=L();return n.useEffect(()=>{t.value!=null&&c.setState("search",t.value)},[t.value]),n.createElement(R.input,{ref:l,...f,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":b.listId,"aria-labelledby":b.labelId,"aria-activedescendant":v,id:b.inputId,type:"text",value:u?t.value:d,onChange:i=>{u||c.setState("search",i.target.value),r?.(i.target.value)}})}),Be=n.forwardRef((t,l)=>{let{children:r,label:f="Suggestions",...u}=t,c=n.useRef(null),d=n.useRef(null),v=C(i=>i.selectedItemId),b=L();return n.useEffect(()=>{if(d.current&&c.current){let i=d.current,p=c.current,h,x=new ResizeObserver(()=>{h=requestAnimationFrame(()=>{let E=i.offsetHeight;p.style.setProperty("--cmdk-list-height",E.toFixed(1)+"px")})});return x.observe(i),()=>{cancelAnimationFrame(h),x.unobserve(i)}}},[]),n.createElement(R.div,{ref:j(c,l),...u,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":v,"aria-label":f,id:b.listId},z(t,i=>n.createElement("div",{ref:j(d,b.listInnerRef),"cmdk-list-sizer":""},i)))}),ze=n.forwardRef((t,l)=>{let{open:r,onOpenChange:f,overlayClassName:u,contentClassName:c,container:d,...v}=t;return n.createElement(Ee,{open:r,onOpenChange:f},n.createElement(ke,{container:d},n.createElement(Se,{"cmdk-overlay":"",className:u}),n.createElement(xe,{"aria-label":t.label,"cmdk-dialog":"",className:c},n.createElement(be,{ref:l,...v}))))}),Ue=n.forwardRef((t,l)=>C(r=>r.filtered.count===0)?n.createElement(R.div,{ref:l,...t,"cmdk-empty":"",role:"presentation"}):null),He=n.forwardRef((t,l)=>{let{progress:r,children:f,label:u="Loading...",...c}=t;return n.createElement(R.div,{ref:l,...c,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":u},z(t,d=>n.createElement("div",{"aria-hidden":!0},d)))}),Xe=Object.assign(be,{List:Be,Item:Ve,Input:Oe,Group:je,Separator:Le,Dialog:ze,Empty:Ue,Loading:He});function Ne(t,l){let r=t.nextElementSibling;for(;r;){if(r.matches(l))return r;r=r.nextElementSibling}}function Te(t,l){let r=t.previousElementSibling;for(;r;){if(r.matches(l))return r;r=r.previousElementSibling}}function we(t){let l=n.useRef(t);return $(()=>{l.current=t}),l}var $=typeof window>"u"?n.useEffect:n.useLayoutEffect;function K(t){let l=n.useRef();return l.current===void 0&&(l.current=t()),l}function C(t){let l=re(),r=()=>t(l.snapshot());return n.useSyncExternalStore(l.subscribe,r,r)}function ye(t,l,r,f=[]){let u=n.useRef(),c=L();return $(()=>{var d;let v=(()=>{var i;for(let p of r){if(typeof p=="string")return p.trim();if(typeof p=="object"&&"current"in p)return p.current?(i=p.current.textContent)==null?void 0:i.trim():u.current}})(),b=f.map(i=>i.trim());c.value(t,v,b),(d=l.current)==null||d.setAttribute(F,v),u.current=v}),u}var We=()=>{let[t,l]=n.useState(),r=K(()=>new Map);return $(()=>{r.current.forEach(f=>f()),r.current=new Map},[t]),(f,u)=>{r.current.set(f,u),l({})}};function Ge(t){let l=t.type;return typeof l=="function"?l(t.props):"render"in l?l.render(t.props):t}function z({asChild:t,children:l},r){return t&&n.isValidElement(l)?n.cloneElement(Ge(l),{ref:l.ref},r(l.props.children)):r(l)}var Je={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};export{Xe as _};
1
+ import{r as n,aQ as q,bm as R,a8 as Ee,ac as ke,ae as Se,ab as xe,bn as j}from"./index-B5e6fytH.js";var de=1,Ie=.9,Ce=.8,Re=.17,Y=.1,Z=.999,Ae=.9999,Me=.99,$e=/[\\\/_+.#"@\[\(\{&]/,De=/[\\\/_+.#"@\[\(\{&]/g,Fe=/[\s-]/,ve=/[\s-]/g;function ee(t,l,r,f,u,c,d){if(c===l.length)return u===t.length?de:Me;var v=`${u},${c}`;if(d[v]!==void 0)return d[v];for(var b=f.charAt(c),i=r.indexOf(b,u),p=0,h,x,E,I;i>=0;)h=ee(t,l,r,f,i+1,c+1,d),h>p&&(i===u?h*=de:$e.test(t.charAt(i-1))?(h*=Ce,E=t.slice(u,i-1).match(De),E&&u>0&&(h*=Math.pow(Z,E.length))):Fe.test(t.charAt(i-1))?(h*=Ie,I=t.slice(u,i-1).match(ve),I&&u>0&&(h*=Math.pow(Z,I.length))):(h*=Re,u>0&&(h*=Math.pow(Z,i-u))),t.charAt(i)!==l.charAt(c)&&(h*=Ae)),(h<Y&&r.charAt(i-1)===f.charAt(c+1)||f.charAt(c+1)===f.charAt(c)&&r.charAt(i-1)!==f.charAt(c))&&(x=ee(t,l,r,f,i+1,c+2,d),x*Y>h&&(h=x*Y)),h>p&&(p=h),i=r.indexOf(b,i+1);return d[v]=p,p}function se(t){return t.toLowerCase().replace(ve," ")}function Ke(t,l,r){return t=r&&r.length>0?`${t+" "+r.join(" ")}`:t,ee(t,l,se(t),se(l),0,0,{})}var V='[cmdk-group=""]',_='[cmdk-group-items=""]',qe='[cmdk-group-heading=""]',me='[cmdk-item=""]',fe=`${me}:not([aria-disabled="true"])`,te="cmdk-item-select",F="data-value",Pe=(t,l,r)=>Ke(t,l,r),pe=n.createContext(void 0),L=()=>n.useContext(pe),he=n.createContext(void 0),re=()=>n.useContext(he),ge=n.createContext(void 0),be=n.forwardRef((t,l)=>{let r=K(()=>{var e,o;return{search:"",value:(o=(e=t.value)!=null?e:t.defaultValue)!=null?o:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),f=K(()=>new Set),u=K(()=>new Map),c=K(()=>new Map),d=K(()=>new Set),v=we(t),{label:b,children:i,value:p,onValueChange:h,filter:x,shouldFilter:E,loop:I,disablePointerSelection:U=!1,vimBindings:A=!0,...O}=t,H=q(),ne=q(),N=q(),M=n.useRef(null),w=We();$(()=>{if(p!==void 0){let e=p.trim();r.current.value=e,k.emit()}},[p]),$(()=>{w(6,ae)},[]);let k=n.useMemo(()=>({subscribe:e=>(d.current.add(e),()=>d.current.delete(e)),snapshot:()=>r.current,setState:(e,o,s)=>{var a,m,g,S;if(!Object.is(r.current[e],o)){if(r.current[e]=o,e==="search")J(),W(),w(1,G);else if(e==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let y=document.getElementById(N);y?y.focus():(a=document.getElementById(H))==null||a.focus()}if(w(7,()=>{var y;r.current.selectedItemId=(y=D())==null?void 0:y.id,k.emit()}),s||w(5,ae),((m=v.current)==null?void 0:m.value)!==void 0){let y=o??"";(S=(g=v.current).onValueChange)==null||S.call(g,y);return}}k.emit()}},emit:()=>{d.current.forEach(e=>e())}}),[]),T=n.useMemo(()=>({value:(e,o,s)=>{var a;o!==((a=c.current.get(e))==null?void 0:a.value)&&(c.current.set(e,{value:o,keywords:s}),r.current.filtered.items.set(e,le(o,s)),w(2,()=>{W(),k.emit()}))},item:(e,o)=>(f.current.add(e),o&&(u.current.has(o)?u.current.get(o).add(e):u.current.set(o,new Set([e]))),w(3,()=>{J(),W(),r.current.value||G(),k.emit()}),()=>{c.current.delete(e),f.current.delete(e),r.current.filtered.items.delete(e);let s=D();w(4,()=>{J(),s?.getAttribute("id")===e&&G(),k.emit()})}),group:e=>(u.current.has(e)||u.current.set(e,new Set),()=>{c.current.delete(e),u.current.delete(e)}),filter:()=>v.current.shouldFilter,label:b||t["aria-label"],getDisablePointerSelection:()=>v.current.disablePointerSelection,listId:H,inputId:N,labelId:ne,listInnerRef:M}),[]);function le(e,o){var s,a;let m=(a=(s=v.current)==null?void 0:s.filter)!=null?a:Pe;return e?m(e,r.current.search,o):0}function W(){if(!r.current.search||v.current.shouldFilter===!1)return;let e=r.current.filtered.items,o=[];r.current.filtered.groups.forEach(a=>{let m=u.current.get(a),g=0;m.forEach(S=>{let y=e.get(S);g=Math.max(y,g)}),o.push([a,g])});let s=M.current;P().sort((a,m)=>{var g,S;let y=a.getAttribute("id"),B=m.getAttribute("id");return((g=e.get(B))!=null?g:0)-((S=e.get(y))!=null?S:0)}).forEach(a=>{let m=a.closest(_);m?m.appendChild(a.parentElement===m?a:a.closest(`${_} > *`)):s.appendChild(a.parentElement===s?a:a.closest(`${_} > *`))}),o.sort((a,m)=>m[1]-a[1]).forEach(a=>{var m;let g=(m=M.current)==null?void 0:m.querySelector(`${V}[${F}="${encodeURIComponent(a[0])}"]`);g?.parentElement.appendChild(g)})}function G(){let e=P().find(s=>s.getAttribute("aria-disabled")!=="true"),o=e?.getAttribute(F);k.setState("value",o||void 0)}function J(){var e,o,s,a;if(!r.current.search||v.current.shouldFilter===!1){r.current.filtered.count=f.current.size;return}r.current.filtered.groups=new Set;let m=0;for(let g of f.current){let S=(o=(e=c.current.get(g))==null?void 0:e.value)!=null?o:"",y=(a=(s=c.current.get(g))==null?void 0:s.keywords)!=null?a:[],B=le(S,y);r.current.filtered.items.set(g,B),B>0&&m++}for(let[g,S]of u.current)for(let y of S)if(r.current.filtered.items.get(y)>0){r.current.filtered.groups.add(g);break}r.current.filtered.count=m}function ae(){var e,o,s;let a=D();a&&(((e=a.parentElement)==null?void 0:e.firstChild)===a&&((s=(o=a.closest(V))==null?void 0:o.querySelector(qe))==null||s.scrollIntoView({block:"nearest"})),a.scrollIntoView({block:"nearest"}))}function D(){var e;return(e=M.current)==null?void 0:e.querySelector(`${me}[aria-selected="true"]`)}function P(){var e;return Array.from(((e=M.current)==null?void 0:e.querySelectorAll(fe))||[])}function Q(e){let o=P()[e];o&&k.setState("value",o.getAttribute(F))}function X(e){var o;let s=D(),a=P(),m=a.findIndex(S=>S===s),g=a[m+e];(o=v.current)!=null&&o.loop&&(g=m+e<0?a[a.length-1]:m+e===a.length?a[0]:a[m+e]),g&&k.setState("value",g.getAttribute(F))}function ue(e){let o=D(),s=o?.closest(V),a;for(;s&&!a;)s=e>0?Ne(s,V):Te(s,V),a=s?.querySelector(fe);a?k.setState("value",a.getAttribute(F)):X(e)}let ie=()=>Q(P().length-1),oe=e=>{e.preventDefault(),e.metaKey?ie():e.altKey?ue(1):X(1)},ce=e=>{e.preventDefault(),e.metaKey?Q(0):e.altKey?ue(-1):X(-1)};return n.createElement(R.div,{ref:l,tabIndex:-1,...O,"cmdk-root":"",onKeyDown:e=>{var o;(o=O.onKeyDown)==null||o.call(O,e);let s=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||s))switch(e.key){case"n":case"j":{A&&e.ctrlKey&&oe(e);break}case"ArrowDown":{oe(e);break}case"p":case"k":{A&&e.ctrlKey&&ce(e);break}case"ArrowUp":{ce(e);break}case"Home":{e.preventDefault(),Q(0);break}case"End":{e.preventDefault(),ie();break}case"Enter":{e.preventDefault();let a=D();if(a){let m=new Event(te);a.dispatchEvent(m)}}}}},n.createElement("label",{"cmdk-label":"",htmlFor:T.inputId,id:T.labelId,style:Je},b),z(t,e=>n.createElement(he.Provider,{value:k},n.createElement(pe.Provider,{value:T},e))))}),Ve=n.forwardRef((t,l)=>{var r,f;let u=q(),c=n.useRef(null),d=n.useContext(ge),v=L(),b=we(t),i=(f=(r=b.current)==null?void 0:r.forceMount)!=null?f:d?.forceMount;$(()=>{if(!i)return v.item(u,d?.id)},[i]);let p=ye(u,c,[t.value,t.children,c],t.keywords),h=re(),x=C(w=>w.value&&w.value===p.current),E=C(w=>i||v.filter()===!1?!0:w.search?w.filtered.items.get(u)>0:!0);n.useEffect(()=>{let w=c.current;if(!(!w||t.disabled))return w.addEventListener(te,I),()=>w.removeEventListener(te,I)},[E,t.onSelect,t.disabled]);function I(){var w,k;U(),(k=(w=b.current).onSelect)==null||k.call(w,p.current)}function U(){h.setState("value",p.current,!0)}if(!E)return null;let{disabled:A,value:O,onSelect:H,forceMount:ne,keywords:N,...M}=t;return n.createElement(R.div,{ref:j(c,l),...M,id:u,"cmdk-item":"",role:"option","aria-disabled":!!A,"aria-selected":!!x,"data-disabled":!!A,"data-selected":!!x,onPointerMove:A||v.getDisablePointerSelection()?void 0:U,onClick:A?void 0:I},t.children)}),je=n.forwardRef((t,l)=>{let{heading:r,children:f,forceMount:u,...c}=t,d=q(),v=n.useRef(null),b=n.useRef(null),i=q(),p=L(),h=C(E=>u||p.filter()===!1?!0:E.search?E.filtered.groups.has(d):!0);$(()=>p.group(d),[]),ye(d,v,[t.value,t.heading,b]);let x=n.useMemo(()=>({id:d,forceMount:u}),[u]);return n.createElement(R.div,{ref:j(v,l),...c,"cmdk-group":"",role:"presentation",hidden:h?void 0:!0},r&&n.createElement("div",{ref:b,"cmdk-group-heading":"","aria-hidden":!0,id:i},r),z(t,E=>n.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?i:void 0},n.createElement(ge.Provider,{value:x},E))))}),Le=n.forwardRef((t,l)=>{let{alwaysRender:r,...f}=t,u=n.useRef(null),c=C(d=>!d.search);return!r&&!c?null:n.createElement(R.div,{ref:j(u,l),...f,"cmdk-separator":"",role:"separator"})}),Oe=n.forwardRef((t,l)=>{let{onValueChange:r,...f}=t,u=t.value!=null,c=re(),d=C(i=>i.search),v=C(i=>i.selectedItemId),b=L();return n.useEffect(()=>{t.value!=null&&c.setState("search",t.value)},[t.value]),n.createElement(R.input,{ref:l,...f,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":b.listId,"aria-labelledby":b.labelId,"aria-activedescendant":v,id:b.inputId,type:"text",value:u?t.value:d,onChange:i=>{u||c.setState("search",i.target.value),r?.(i.target.value)}})}),Be=n.forwardRef((t,l)=>{let{children:r,label:f="Suggestions",...u}=t,c=n.useRef(null),d=n.useRef(null),v=C(i=>i.selectedItemId),b=L();return n.useEffect(()=>{if(d.current&&c.current){let i=d.current,p=c.current,h,x=new ResizeObserver(()=>{h=requestAnimationFrame(()=>{let E=i.offsetHeight;p.style.setProperty("--cmdk-list-height",E.toFixed(1)+"px")})});return x.observe(i),()=>{cancelAnimationFrame(h),x.unobserve(i)}}},[]),n.createElement(R.div,{ref:j(c,l),...u,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":v,"aria-label":f,id:b.listId},z(t,i=>n.createElement("div",{ref:j(d,b.listInnerRef),"cmdk-list-sizer":""},i)))}),ze=n.forwardRef((t,l)=>{let{open:r,onOpenChange:f,overlayClassName:u,contentClassName:c,container:d,...v}=t;return n.createElement(Ee,{open:r,onOpenChange:f},n.createElement(ke,{container:d},n.createElement(Se,{"cmdk-overlay":"",className:u}),n.createElement(xe,{"aria-label":t.label,"cmdk-dialog":"",className:c},n.createElement(be,{ref:l,...v}))))}),Ue=n.forwardRef((t,l)=>C(r=>r.filtered.count===0)?n.createElement(R.div,{ref:l,...t,"cmdk-empty":"",role:"presentation"}):null),He=n.forwardRef((t,l)=>{let{progress:r,children:f,label:u="Loading...",...c}=t;return n.createElement(R.div,{ref:l,...c,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":u},z(t,d=>n.createElement("div",{"aria-hidden":!0},d)))}),Xe=Object.assign(be,{List:Be,Item:Ve,Input:Oe,Group:je,Separator:Le,Dialog:ze,Empty:Ue,Loading:He});function Ne(t,l){let r=t.nextElementSibling;for(;r;){if(r.matches(l))return r;r=r.nextElementSibling}}function Te(t,l){let r=t.previousElementSibling;for(;r;){if(r.matches(l))return r;r=r.previousElementSibling}}function we(t){let l=n.useRef(t);return $(()=>{l.current=t}),l}var $=typeof window>"u"?n.useEffect:n.useLayoutEffect;function K(t){let l=n.useRef();return l.current===void 0&&(l.current=t()),l}function C(t){let l=re(),r=()=>t(l.snapshot());return n.useSyncExternalStore(l.subscribe,r,r)}function ye(t,l,r,f=[]){let u=n.useRef(),c=L();return $(()=>{var d;let v=(()=>{var i;for(let p of r){if(typeof p=="string")return p.trim();if(typeof p=="object"&&"current"in p)return p.current?(i=p.current.textContent)==null?void 0:i.trim():u.current}})(),b=f.map(i=>i.trim());c.value(t,v,b),(d=l.current)==null||d.setAttribute(F,v),u.current=v}),u}var We=()=>{let[t,l]=n.useState(),r=K(()=>new Map);return $(()=>{r.current.forEach(f=>f()),r.current=new Map},[t]),(f,u)=>{r.current.set(f,u),l({})}};function Ge(t){let l=t.type;return typeof l=="function"?l(t.props):"render"in l?l.render(t.props):t}function z({asChild:t,children:l},r){return t&&n.isValidElement(l)?n.cloneElement(Ge(l),{ref:l.ref},r(l.props.children)):r(l)}var Je={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};export{Xe as _};