@deepseekcode/cli 1.0.22 → 1.0.23

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 (34) hide show
  1. package/dist/cli.js +1077 -1211
  2. package/package.json +1 -1
  3. package/web/dist/assets/{AutomationView-Z7E_x8jk.js → AutomationView-BbLzZ7Db.js} +1 -1
  4. package/web/dist/assets/ChannelConfigView-CjcMwBSL.js +8 -0
  5. package/web/dist/assets/ConnectorsView-CTFoG0sF.js +1 -0
  6. package/web/dist/assets/{FileTreeView-6huCqCNC.js → FileTreeView-_N5eobgO.js} +1 -1
  7. package/web/dist/assets/{HookConfigView-BJ-VvTcl.js → HookConfigView-DM6IVFGm.js} +1 -1
  8. package/web/dist/assets/{ModelsView-DTfQ2XYb.js → ModelsView-CPm2WAbG.js} +2 -2
  9. package/web/dist/assets/PluginsView-D9pzIe-R.js +1 -0
  10. package/web/dist/assets/SessionGrid-C-Z-kzmG.js +35 -0
  11. package/web/dist/assets/SettingsPanel-D9kr-sFj.js +4 -0
  12. package/web/dist/assets/SkillsView-CS0XvZ4N.js +1 -0
  13. package/web/dist/assets/{TemplatesTab-M7MnMuN6.js → TemplatesTab-Pwfjxer7.js} +1 -1
  14. package/web/dist/assets/TerminalView-C__4-QSL.js +3 -0
  15. package/web/dist/assets/{ToolsView-DmzLnZ1I.js → ToolsView-Y5MpTnXY.js} +1 -1
  16. package/web/dist/assets/{icons-ZBQi-Ogj.js → icons-BXecaLRH.js} +114 -119
  17. package/web/dist/assets/index-CFxV9r1K.css +1 -0
  18. package/web/dist/assets/index-CcPIw0Dj.js +68 -0
  19. package/web/dist/assets/{markdown-4Q3UQbv9.js → markdown-BASfeONY.js} +1 -1
  20. package/web/dist/assets/{panels-CwhLUZOq.js → panels-Bod3sKnK.js} +1 -1
  21. package/web/dist/assets/{react-vendor-LdB92qnf.js → react-vendor-7At16BnY.js} +1 -1
  22. package/web/dist/assets/{state-4vIOJjS6.js → state-D4zgKwQs.js} +1 -1
  23. package/web/dist/index.html +7 -7
  24. package/web/dist/assets/AuditView-C8pvciLV.js +0 -1
  25. package/web/dist/assets/ChannelConfigView-2-i0ictg.js +0 -8
  26. package/web/dist/assets/ConnectorsView-CSGJfYer.js +0 -1
  27. package/web/dist/assets/InboxView-DXjF5APJ.js +0 -1
  28. package/web/dist/assets/PluginsView-CeIWhIfR.js +0 -1
  29. package/web/dist/assets/SessionGrid-BCsOMJRn.js +0 -29
  30. package/web/dist/assets/SettingsPanel-DkKIVWYT.js +0 -4
  31. package/web/dist/assets/SkillsView-CPT12zSi.js +0 -1
  32. package/web/dist/assets/TerminalView-j231tG2H.js +0 -3
  33. package/web/dist/assets/index-BWp0OZYm.css +0 -1
  34. package/web/dist/assets/index-sYOn5Yyn.js +0 -67
@@ -1,4 +1,4 @@
1
- import{g as Dt,c as Yn}from"./icons-ZBQi-Ogj.js";var nn={exports:{}},Re={};/**
1
+ import{g as Dt,c as Yn}from"./icons-BXecaLRH.js";var nn={exports:{}},Re={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.js
4
4
  *
@@ -1 +1 @@
1
- import{a as f,R as hn}from"./icons-ZBQi-Ogj.js";const we=f.createContext(null);we.displayName="PanelGroupContext";const k={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},$e=10,ne=f.useLayoutEffect,Fe=hn.useId,zn=typeof Fe=="function"?Fe:()=>null;let yn=0;function Ne(e=null){const n=zn(),t=f.useRef(e||n||null);return t.current===null&&(t.current=""+yn++),e??t.current}function Je({children:e,className:n="",collapsedSize:t,collapsible:r,defaultSize:i,forwardedRef:o,id:l,maxSize:s,minSize:a,onCollapse:h,onExpand:w,onResize:p,order:u,style:v,tagName:z="div",...C}){const E=f.useContext(we);if(E===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:b,expandPanel:L,getPanelSize:M,getPanelStyle:$,groupId:O,isPanelCollapsed:R,reevaluatePanelConstraints:P,registerPanel:K,resizePanel:J,unregisterPanel:F}=E,G=Ne(l),D=f.useRef({callbacks:{onCollapse:h,onExpand:w,onResize:p},constraints:{collapsedSize:t,collapsible:r,defaultSize:i,maxSize:s,minSize:a},id:G,idIsFromProps:l!==void 0,order:u});f.useRef({didLogMissingDefaultSizeWarning:!1}),ne(()=>{const{callbacks:_,constraints:N}=D.current,B={...N};D.current.id=G,D.current.idIsFromProps=l!==void 0,D.current.order=u,_.onCollapse=h,_.onExpand=w,_.onResize=p,N.collapsedSize=t,N.collapsible=r,N.defaultSize=i,N.maxSize=s,N.minSize=a,(B.collapsedSize!==N.collapsedSize||B.collapsible!==N.collapsible||B.maxSize!==N.maxSize||B.minSize!==N.minSize)&&P(D.current,B)}),ne(()=>{const _=D.current;return K(_),()=>{F(_)}},[u,G,K,F]),f.useImperativeHandle(o,()=>({collapse:()=>{b(D.current)},expand:_=>{L(D.current,_)},getId(){return G},getSize(){return M(D.current)},isCollapsed(){return R(D.current)},isExpanded(){return!R(D.current)},resize:_=>{J(D.current,_)}}),[b,L,M,R,G,J]);const Z=$(D.current,i);return f.createElement(z,{...C,children:e,className:n,id:G,style:{...Z,...v},[k.groupId]:O,[k.panel]:"",[k.panelCollapsible]:r||void 0,[k.panelId]:G,[k.panelSize]:parseFloat(""+Z.flexGrow).toFixed(1)})}const xn=f.forwardRef((e,n)=>f.createElement(Je,{...e,forwardedRef:n}));Je.displayName="Panel";xn.displayName="forwardRef(Panel)";let He=null,Se=-1,Y=null;function vn(e,n){if(n){const t=(n&en)!==0,r=(n&nn)!==0,i=(n&tn)!==0,o=(n&rn)!==0;if(t)return i?"se-resize":o?"ne-resize":"e-resize";if(r)return i?"sw-resize":o?"nw-resize":"w-resize";if(i)return"s-resize";if(o)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function Sn(){Y!==null&&(document.head.removeChild(Y),He=null,Y=null,Se=-1)}function Le(e,n){var t,r;const i=vn(e,n);if(He!==i){if(He=i,Y===null&&(Y=document.createElement("style"),document.head.appendChild(Y)),Se>=0){var o;(o=Y.sheet)===null||o===void 0||o.removeRule(Se)}Se=(t=(r=Y.sheet)===null||r===void 0?void 0:r.insertRule(`*{cursor: ${i} !important;}`))!==null&&t!==void 0?t:-1}}function je(e){return e.type==="keydown"}function Ye(e){return e.type.startsWith("pointer")}function Ze(e){return e.type.startsWith("mouse")}function Ee(e){if(Ye(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(Ze(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function bn(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function Pn(e,n,t){return e.x<n.x+n.width&&e.x+e.width>n.x&&e.y<n.y+n.height&&e.y+e.height>n.y}function wn(e,n){if(e===n)throw new Error("Cannot compare node with itself");const t={a:Ue(e),b:Ue(n)};let r;for(;t.a.at(-1)===t.b.at(-1);)e=t.a.pop(),n=t.b.pop(),r=e;x(r,"Stacking order can only be calculated for elements with a common ancestor");const i={a:Ke(We(t.a)),b:Ke(We(t.b))};if(i.a===i.b){const o=r.childNodes,l={a:t.a.at(-1),b:t.b.at(-1)};let s=o.length;for(;s--;){const a=o[s];if(a===l.a)return 1;if(a===l.b)return-1}}return Math.sign(i.a-i.b)}const En=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Cn(e){var n;const t=getComputedStyle((n=Qe(e))!==null&&n!==void 0?n:e).display;return t==="flex"||t==="inline-flex"}function In(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||Cn(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||En.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function We(e){let n=e.length;for(;n--;){const t=e[n];if(x(t,"Missing node"),In(t))return t}return null}function Ke(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Ue(e){const n=[];for(;e;)n.push(e),e=Qe(e);return n}function Qe(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const en=1,nn=2,tn=4,rn=8,Rn=bn()==="coarse";let V=[],se=!1,ee=new Map,Ce=new Map;const he=new Set;function Ln(e,n,t,r,i){var o;const{ownerDocument:l}=n,s={direction:t,element:n,hitAreaMargins:r,setResizeHandlerState:i},a=(o=ee.get(l))!==null&&o!==void 0?o:0;return ee.set(l,a+1),he.add(s),be(),function(){var w;Ce.delete(e),he.delete(s);const p=(w=ee.get(l))!==null&&w!==void 0?w:1;if(ee.set(l,p-1),be(),p===1&&ee.delete(l),V.includes(s)){const u=V.indexOf(s);u>=0&&V.splice(u,1),Ge(),i("up",!0,null)}}}function An(e){const{target:n}=e,{x:t,y:r}=Ee(e);se=!0,_e({target:n,x:t,y:r}),be(),V.length>0&&(Pe("down",e),e.preventDefault(),on(n)||e.stopImmediatePropagation())}function Ae(e){const{x:n,y:t}=Ee(e);if(se&&e.buttons===0&&(se=!1,Pe("up",e)),!se){const{target:r}=e;_e({target:r,x:n,y:t})}Pe("move",e),Ge(),V.length>0&&e.preventDefault()}function ke(e){const{target:n}=e,{x:t,y:r}=Ee(e);Ce.clear(),se=!1,V.length>0&&(e.preventDefault(),on(n)||e.stopImmediatePropagation()),Pe("up",e),_e({target:n,x:t,y:r}),Ge(),be()}function on(e){let n=e;for(;n;){if(n.hasAttribute(k.resizeHandle))return!0;n=n.parentElement}return!1}function _e({target:e,x:n,y:t}){V.splice(0);let r=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(r=e),he.forEach(i=>{const{element:o,hitAreaMargins:l}=i,s=o.getBoundingClientRect(),{bottom:a,left:h,right:w,top:p}=s,u=Rn?l.coarse:l.fine;if(n>=h-u&&n<=w+u&&t>=p-u&&t<=a+u){if(r!==null&&document.contains(r)&&o!==r&&!o.contains(r)&&!r.contains(o)&&wn(r,o)>0){let z=r,C=!1;for(;z&&!z.contains(o);){if(Pn(z.getBoundingClientRect(),s)){C=!0;break}z=z.parentElement}if(C)return}V.push(i)}})}function De(e,n){Ce.set(e,n)}function Ge(){let e=!1,n=!1;V.forEach(r=>{const{direction:i}=r;i==="horizontal"?e=!0:n=!0});let t=0;Ce.forEach(r=>{t|=r}),e&&n?Le("intersection",t):e?Le("horizontal",t):n?Le("vertical",t):Sn()}let Me=new AbortController;function be(){Me.abort(),Me=new AbortController;const e={capture:!0,signal:Me.signal};he.size&&(se?(V.length>0&&ee.forEach((n,t)=>{const{body:r}=t;n>0&&(r.addEventListener("contextmenu",ke,e),r.addEventListener("pointerleave",Ae,e),r.addEventListener("pointermove",Ae,e))}),window.addEventListener("pointerup",ke,e),window.addEventListener("pointercancel",ke,e)):ee.forEach((n,t)=>{const{body:r}=t;n>0&&(r.addEventListener("pointerdown",An,e),r.addEventListener("pointermove",Ae,e))}))}function Pe(e,n){he.forEach(t=>{const{setResizeHandlerState:r}=t,i=V.includes(t);r(e,i,n)})}function kn(){const[e,n]=f.useState(0);return f.useCallback(()=>n(t=>t+1),[])}function x(e,n){if(!e)throw console.error(n),Error(n)}function te(e,n,t=$e){return e.toFixed(t)===n.toFixed(t)?0:e>n?1:-1}function j(e,n,t=$e){return te(e,n,t)===0}function W(e,n,t){return te(e,n,t)===0}function Dn(e,n,t){if(e.length!==n.length)return!1;for(let r=0;r<e.length;r++){const i=e[r],o=n[r];if(!W(i,o,t))return!1}return!0}function le({panelConstraints:e,panelIndex:n,size:t}){const r=e[n];x(r!=null,`Panel constraints not found for index ${n}`);let{collapsedSize:i=0,collapsible:o,maxSize:l=100,minSize:s=0}=r;if(te(t,s)<0)if(o){const a=(i+s)/2;te(t,a)<0?t=i:t=s}else t=s;return t=Math.min(l,t),t=parseFloat(t.toFixed($e)),t}function ge({delta:e,initialLayout:n,panelConstraints:t,pivotIndices:r,prevLayout:i,trigger:o}){if(W(e,0))return n;const l=[...n],[s,a]=r;x(s!=null,"Invalid first pivot index"),x(a!=null,"Invalid second pivot index");let h=0;if(o==="keyboard"){{const p=e<0?a:s,u=t[p];x(u,`Panel constraints not found for index ${p}`);const{collapsedSize:v=0,collapsible:z,minSize:C=0}=u;if(z){const E=n[p];if(x(E!=null,`Previous layout not found for panel index ${p}`),W(E,v)){const b=C-E;te(b,Math.abs(e))>0&&(e=e<0?0-b:b)}}}{const p=e<0?s:a,u=t[p];x(u,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:z,minSize:C=0}=u;if(z){const E=n[p];if(x(E!=null,`Previous layout not found for panel index ${p}`),W(E,C)){const b=E-v;te(b,Math.abs(e))>0&&(e=e<0?0-b:b)}}}}{const p=e<0?1:-1;let u=e<0?a:s,v=0;for(;;){const C=n[u];x(C!=null,`Previous layout not found for panel index ${u}`);const b=le({panelConstraints:t,panelIndex:u,size:100})-C;if(v+=b,u+=p,u<0||u>=t.length)break}const z=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-z:z}{let u=e<0?s:a;for(;u>=0&&u<t.length;){const v=Math.abs(e)-Math.abs(h),z=n[u];x(z!=null,`Previous layout not found for panel index ${u}`);const C=z-v,E=le({panelConstraints:t,panelIndex:u,size:C});if(!W(z,E)&&(h+=z-E,l[u]=E,h.toPrecision(3).localeCompare(Math.abs(e).toPrecision(3),void 0,{numeric:!0})>=0))break;e<0?u--:u++}}if(Dn(i,l))return i;{const p=e<0?a:s,u=n[p];x(u!=null,`Previous layout not found for panel index ${p}`);const v=u+h,z=le({panelConstraints:t,panelIndex:p,size:v});if(l[p]=z,!W(z,v)){let C=v-z,b=e<0?a:s;for(;b>=0&&b<t.length;){const L=l[b];x(L!=null,`Previous layout not found for panel index ${b}`);const M=L+C,$=le({panelConstraints:t,panelIndex:b,size:M});if(W(L,$)||(C-=$-L,l[b]=$),W(C,0))break;e>0?b--:b++}}}const w=l.reduce((p,u)=>u+p,0);return W(w,100)?l:i}function Mn({layout:e,panelsArray:n,pivotIndices:t}){let r=0,i=100,o=0,l=0;const s=t[0];x(s!=null,"No pivot index found"),n.forEach((p,u)=>{const{constraints:v}=p,{maxSize:z=100,minSize:C=0}=v;u===s?(r=C,i=z):(o+=C,l+=z)});const a=Math.min(i,100-o),h=Math.max(r,100-l),w=e[s];return{valueMax:a,valueMin:h,valueNow:w}}function ze(e,n=document){return Array.from(n.querySelectorAll(`[${k.resizeHandleId}][data-panel-group-id="${e}"]`))}function ln(e,n,t=document){const i=ze(e,t).findIndex(o=>o.getAttribute(k.resizeHandleId)===n);return i??null}function sn(e,n,t){const r=ln(e,n,t);return r!=null?[r,r+1]:[-1,-1]}function an(e,n=document){var t;if(n instanceof HTMLElement&&(n==null||(t=n.dataset)===null||t===void 0?void 0:t.panelGroupId)==e)return n;const r=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return r||null}function Ie(e,n=document){const t=n.querySelector(`[${k.resizeHandleId}="${e}"]`);return t||null}function Hn(e,n,t,r=document){var i,o,l,s;const a=Ie(n,r),h=ze(e,r),w=a?h.indexOf(a):-1,p=(i=(o=t[w])===null||o===void 0?void 0:o.id)!==null&&i!==void 0?i:null,u=(l=(s=t[w+1])===null||s===void 0?void 0:s.id)!==null&&l!==void 0?l:null;return[p,u]}function $n({committedValuesRef:e,eagerValuesRef:n,groupId:t,layout:r,panelDataArray:i,panelGroupElement:o,setLayout:l}){f.useRef({didWarnAboutMissingResizeHandle:!1}),ne(()=>{if(!o)return;const s=ze(t,o);for(let a=0;a<i.length-1;a++){const{valueMax:h,valueMin:w,valueNow:p}=Mn({layout:r,panelsArray:i,pivotIndices:[a,a+1]}),u=s[a];if(u!=null){const v=i[a];x(v,`No panel data found for index "${a}"`),u.setAttribute("aria-controls",v.id),u.setAttribute("aria-valuemax",""+Math.round(h)),u.setAttribute("aria-valuemin",""+Math.round(w)),u.setAttribute("aria-valuenow",p!=null?""+Math.round(p):"")}}return()=>{s.forEach((a,h)=>{a.removeAttribute("aria-controls"),a.removeAttribute("aria-valuemax"),a.removeAttribute("aria-valuemin"),a.removeAttribute("aria-valuenow")})}},[t,r,i,o]),f.useEffect(()=>{if(!o)return;const s=n.current;x(s,"Eager values not found");const{panelDataArray:a}=s,h=an(t,o);x(h!=null,`No group found for id "${t}"`);const w=ze(t,o);x(w,`No resize handles found for group id "${t}"`);const p=w.map(u=>{const v=u.getAttribute(k.resizeHandleId);x(v,"Resize handle element has no handle id attribute");const[z,C]=Hn(t,v,a,o);if(z==null||C==null)return()=>{};const E=b=>{if(!b.defaultPrevented)switch(b.key){case"Enter":{b.preventDefault();const L=a.findIndex(M=>M.id===z);if(L>=0){const M=a[L];x(M,`No panel data found for index ${L}`);const $=r[L],{collapsedSize:O=0,collapsible:R,minSize:P=0}=M.constraints;if($!=null&&R){const K=ge({delta:W($,O)?P-O:O-$,initialLayout:r,panelConstraints:a.map(J=>J.constraints),pivotIndices:sn(t,v,o),prevLayout:r,trigger:"keyboard"});r!==K&&l(K)}}break}}};return u.addEventListener("keydown",E),()=>{u.removeEventListener("keydown",E)}});return()=>{p.forEach(u=>u())}},[o,e,n,t,r,i,l])}function Ve(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t]!==n[t])return!1;return!0}function un(e,n){const t=e==="horizontal",{x:r,y:i}=Ee(n);return t?r:i}function Nn(e,n,t,r,i){const o=t==="horizontal",l=Ie(n,i);x(l,`No resize handle element found for id "${n}"`);const s=l.getAttribute(k.groupId);x(s,"Resize handle element has no group id attribute");let{initialCursorPosition:a}=r;const h=un(t,e),w=an(s,i);x(w,`No group element found for id "${s}"`);const p=w.getBoundingClientRect(),u=o?p.width:p.height;return(h-a)/u*100}function _n(e,n,t,r,i,o){if(je(e)){const l=t==="horizontal";let s=0;e.shiftKey?s=100:i!=null?s=i:s=10;let a=0;switch(e.key){case"ArrowDown":a=l?0:s;break;case"ArrowLeft":a=l?-s:0;break;case"ArrowRight":a=l?s:0;break;case"ArrowUp":a=l?0:-s;break;case"End":a=100;break;case"Home":a=-100;break}return a}else return r==null?0:Nn(e,n,t,r,o)}function Gn({panelDataArray:e}){const n=Array(e.length),t=e.map(o=>o.constraints);let r=0,i=100;for(let o=0;o<e.length;o++){const l=t[o];x(l,`Panel constraints not found for index ${o}`);const{defaultSize:s}=l;s!=null&&(r++,n[o]=s,i-=s)}for(let o=0;o<e.length;o++){const l=t[o];x(l,`Panel constraints not found for index ${o}`);const{defaultSize:s}=l;if(s!=null)continue;const a=e.length-r,h=i/a;r++,n[o]=h,i-=h}return n}function oe(e,n,t){n.forEach((r,i)=>{const o=e[i];x(o,`Panel data not found for index ${i}`);const{callbacks:l,constraints:s,id:a}=o,{collapsedSize:h=0,collapsible:w}=s,p=t[a];if(p==null||r!==p){t[a]=r;const{onCollapse:u,onExpand:v,onResize:z}=l;z&&z(r,p),w&&(u||v)&&(v&&(p==null||j(p,h))&&!j(r,h)&&v(),u&&(p==null||!j(p,h))&&j(r,h)&&u())}})}function ve(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t]!=n[t])return!1;return!0}function Bn({defaultSize:e,dragState:n,layout:t,panelData:r,panelIndex:i,precision:o=3}){const l=t[i];let s;return l==null?s=e!=null?e.toPrecision(o):"1":r.length===1?s="1":s=l.toPrecision(o),{flexBasis:0,flexGrow:s,flexShrink:1,overflow:"hidden",pointerEvents:n!==null?"none":void 0}}function Tn(e,n=10){let t=null;return(...i)=>{t!==null&&clearTimeout(t),t=setTimeout(()=>{e(...i)},n)}}function Oe(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,t)=>{localStorage.setItem(n,t)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function cn(e){return`react-resizable-panels:${e}`}function fn(e){return e.map(n=>{const{constraints:t,id:r,idIsFromProps:i,order:o}=n;return i?r:o?`${o}:${JSON.stringify(t)}`:JSON.stringify(t)}).sort((n,t)=>n.localeCompare(t)).join(",")}function dn(e,n){try{const t=cn(e),r=n.getItem(t);if(r){const i=JSON.parse(r);if(typeof i=="object"&&i!=null)return i}}catch{}return null}function Fn(e,n,t){var r,i;const o=(r=dn(e,t))!==null&&r!==void 0?r:{},l=fn(n);return(i=o[l])!==null&&i!==void 0?i:null}function Wn(e,n,t,r,i){var o;const l=cn(e),s=fn(n),a=(o=dn(e,i))!==null&&o!==void 0?o:{};a[s]={expandToSizes:Object.fromEntries(t.entries()),layout:r};try{i.setItem(l,JSON.stringify(a))}catch(h){console.error(h)}}function qe({layout:e,panelConstraints:n}){const t=[...e],r=t.reduce((o,l)=>o+l,0);if(t.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${t.map(o=>`${o}%`).join(", ")}`);if(!W(r,100)&&t.length>0)for(let o=0;o<n.length;o++){const l=t[o];x(l!=null,`No layout data found for index ${o}`);const s=100/r*l;t[o]=s}let i=0;for(let o=0;o<n.length;o++){const l=t[o];x(l!=null,`No layout data found for index ${o}`);const s=le({panelConstraints:n,panelIndex:o,size:l});l!=s&&(i+=l-s,t[o]=s)}if(!W(i,0))for(let o=0;o<n.length;o++){const l=t[o];x(l!=null,`No layout data found for index ${o}`);const s=l+i,a=le({panelConstraints:n,panelIndex:o,size:s});if(l!==a&&(i-=a-l,t[o]=a,W(i,0)))break}return t}const Kn=100,me={getItem:e=>(Oe(me),me.getItem(e)),setItem:(e,n)=>{Oe(me),me.setItem(e,n)}},Xe={};function pn({autoSaveId:e=null,children:n,className:t="",direction:r,forwardedRef:i,id:o=null,onLayout:l=null,keyboardResizeBy:s=null,storage:a=me,style:h,tagName:w="div",...p}){const u=Ne(o),v=f.useRef(null),[z,C]=f.useState(null),[E,b]=f.useState([]),L=kn(),M=f.useRef({}),$=f.useRef(new Map),O=f.useRef(0),R=f.useRef({autoSaveId:e,direction:r,dragState:z,id:u,keyboardResizeBy:s,onLayout:l,storage:a}),P=f.useRef({layout:E,panelDataArray:[],panelDataArrayChanged:!1});f.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),f.useImperativeHandle(i,()=>({getId:()=>R.current.id,getLayout:()=>{const{layout:c}=P.current;return c},setLayout:c=>{const{onLayout:m}=R.current,{layout:S,panelDataArray:g}=P.current,d=qe({layout:c,panelConstraints:g.map(y=>y.constraints)});Ve(S,d)||(b(d),P.current.layout=d,m&&m(d),oe(g,d,M.current))}}),[]),ne(()=>{R.current.autoSaveId=e,R.current.direction=r,R.current.dragState=z,R.current.id=u,R.current.onLayout=l,R.current.storage=a}),$n({committedValuesRef:R,eagerValuesRef:P,groupId:u,layout:E,panelDataArray:P.current.panelDataArray,setLayout:b,panelGroupElement:v.current}),f.useEffect(()=>{const{panelDataArray:c}=P.current;if(e){if(E.length===0||E.length!==c.length)return;let m=Xe[e];m==null&&(m=Tn(Wn,Kn),Xe[e]=m);const S=[...c],g=new Map($.current);m(e,S,g,E,a)}},[e,E,a]),f.useEffect(()=>{});const K=f.useCallback(c=>{const{onLayout:m}=R.current,{layout:S,panelDataArray:g}=P.current;if(c.constraints.collapsible){const d=g.map(q=>q.constraints),{collapsedSize:y=0,panelSize:I,pivotIndices:H}=Q(g,c,S);if(x(I!=null,`Panel size not found for panel "${c.id}"`),!j(I,y)){$.current.set(c.id,I);const X=ie(g,c)===g.length-1?I-y:y-I,A=ge({delta:X,initialLayout:S,panelConstraints:d,pivotIndices:H,prevLayout:S,trigger:"imperative-api"});ve(S,A)||(b(A),P.current.layout=A,m&&m(A),oe(g,A,M.current))}}},[]),J=f.useCallback((c,m)=>{const{onLayout:S}=R.current,{layout:g,panelDataArray:d}=P.current;if(c.constraints.collapsible){const y=d.map(U=>U.constraints),{collapsedSize:I=0,panelSize:H=0,minSize:q=0,pivotIndices:X}=Q(d,c,g),A=m??q;if(j(H,I)){const U=$.current.get(c.id),de=U!=null&&U>=A?U:A,Re=ie(d,c)===d.length-1?H-de:de-H,T=ge({delta:Re,initialLayout:g,panelConstraints:y,pivotIndices:X,prevLayout:g,trigger:"imperative-api"});ve(g,T)||(b(T),P.current.layout=T,S&&S(T),oe(d,T,M.current))}}},[]),F=f.useCallback(c=>{const{layout:m,panelDataArray:S}=P.current,{panelSize:g}=Q(S,c,m);return x(g!=null,`Panel size not found for panel "${c.id}"`),g},[]),G=f.useCallback((c,m)=>{const{panelDataArray:S}=P.current,g=ie(S,c);return Bn({defaultSize:m,dragState:z,layout:E,panelData:S,panelIndex:g})},[z,E]),D=f.useCallback(c=>{const{layout:m,panelDataArray:S}=P.current,{collapsedSize:g=0,collapsible:d,panelSize:y}=Q(S,c,m);return x(y!=null,`Panel size not found for panel "${c.id}"`),d===!0&&j(y,g)},[]),Z=f.useCallback(c=>{const{layout:m,panelDataArray:S}=P.current,{collapsedSize:g=0,collapsible:d,panelSize:y}=Q(S,c,m);return x(y!=null,`Panel size not found for panel "${c.id}"`),!d||te(y,g)>0},[]),_=f.useCallback(c=>{const{panelDataArray:m}=P.current;m.push(c),m.sort((S,g)=>{const d=S.order,y=g.order;return d==null&&y==null?0:d==null?-1:y==null?1:d-y}),P.current.panelDataArrayChanged=!0,L()},[L]);ne(()=>{if(P.current.panelDataArrayChanged){P.current.panelDataArrayChanged=!1;const{autoSaveId:c,onLayout:m,storage:S}=R.current,{layout:g,panelDataArray:d}=P.current;let y=null;if(c){const H=Fn(c,d,S);H&&($.current=new Map(Object.entries(H.expandToSizes)),y=H.layout)}y==null&&(y=Gn({panelDataArray:d}));const I=qe({layout:y,panelConstraints:d.map(H=>H.constraints)});Ve(g,I)||(b(I),P.current.layout=I,m&&m(I),oe(d,I,M.current))}}),ne(()=>{const c=P.current;return()=>{c.layout=[]}},[]);const N=f.useCallback(c=>{let m=!1;const S=v.current;return S&&window.getComputedStyle(S,null).getPropertyValue("direction")==="rtl"&&(m=!0),function(d){d.preventDefault();const y=v.current;if(!y)return()=>null;const{direction:I,dragState:H,id:q,keyboardResizeBy:X,onLayout:A}=R.current,{layout:U,panelDataArray:de}=P.current,{initialLayout:xe}=H??{},Re=sn(q,c,y);let T=_n(d,c,I,H,X,y);const Be=I==="horizontal";Be&&m&&(T=-T);const gn=de.map(mn=>mn.constraints),pe=ge({delta:T,initialLayout:xe??U,panelConstraints:gn,pivotIndices:Re,prevLayout:U,trigger:je(d)?"keyboard":"mouse-or-touch"}),Te=!ve(U,pe);(Ye(d)||Ze(d))&&O.current!=T&&(O.current=T,!Te&&T!==0?Be?De(c,T<0?en:nn):De(c,T<0?tn:rn):De(c,0)),Te&&(b(pe),P.current.layout=pe,A&&A(pe),oe(de,pe,M.current))}},[]),B=f.useCallback((c,m)=>{const{onLayout:S}=R.current,{layout:g,panelDataArray:d}=P.current,y=d.map(U=>U.constraints),{panelSize:I,pivotIndices:H}=Q(d,c,g);x(I!=null,`Panel size not found for panel "${c.id}"`);const X=ie(d,c)===d.length-1?I-m:m-I,A=ge({delta:X,initialLayout:g,panelConstraints:y,pivotIndices:H,prevLayout:g,trigger:"imperative-api"});ve(g,A)||(b(A),P.current.layout=A,S&&S(A),oe(d,A,M.current))},[]),ae=f.useCallback((c,m)=>{const{layout:S,panelDataArray:g}=P.current,{collapsedSize:d=0,collapsible:y}=m,{collapsedSize:I=0,collapsible:H,maxSize:q=100,minSize:X=0}=c.constraints,{panelSize:A}=Q(g,c,S);A!=null&&(y&&H&&j(A,d)?j(d,I)||B(c,I):A<X?B(c,X):A>q&&B(c,q))},[B]),ue=f.useCallback((c,m)=>{const{direction:S}=R.current,{layout:g}=P.current;if(!v.current)return;const d=Ie(c,v.current);x(d,`Drag handle element not found for id "${c}"`);const y=un(S,m);C({dragHandleId:c,dragHandleRect:d.getBoundingClientRect(),initialCursorPosition:y,initialLayout:g})},[]),ce=f.useCallback(()=>{C(null)},[]),ye=f.useCallback(c=>{const{panelDataArray:m}=P.current,S=ie(m,c);S>=0&&(m.splice(S,1),delete M.current[c.id],P.current.panelDataArrayChanged=!0,L())},[L]),re=f.useMemo(()=>({collapsePanel:K,direction:r,dragState:z,expandPanel:J,getPanelSize:F,getPanelStyle:G,groupId:u,isPanelCollapsed:D,isPanelExpanded:Z,reevaluatePanelConstraints:ae,registerPanel:_,registerResizeHandle:N,resizePanel:B,startDragging:ue,stopDragging:ce,unregisterPanel:ye,panelGroupElement:v.current}),[K,z,r,J,F,G,u,D,Z,ae,_,N,B,ue,ce,ye]),fe={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return f.createElement(we.Provider,{value:re},f.createElement(w,{...p,children:n,className:t,id:o,ref:v,style:{...fe,...h},[k.group]:"",[k.groupDirection]:r,[k.groupId]:u}))}const Un=f.forwardRef((e,n)=>f.createElement(pn,{...e,forwardedRef:n}));pn.displayName="PanelGroup";Un.displayName="forwardRef(PanelGroup)";function ie(e,n){return e.findIndex(t=>t===n||t.id===n.id)}function Q(e,n,t){const r=ie(e,n),o=r===e.length-1?[r-1,r]:[r,r+1],l=t[r];return{...n.constraints,panelSize:l,pivotIndices:o}}function Vn({disabled:e,handleId:n,resizeHandler:t,panelGroupElement:r}){f.useEffect(()=>{if(e||t==null||r==null)return;const i=Ie(n,r);if(i==null)return;const o=l=>{if(!l.defaultPrevented)switch(l.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{l.preventDefault(),t(l);break}case"F6":{l.preventDefault();const s=i.getAttribute(k.groupId);x(s,`No group element found for id "${s}"`);const a=ze(s,r),h=ln(s,n,r);x(h!==null,`No resize element found for id "${n}"`);const w=l.shiftKey?h>0?h-1:a.length-1:h+1<a.length?h+1:0;a[w].focus();break}}};return i.addEventListener("keydown",o),()=>{i.removeEventListener("keydown",o)}},[r,e,n,t])}function On({children:e=null,className:n="",disabled:t=!1,hitAreaMargins:r,id:i,onBlur:o,onClick:l,onDragging:s,onFocus:a,onPointerDown:h,onPointerUp:w,style:p={},tabIndex:u=0,tagName:v="div",...z}){var C,E;const b=f.useRef(null),L=f.useRef({onClick:l,onDragging:s,onPointerDown:h,onPointerUp:w});f.useEffect(()=>{L.current.onClick=l,L.current.onDragging=s,L.current.onPointerDown=h,L.current.onPointerUp=w});const M=f.useContext(we);if(M===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:$,groupId:O,registerResizeHandle:R,startDragging:P,stopDragging:K,panelGroupElement:J}=M,F=Ne(i),[G,D]=f.useState("inactive"),[Z,_]=f.useState(!1),[N,B]=f.useState(null),ae=f.useRef({state:G});ne(()=>{ae.current.state=G}),f.useEffect(()=>{if(t)B(null);else{const re=R(F);B(()=>re)}},[t,F,R]);const ue=(C=r==null?void 0:r.coarse)!==null&&C!==void 0?C:15,ce=(E=r==null?void 0:r.fine)!==null&&E!==void 0?E:5;f.useEffect(()=>{if(t||N==null)return;const re=b.current;x(re,"Element ref not attached");let fe=!1;return Ln(F,re,$,{coarse:ue,fine:ce},(m,S,g)=>{if(!S){D("inactive");return}switch(m){case"down":{D("drag"),fe=!1,x(g,'Expected event to be defined for "down" action'),P(F,g);const{onDragging:d,onPointerDown:y}=L.current;d==null||d(!0),y==null||y();break}case"move":{const{state:d}=ae.current;fe=!0,d!=="drag"&&D("hover"),x(g,'Expected event to be defined for "move" action'),N(g);break}case"up":{D("hover"),K();const{onClick:d,onDragging:y,onPointerUp:I}=L.current;y==null||y(!1),I==null||I(),fe||d==null||d();break}}})},[ue,$,t,ce,R,F,N,P,K]),Vn({disabled:t,handleId:F,resizeHandler:N,panelGroupElement:J});const ye={touchAction:"none",userSelect:"none"};return f.createElement(v,{...z,children:e,className:n,id:i,onBlur:()=>{_(!1),o==null||o()},onFocus:()=>{_(!0),a==null||a()},ref:b,role:"separator",style:{...ye,...p},tabIndex:u,[k.groupDirection]:$,[k.groupId]:O,[k.resizeHandle]:"",[k.resizeHandleActive]:G==="drag"?"pointer":Z?"keyboard":void 0,[k.resizeHandleEnabled]:!t,[k.resizeHandleId]:F,[k.resizeHandleState]:G})}On.displayName="PanelResizeHandle";export{Un as P,xn as a,On as b};
1
+ import{a as f,R as hn}from"./icons-BXecaLRH.js";const we=f.createContext(null);we.displayName="PanelGroupContext";const k={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},$e=10,ne=f.useLayoutEffect,Fe=hn.useId,zn=typeof Fe=="function"?Fe:()=>null;let yn=0;function Ne(e=null){const n=zn(),t=f.useRef(e||n||null);return t.current===null&&(t.current=""+yn++),e??t.current}function Je({children:e,className:n="",collapsedSize:t,collapsible:r,defaultSize:i,forwardedRef:o,id:l,maxSize:s,minSize:a,onCollapse:h,onExpand:w,onResize:p,order:u,style:v,tagName:z="div",...C}){const E=f.useContext(we);if(E===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:b,expandPanel:L,getPanelSize:M,getPanelStyle:$,groupId:O,isPanelCollapsed:R,reevaluatePanelConstraints:P,registerPanel:K,resizePanel:J,unregisterPanel:F}=E,G=Ne(l),D=f.useRef({callbacks:{onCollapse:h,onExpand:w,onResize:p},constraints:{collapsedSize:t,collapsible:r,defaultSize:i,maxSize:s,minSize:a},id:G,idIsFromProps:l!==void 0,order:u});f.useRef({didLogMissingDefaultSizeWarning:!1}),ne(()=>{const{callbacks:_,constraints:N}=D.current,B={...N};D.current.id=G,D.current.idIsFromProps=l!==void 0,D.current.order=u,_.onCollapse=h,_.onExpand=w,_.onResize=p,N.collapsedSize=t,N.collapsible=r,N.defaultSize=i,N.maxSize=s,N.minSize=a,(B.collapsedSize!==N.collapsedSize||B.collapsible!==N.collapsible||B.maxSize!==N.maxSize||B.minSize!==N.minSize)&&P(D.current,B)}),ne(()=>{const _=D.current;return K(_),()=>{F(_)}},[u,G,K,F]),f.useImperativeHandle(o,()=>({collapse:()=>{b(D.current)},expand:_=>{L(D.current,_)},getId(){return G},getSize(){return M(D.current)},isCollapsed(){return R(D.current)},isExpanded(){return!R(D.current)},resize:_=>{J(D.current,_)}}),[b,L,M,R,G,J]);const Z=$(D.current,i);return f.createElement(z,{...C,children:e,className:n,id:G,style:{...Z,...v},[k.groupId]:O,[k.panel]:"",[k.panelCollapsible]:r||void 0,[k.panelId]:G,[k.panelSize]:parseFloat(""+Z.flexGrow).toFixed(1)})}const xn=f.forwardRef((e,n)=>f.createElement(Je,{...e,forwardedRef:n}));Je.displayName="Panel";xn.displayName="forwardRef(Panel)";let He=null,Se=-1,Y=null;function vn(e,n){if(n){const t=(n&en)!==0,r=(n&nn)!==0,i=(n&tn)!==0,o=(n&rn)!==0;if(t)return i?"se-resize":o?"ne-resize":"e-resize";if(r)return i?"sw-resize":o?"nw-resize":"w-resize";if(i)return"s-resize";if(o)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function Sn(){Y!==null&&(document.head.removeChild(Y),He=null,Y=null,Se=-1)}function Le(e,n){var t,r;const i=vn(e,n);if(He!==i){if(He=i,Y===null&&(Y=document.createElement("style"),document.head.appendChild(Y)),Se>=0){var o;(o=Y.sheet)===null||o===void 0||o.removeRule(Se)}Se=(t=(r=Y.sheet)===null||r===void 0?void 0:r.insertRule(`*{cursor: ${i} !important;}`))!==null&&t!==void 0?t:-1}}function je(e){return e.type==="keydown"}function Ye(e){return e.type.startsWith("pointer")}function Ze(e){return e.type.startsWith("mouse")}function Ee(e){if(Ye(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(Ze(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function bn(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function Pn(e,n,t){return e.x<n.x+n.width&&e.x+e.width>n.x&&e.y<n.y+n.height&&e.y+e.height>n.y}function wn(e,n){if(e===n)throw new Error("Cannot compare node with itself");const t={a:Ue(e),b:Ue(n)};let r;for(;t.a.at(-1)===t.b.at(-1);)e=t.a.pop(),n=t.b.pop(),r=e;x(r,"Stacking order can only be calculated for elements with a common ancestor");const i={a:Ke(We(t.a)),b:Ke(We(t.b))};if(i.a===i.b){const o=r.childNodes,l={a:t.a.at(-1),b:t.b.at(-1)};let s=o.length;for(;s--;){const a=o[s];if(a===l.a)return 1;if(a===l.b)return-1}}return Math.sign(i.a-i.b)}const En=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Cn(e){var n;const t=getComputedStyle((n=Qe(e))!==null&&n!==void 0?n:e).display;return t==="flex"||t==="inline-flex"}function In(e){const n=getComputedStyle(e);return!!(n.position==="fixed"||n.zIndex!=="auto"&&(n.position!=="static"||Cn(e))||+n.opacity<1||"transform"in n&&n.transform!=="none"||"webkitTransform"in n&&n.webkitTransform!=="none"||"mixBlendMode"in n&&n.mixBlendMode!=="normal"||"filter"in n&&n.filter!=="none"||"webkitFilter"in n&&n.webkitFilter!=="none"||"isolation"in n&&n.isolation==="isolate"||En.test(n.willChange)||n.webkitOverflowScrolling==="touch")}function We(e){let n=e.length;for(;n--;){const t=e[n];if(x(t,"Missing node"),In(t))return t}return null}function Ke(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Ue(e){const n=[];for(;e;)n.push(e),e=Qe(e);return n}function Qe(e){const{parentNode:n}=e;return n&&n instanceof ShadowRoot?n.host:n}const en=1,nn=2,tn=4,rn=8,Rn=bn()==="coarse";let V=[],se=!1,ee=new Map,Ce=new Map;const he=new Set;function Ln(e,n,t,r,i){var o;const{ownerDocument:l}=n,s={direction:t,element:n,hitAreaMargins:r,setResizeHandlerState:i},a=(o=ee.get(l))!==null&&o!==void 0?o:0;return ee.set(l,a+1),he.add(s),be(),function(){var w;Ce.delete(e),he.delete(s);const p=(w=ee.get(l))!==null&&w!==void 0?w:1;if(ee.set(l,p-1),be(),p===1&&ee.delete(l),V.includes(s)){const u=V.indexOf(s);u>=0&&V.splice(u,1),Ge(),i("up",!0,null)}}}function An(e){const{target:n}=e,{x:t,y:r}=Ee(e);se=!0,_e({target:n,x:t,y:r}),be(),V.length>0&&(Pe("down",e),e.preventDefault(),on(n)||e.stopImmediatePropagation())}function Ae(e){const{x:n,y:t}=Ee(e);if(se&&e.buttons===0&&(se=!1,Pe("up",e)),!se){const{target:r}=e;_e({target:r,x:n,y:t})}Pe("move",e),Ge(),V.length>0&&e.preventDefault()}function ke(e){const{target:n}=e,{x:t,y:r}=Ee(e);Ce.clear(),se=!1,V.length>0&&(e.preventDefault(),on(n)||e.stopImmediatePropagation()),Pe("up",e),_e({target:n,x:t,y:r}),Ge(),be()}function on(e){let n=e;for(;n;){if(n.hasAttribute(k.resizeHandle))return!0;n=n.parentElement}return!1}function _e({target:e,x:n,y:t}){V.splice(0);let r=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(r=e),he.forEach(i=>{const{element:o,hitAreaMargins:l}=i,s=o.getBoundingClientRect(),{bottom:a,left:h,right:w,top:p}=s,u=Rn?l.coarse:l.fine;if(n>=h-u&&n<=w+u&&t>=p-u&&t<=a+u){if(r!==null&&document.contains(r)&&o!==r&&!o.contains(r)&&!r.contains(o)&&wn(r,o)>0){let z=r,C=!1;for(;z&&!z.contains(o);){if(Pn(z.getBoundingClientRect(),s)){C=!0;break}z=z.parentElement}if(C)return}V.push(i)}})}function De(e,n){Ce.set(e,n)}function Ge(){let e=!1,n=!1;V.forEach(r=>{const{direction:i}=r;i==="horizontal"?e=!0:n=!0});let t=0;Ce.forEach(r=>{t|=r}),e&&n?Le("intersection",t):e?Le("horizontal",t):n?Le("vertical",t):Sn()}let Me=new AbortController;function be(){Me.abort(),Me=new AbortController;const e={capture:!0,signal:Me.signal};he.size&&(se?(V.length>0&&ee.forEach((n,t)=>{const{body:r}=t;n>0&&(r.addEventListener("contextmenu",ke,e),r.addEventListener("pointerleave",Ae,e),r.addEventListener("pointermove",Ae,e))}),window.addEventListener("pointerup",ke,e),window.addEventListener("pointercancel",ke,e)):ee.forEach((n,t)=>{const{body:r}=t;n>0&&(r.addEventListener("pointerdown",An,e),r.addEventListener("pointermove",Ae,e))}))}function Pe(e,n){he.forEach(t=>{const{setResizeHandlerState:r}=t,i=V.includes(t);r(e,i,n)})}function kn(){const[e,n]=f.useState(0);return f.useCallback(()=>n(t=>t+1),[])}function x(e,n){if(!e)throw console.error(n),Error(n)}function te(e,n,t=$e){return e.toFixed(t)===n.toFixed(t)?0:e>n?1:-1}function j(e,n,t=$e){return te(e,n,t)===0}function W(e,n,t){return te(e,n,t)===0}function Dn(e,n,t){if(e.length!==n.length)return!1;for(let r=0;r<e.length;r++){const i=e[r],o=n[r];if(!W(i,o,t))return!1}return!0}function le({panelConstraints:e,panelIndex:n,size:t}){const r=e[n];x(r!=null,`Panel constraints not found for index ${n}`);let{collapsedSize:i=0,collapsible:o,maxSize:l=100,minSize:s=0}=r;if(te(t,s)<0)if(o){const a=(i+s)/2;te(t,a)<0?t=i:t=s}else t=s;return t=Math.min(l,t),t=parseFloat(t.toFixed($e)),t}function ge({delta:e,initialLayout:n,panelConstraints:t,pivotIndices:r,prevLayout:i,trigger:o}){if(W(e,0))return n;const l=[...n],[s,a]=r;x(s!=null,"Invalid first pivot index"),x(a!=null,"Invalid second pivot index");let h=0;if(o==="keyboard"){{const p=e<0?a:s,u=t[p];x(u,`Panel constraints not found for index ${p}`);const{collapsedSize:v=0,collapsible:z,minSize:C=0}=u;if(z){const E=n[p];if(x(E!=null,`Previous layout not found for panel index ${p}`),W(E,v)){const b=C-E;te(b,Math.abs(e))>0&&(e=e<0?0-b:b)}}}{const p=e<0?s:a,u=t[p];x(u,`No panel constraints found for index ${p}`);const{collapsedSize:v=0,collapsible:z,minSize:C=0}=u;if(z){const E=n[p];if(x(E!=null,`Previous layout not found for panel index ${p}`),W(E,C)){const b=E-v;te(b,Math.abs(e))>0&&(e=e<0?0-b:b)}}}}{const p=e<0?1:-1;let u=e<0?a:s,v=0;for(;;){const C=n[u];x(C!=null,`Previous layout not found for panel index ${u}`);const b=le({panelConstraints:t,panelIndex:u,size:100})-C;if(v+=b,u+=p,u<0||u>=t.length)break}const z=Math.min(Math.abs(e),Math.abs(v));e=e<0?0-z:z}{let u=e<0?s:a;for(;u>=0&&u<t.length;){const v=Math.abs(e)-Math.abs(h),z=n[u];x(z!=null,`Previous layout not found for panel index ${u}`);const C=z-v,E=le({panelConstraints:t,panelIndex:u,size:C});if(!W(z,E)&&(h+=z-E,l[u]=E,h.toPrecision(3).localeCompare(Math.abs(e).toPrecision(3),void 0,{numeric:!0})>=0))break;e<0?u--:u++}}if(Dn(i,l))return i;{const p=e<0?a:s,u=n[p];x(u!=null,`Previous layout not found for panel index ${p}`);const v=u+h,z=le({panelConstraints:t,panelIndex:p,size:v});if(l[p]=z,!W(z,v)){let C=v-z,b=e<0?a:s;for(;b>=0&&b<t.length;){const L=l[b];x(L!=null,`Previous layout not found for panel index ${b}`);const M=L+C,$=le({panelConstraints:t,panelIndex:b,size:M});if(W(L,$)||(C-=$-L,l[b]=$),W(C,0))break;e>0?b--:b++}}}const w=l.reduce((p,u)=>u+p,0);return W(w,100)?l:i}function Mn({layout:e,panelsArray:n,pivotIndices:t}){let r=0,i=100,o=0,l=0;const s=t[0];x(s!=null,"No pivot index found"),n.forEach((p,u)=>{const{constraints:v}=p,{maxSize:z=100,minSize:C=0}=v;u===s?(r=C,i=z):(o+=C,l+=z)});const a=Math.min(i,100-o),h=Math.max(r,100-l),w=e[s];return{valueMax:a,valueMin:h,valueNow:w}}function ze(e,n=document){return Array.from(n.querySelectorAll(`[${k.resizeHandleId}][data-panel-group-id="${e}"]`))}function ln(e,n,t=document){const i=ze(e,t).findIndex(o=>o.getAttribute(k.resizeHandleId)===n);return i??null}function sn(e,n,t){const r=ln(e,n,t);return r!=null?[r,r+1]:[-1,-1]}function an(e,n=document){var t;if(n instanceof HTMLElement&&(n==null||(t=n.dataset)===null||t===void 0?void 0:t.panelGroupId)==e)return n;const r=n.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return r||null}function Ie(e,n=document){const t=n.querySelector(`[${k.resizeHandleId}="${e}"]`);return t||null}function Hn(e,n,t,r=document){var i,o,l,s;const a=Ie(n,r),h=ze(e,r),w=a?h.indexOf(a):-1,p=(i=(o=t[w])===null||o===void 0?void 0:o.id)!==null&&i!==void 0?i:null,u=(l=(s=t[w+1])===null||s===void 0?void 0:s.id)!==null&&l!==void 0?l:null;return[p,u]}function $n({committedValuesRef:e,eagerValuesRef:n,groupId:t,layout:r,panelDataArray:i,panelGroupElement:o,setLayout:l}){f.useRef({didWarnAboutMissingResizeHandle:!1}),ne(()=>{if(!o)return;const s=ze(t,o);for(let a=0;a<i.length-1;a++){const{valueMax:h,valueMin:w,valueNow:p}=Mn({layout:r,panelsArray:i,pivotIndices:[a,a+1]}),u=s[a];if(u!=null){const v=i[a];x(v,`No panel data found for index "${a}"`),u.setAttribute("aria-controls",v.id),u.setAttribute("aria-valuemax",""+Math.round(h)),u.setAttribute("aria-valuemin",""+Math.round(w)),u.setAttribute("aria-valuenow",p!=null?""+Math.round(p):"")}}return()=>{s.forEach((a,h)=>{a.removeAttribute("aria-controls"),a.removeAttribute("aria-valuemax"),a.removeAttribute("aria-valuemin"),a.removeAttribute("aria-valuenow")})}},[t,r,i,o]),f.useEffect(()=>{if(!o)return;const s=n.current;x(s,"Eager values not found");const{panelDataArray:a}=s,h=an(t,o);x(h!=null,`No group found for id "${t}"`);const w=ze(t,o);x(w,`No resize handles found for group id "${t}"`);const p=w.map(u=>{const v=u.getAttribute(k.resizeHandleId);x(v,"Resize handle element has no handle id attribute");const[z,C]=Hn(t,v,a,o);if(z==null||C==null)return()=>{};const E=b=>{if(!b.defaultPrevented)switch(b.key){case"Enter":{b.preventDefault();const L=a.findIndex(M=>M.id===z);if(L>=0){const M=a[L];x(M,`No panel data found for index ${L}`);const $=r[L],{collapsedSize:O=0,collapsible:R,minSize:P=0}=M.constraints;if($!=null&&R){const K=ge({delta:W($,O)?P-O:O-$,initialLayout:r,panelConstraints:a.map(J=>J.constraints),pivotIndices:sn(t,v,o),prevLayout:r,trigger:"keyboard"});r!==K&&l(K)}}break}}};return u.addEventListener("keydown",E),()=>{u.removeEventListener("keydown",E)}});return()=>{p.forEach(u=>u())}},[o,e,n,t,r,i,l])}function Ve(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t]!==n[t])return!1;return!0}function un(e,n){const t=e==="horizontal",{x:r,y:i}=Ee(n);return t?r:i}function Nn(e,n,t,r,i){const o=t==="horizontal",l=Ie(n,i);x(l,`No resize handle element found for id "${n}"`);const s=l.getAttribute(k.groupId);x(s,"Resize handle element has no group id attribute");let{initialCursorPosition:a}=r;const h=un(t,e),w=an(s,i);x(w,`No group element found for id "${s}"`);const p=w.getBoundingClientRect(),u=o?p.width:p.height;return(h-a)/u*100}function _n(e,n,t,r,i,o){if(je(e)){const l=t==="horizontal";let s=0;e.shiftKey?s=100:i!=null?s=i:s=10;let a=0;switch(e.key){case"ArrowDown":a=l?0:s;break;case"ArrowLeft":a=l?-s:0;break;case"ArrowRight":a=l?s:0;break;case"ArrowUp":a=l?0:-s;break;case"End":a=100;break;case"Home":a=-100;break}return a}else return r==null?0:Nn(e,n,t,r,o)}function Gn({panelDataArray:e}){const n=Array(e.length),t=e.map(o=>o.constraints);let r=0,i=100;for(let o=0;o<e.length;o++){const l=t[o];x(l,`Panel constraints not found for index ${o}`);const{defaultSize:s}=l;s!=null&&(r++,n[o]=s,i-=s)}for(let o=0;o<e.length;o++){const l=t[o];x(l,`Panel constraints not found for index ${o}`);const{defaultSize:s}=l;if(s!=null)continue;const a=e.length-r,h=i/a;r++,n[o]=h,i-=h}return n}function oe(e,n,t){n.forEach((r,i)=>{const o=e[i];x(o,`Panel data not found for index ${i}`);const{callbacks:l,constraints:s,id:a}=o,{collapsedSize:h=0,collapsible:w}=s,p=t[a];if(p==null||r!==p){t[a]=r;const{onCollapse:u,onExpand:v,onResize:z}=l;z&&z(r,p),w&&(u||v)&&(v&&(p==null||j(p,h))&&!j(r,h)&&v(),u&&(p==null||!j(p,h))&&j(r,h)&&u())}})}function ve(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++)if(e[t]!=n[t])return!1;return!0}function Bn({defaultSize:e,dragState:n,layout:t,panelData:r,panelIndex:i,precision:o=3}){const l=t[i];let s;return l==null?s=e!=null?e.toPrecision(o):"1":r.length===1?s="1":s=l.toPrecision(o),{flexBasis:0,flexGrow:s,flexShrink:1,overflow:"hidden",pointerEvents:n!==null?"none":void 0}}function Tn(e,n=10){let t=null;return(...i)=>{t!==null&&clearTimeout(t),t=setTimeout(()=>{e(...i)},n)}}function Oe(e){try{if(typeof localStorage<"u")e.getItem=n=>localStorage.getItem(n),e.setItem=(n,t)=>{localStorage.setItem(n,t)};else throw new Error("localStorage not supported in this environment")}catch(n){console.error(n),e.getItem=()=>null,e.setItem=()=>{}}}function cn(e){return`react-resizable-panels:${e}`}function fn(e){return e.map(n=>{const{constraints:t,id:r,idIsFromProps:i,order:o}=n;return i?r:o?`${o}:${JSON.stringify(t)}`:JSON.stringify(t)}).sort((n,t)=>n.localeCompare(t)).join(",")}function dn(e,n){try{const t=cn(e),r=n.getItem(t);if(r){const i=JSON.parse(r);if(typeof i=="object"&&i!=null)return i}}catch{}return null}function Fn(e,n,t){var r,i;const o=(r=dn(e,t))!==null&&r!==void 0?r:{},l=fn(n);return(i=o[l])!==null&&i!==void 0?i:null}function Wn(e,n,t,r,i){var o;const l=cn(e),s=fn(n),a=(o=dn(e,i))!==null&&o!==void 0?o:{};a[s]={expandToSizes:Object.fromEntries(t.entries()),layout:r};try{i.setItem(l,JSON.stringify(a))}catch(h){console.error(h)}}function qe({layout:e,panelConstraints:n}){const t=[...e],r=t.reduce((o,l)=>o+l,0);if(t.length!==n.length)throw Error(`Invalid ${n.length} panel layout: ${t.map(o=>`${o}%`).join(", ")}`);if(!W(r,100)&&t.length>0)for(let o=0;o<n.length;o++){const l=t[o];x(l!=null,`No layout data found for index ${o}`);const s=100/r*l;t[o]=s}let i=0;for(let o=0;o<n.length;o++){const l=t[o];x(l!=null,`No layout data found for index ${o}`);const s=le({panelConstraints:n,panelIndex:o,size:l});l!=s&&(i+=l-s,t[o]=s)}if(!W(i,0))for(let o=0;o<n.length;o++){const l=t[o];x(l!=null,`No layout data found for index ${o}`);const s=l+i,a=le({panelConstraints:n,panelIndex:o,size:s});if(l!==a&&(i-=a-l,t[o]=a,W(i,0)))break}return t}const Kn=100,me={getItem:e=>(Oe(me),me.getItem(e)),setItem:(e,n)=>{Oe(me),me.setItem(e,n)}},Xe={};function pn({autoSaveId:e=null,children:n,className:t="",direction:r,forwardedRef:i,id:o=null,onLayout:l=null,keyboardResizeBy:s=null,storage:a=me,style:h,tagName:w="div",...p}){const u=Ne(o),v=f.useRef(null),[z,C]=f.useState(null),[E,b]=f.useState([]),L=kn(),M=f.useRef({}),$=f.useRef(new Map),O=f.useRef(0),R=f.useRef({autoSaveId:e,direction:r,dragState:z,id:u,keyboardResizeBy:s,onLayout:l,storage:a}),P=f.useRef({layout:E,panelDataArray:[],panelDataArrayChanged:!1});f.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),f.useImperativeHandle(i,()=>({getId:()=>R.current.id,getLayout:()=>{const{layout:c}=P.current;return c},setLayout:c=>{const{onLayout:m}=R.current,{layout:S,panelDataArray:g}=P.current,d=qe({layout:c,panelConstraints:g.map(y=>y.constraints)});Ve(S,d)||(b(d),P.current.layout=d,m&&m(d),oe(g,d,M.current))}}),[]),ne(()=>{R.current.autoSaveId=e,R.current.direction=r,R.current.dragState=z,R.current.id=u,R.current.onLayout=l,R.current.storage=a}),$n({committedValuesRef:R,eagerValuesRef:P,groupId:u,layout:E,panelDataArray:P.current.panelDataArray,setLayout:b,panelGroupElement:v.current}),f.useEffect(()=>{const{panelDataArray:c}=P.current;if(e){if(E.length===0||E.length!==c.length)return;let m=Xe[e];m==null&&(m=Tn(Wn,Kn),Xe[e]=m);const S=[...c],g=new Map($.current);m(e,S,g,E,a)}},[e,E,a]),f.useEffect(()=>{});const K=f.useCallback(c=>{const{onLayout:m}=R.current,{layout:S,panelDataArray:g}=P.current;if(c.constraints.collapsible){const d=g.map(q=>q.constraints),{collapsedSize:y=0,panelSize:I,pivotIndices:H}=Q(g,c,S);if(x(I!=null,`Panel size not found for panel "${c.id}"`),!j(I,y)){$.current.set(c.id,I);const X=ie(g,c)===g.length-1?I-y:y-I,A=ge({delta:X,initialLayout:S,panelConstraints:d,pivotIndices:H,prevLayout:S,trigger:"imperative-api"});ve(S,A)||(b(A),P.current.layout=A,m&&m(A),oe(g,A,M.current))}}},[]),J=f.useCallback((c,m)=>{const{onLayout:S}=R.current,{layout:g,panelDataArray:d}=P.current;if(c.constraints.collapsible){const y=d.map(U=>U.constraints),{collapsedSize:I=0,panelSize:H=0,minSize:q=0,pivotIndices:X}=Q(d,c,g),A=m??q;if(j(H,I)){const U=$.current.get(c.id),de=U!=null&&U>=A?U:A,Re=ie(d,c)===d.length-1?H-de:de-H,T=ge({delta:Re,initialLayout:g,panelConstraints:y,pivotIndices:X,prevLayout:g,trigger:"imperative-api"});ve(g,T)||(b(T),P.current.layout=T,S&&S(T),oe(d,T,M.current))}}},[]),F=f.useCallback(c=>{const{layout:m,panelDataArray:S}=P.current,{panelSize:g}=Q(S,c,m);return x(g!=null,`Panel size not found for panel "${c.id}"`),g},[]),G=f.useCallback((c,m)=>{const{panelDataArray:S}=P.current,g=ie(S,c);return Bn({defaultSize:m,dragState:z,layout:E,panelData:S,panelIndex:g})},[z,E]),D=f.useCallback(c=>{const{layout:m,panelDataArray:S}=P.current,{collapsedSize:g=0,collapsible:d,panelSize:y}=Q(S,c,m);return x(y!=null,`Panel size not found for panel "${c.id}"`),d===!0&&j(y,g)},[]),Z=f.useCallback(c=>{const{layout:m,panelDataArray:S}=P.current,{collapsedSize:g=0,collapsible:d,panelSize:y}=Q(S,c,m);return x(y!=null,`Panel size not found for panel "${c.id}"`),!d||te(y,g)>0},[]),_=f.useCallback(c=>{const{panelDataArray:m}=P.current;m.push(c),m.sort((S,g)=>{const d=S.order,y=g.order;return d==null&&y==null?0:d==null?-1:y==null?1:d-y}),P.current.panelDataArrayChanged=!0,L()},[L]);ne(()=>{if(P.current.panelDataArrayChanged){P.current.panelDataArrayChanged=!1;const{autoSaveId:c,onLayout:m,storage:S}=R.current,{layout:g,panelDataArray:d}=P.current;let y=null;if(c){const H=Fn(c,d,S);H&&($.current=new Map(Object.entries(H.expandToSizes)),y=H.layout)}y==null&&(y=Gn({panelDataArray:d}));const I=qe({layout:y,panelConstraints:d.map(H=>H.constraints)});Ve(g,I)||(b(I),P.current.layout=I,m&&m(I),oe(d,I,M.current))}}),ne(()=>{const c=P.current;return()=>{c.layout=[]}},[]);const N=f.useCallback(c=>{let m=!1;const S=v.current;return S&&window.getComputedStyle(S,null).getPropertyValue("direction")==="rtl"&&(m=!0),function(d){d.preventDefault();const y=v.current;if(!y)return()=>null;const{direction:I,dragState:H,id:q,keyboardResizeBy:X,onLayout:A}=R.current,{layout:U,panelDataArray:de}=P.current,{initialLayout:xe}=H??{},Re=sn(q,c,y);let T=_n(d,c,I,H,X,y);const Be=I==="horizontal";Be&&m&&(T=-T);const gn=de.map(mn=>mn.constraints),pe=ge({delta:T,initialLayout:xe??U,panelConstraints:gn,pivotIndices:Re,prevLayout:U,trigger:je(d)?"keyboard":"mouse-or-touch"}),Te=!ve(U,pe);(Ye(d)||Ze(d))&&O.current!=T&&(O.current=T,!Te&&T!==0?Be?De(c,T<0?en:nn):De(c,T<0?tn:rn):De(c,0)),Te&&(b(pe),P.current.layout=pe,A&&A(pe),oe(de,pe,M.current))}},[]),B=f.useCallback((c,m)=>{const{onLayout:S}=R.current,{layout:g,panelDataArray:d}=P.current,y=d.map(U=>U.constraints),{panelSize:I,pivotIndices:H}=Q(d,c,g);x(I!=null,`Panel size not found for panel "${c.id}"`);const X=ie(d,c)===d.length-1?I-m:m-I,A=ge({delta:X,initialLayout:g,panelConstraints:y,pivotIndices:H,prevLayout:g,trigger:"imperative-api"});ve(g,A)||(b(A),P.current.layout=A,S&&S(A),oe(d,A,M.current))},[]),ae=f.useCallback((c,m)=>{const{layout:S,panelDataArray:g}=P.current,{collapsedSize:d=0,collapsible:y}=m,{collapsedSize:I=0,collapsible:H,maxSize:q=100,minSize:X=0}=c.constraints,{panelSize:A}=Q(g,c,S);A!=null&&(y&&H&&j(A,d)?j(d,I)||B(c,I):A<X?B(c,X):A>q&&B(c,q))},[B]),ue=f.useCallback((c,m)=>{const{direction:S}=R.current,{layout:g}=P.current;if(!v.current)return;const d=Ie(c,v.current);x(d,`Drag handle element not found for id "${c}"`);const y=un(S,m);C({dragHandleId:c,dragHandleRect:d.getBoundingClientRect(),initialCursorPosition:y,initialLayout:g})},[]),ce=f.useCallback(()=>{C(null)},[]),ye=f.useCallback(c=>{const{panelDataArray:m}=P.current,S=ie(m,c);S>=0&&(m.splice(S,1),delete M.current[c.id],P.current.panelDataArrayChanged=!0,L())},[L]),re=f.useMemo(()=>({collapsePanel:K,direction:r,dragState:z,expandPanel:J,getPanelSize:F,getPanelStyle:G,groupId:u,isPanelCollapsed:D,isPanelExpanded:Z,reevaluatePanelConstraints:ae,registerPanel:_,registerResizeHandle:N,resizePanel:B,startDragging:ue,stopDragging:ce,unregisterPanel:ye,panelGroupElement:v.current}),[K,z,r,J,F,G,u,D,Z,ae,_,N,B,ue,ce,ye]),fe={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return f.createElement(we.Provider,{value:re},f.createElement(w,{...p,children:n,className:t,id:o,ref:v,style:{...fe,...h},[k.group]:"",[k.groupDirection]:r,[k.groupId]:u}))}const Un=f.forwardRef((e,n)=>f.createElement(pn,{...e,forwardedRef:n}));pn.displayName="PanelGroup";Un.displayName="forwardRef(PanelGroup)";function ie(e,n){return e.findIndex(t=>t===n||t.id===n.id)}function Q(e,n,t){const r=ie(e,n),o=r===e.length-1?[r-1,r]:[r,r+1],l=t[r];return{...n.constraints,panelSize:l,pivotIndices:o}}function Vn({disabled:e,handleId:n,resizeHandler:t,panelGroupElement:r}){f.useEffect(()=>{if(e||t==null||r==null)return;const i=Ie(n,r);if(i==null)return;const o=l=>{if(!l.defaultPrevented)switch(l.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{l.preventDefault(),t(l);break}case"F6":{l.preventDefault();const s=i.getAttribute(k.groupId);x(s,`No group element found for id "${s}"`);const a=ze(s,r),h=ln(s,n,r);x(h!==null,`No resize element found for id "${n}"`);const w=l.shiftKey?h>0?h-1:a.length-1:h+1<a.length?h+1:0;a[w].focus();break}}};return i.addEventListener("keydown",o),()=>{i.removeEventListener("keydown",o)}},[r,e,n,t])}function On({children:e=null,className:n="",disabled:t=!1,hitAreaMargins:r,id:i,onBlur:o,onClick:l,onDragging:s,onFocus:a,onPointerDown:h,onPointerUp:w,style:p={},tabIndex:u=0,tagName:v="div",...z}){var C,E;const b=f.useRef(null),L=f.useRef({onClick:l,onDragging:s,onPointerDown:h,onPointerUp:w});f.useEffect(()=>{L.current.onClick=l,L.current.onDragging=s,L.current.onPointerDown=h,L.current.onPointerUp=w});const M=f.useContext(we);if(M===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:$,groupId:O,registerResizeHandle:R,startDragging:P,stopDragging:K,panelGroupElement:J}=M,F=Ne(i),[G,D]=f.useState("inactive"),[Z,_]=f.useState(!1),[N,B]=f.useState(null),ae=f.useRef({state:G});ne(()=>{ae.current.state=G}),f.useEffect(()=>{if(t)B(null);else{const re=R(F);B(()=>re)}},[t,F,R]);const ue=(C=r==null?void 0:r.coarse)!==null&&C!==void 0?C:15,ce=(E=r==null?void 0:r.fine)!==null&&E!==void 0?E:5;f.useEffect(()=>{if(t||N==null)return;const re=b.current;x(re,"Element ref not attached");let fe=!1;return Ln(F,re,$,{coarse:ue,fine:ce},(m,S,g)=>{if(!S){D("inactive");return}switch(m){case"down":{D("drag"),fe=!1,x(g,'Expected event to be defined for "down" action'),P(F,g);const{onDragging:d,onPointerDown:y}=L.current;d==null||d(!0),y==null||y();break}case"move":{const{state:d}=ae.current;fe=!0,d!=="drag"&&D("hover"),x(g,'Expected event to be defined for "move" action'),N(g);break}case"up":{D("hover"),K();const{onClick:d,onDragging:y,onPointerUp:I}=L.current;y==null||y(!1),I==null||I(),fe||d==null||d();break}}})},[ue,$,t,ce,R,F,N,P,K]),Vn({disabled:t,handleId:F,resizeHandler:N,panelGroupElement:J});const ye={touchAction:"none",userSelect:"none"};return f.createElement(v,{...z,children:e,className:n,id:i,onBlur:()=>{_(!1),o==null||o()},onFocus:()=>{_(!0),a==null||a()},ref:b,role:"separator",style:{...ye,...p},tabIndex:u,[k.groupDirection]:$,[k.groupId]:O,[k.resizeHandle]:"",[k.resizeHandleActive]:G==="drag"?"pointer":Z?"keyboard":void 0,[k.resizeHandleEnabled]:!t,[k.resizeHandleId]:F,[k.resizeHandleState]:G})}On.displayName="PanelResizeHandle";export{Un as P,xn as a,On as b};
@@ -1,4 +1,4 @@
1
- import{r as O}from"./icons-ZBQi-Ogj.js";var y={exports:{}},n={};/**
1
+ import{r as O}from"./icons-BXecaLRH.js";var y={exports:{}},n={};/**
2
2
  * @license React
3
3
  * react-dom.production.js
4
4
  *
@@ -1,4 +1,4 @@
1
- import{r as A,g as U,W as F}from"./icons-ZBQi-Ogj.js";var _={exports:{}},g={};/**
1
+ import{r as A,g as U,W as F}from"./icons-BXecaLRH.js";var _={exports:{}},g={};/**
2
2
  * @license React
3
3
  * use-sync-external-store-shim.production.js
4
4
  *
@@ -12,13 +12,13 @@
12
12
  <meta name="theme-color" content="#0d1117" />
13
13
  <meta name="color-scheme" content="dark light" />
14
14
  <title>DeepSeekCode Web</title>
15
- <script type="module" crossorigin src="/assets/index-sYOn5Yyn.js"></script>
16
- <link rel="modulepreload" crossorigin href="/assets/icons-ZBQi-Ogj.js">
17
- <link rel="modulepreload" crossorigin href="/assets/markdown-4Q3UQbv9.js">
18
- <link rel="modulepreload" crossorigin href="/assets/react-vendor-LdB92qnf.js">
19
- <link rel="modulepreload" crossorigin href="/assets/state-4vIOJjS6.js">
20
- <link rel="modulepreload" crossorigin href="/assets/panels-CwhLUZOq.js">
21
- <link rel="stylesheet" crossorigin href="/assets/index-BWp0OZYm.css">
15
+ <script type="module" crossorigin src="/assets/index-CcPIw0Dj.js"></script>
16
+ <link rel="modulepreload" crossorigin href="/assets/icons-BXecaLRH.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/markdown-BASfeONY.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/react-vendor-7At16BnY.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/state-D4zgKwQs.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/panels-Bod3sKnK.js">
21
+ <link rel="stylesheet" crossorigin href="/assets/index-CFxV9r1K.css">
22
22
  </head>
23
23
  <body>
24
24
  <div id="root"></div>
@@ -1 +0,0 @@
1
- import{j as t}from"./markdown-4Q3UQbv9.js";import{a as c,V as j,h as v,Z as N,y,K as w,ba as S,bb as C,b9 as M}from"./icons-ZBQi-Ogj.js";import{N as z}from"./index-sYOn5Yyn.js";import"./react-vendor-LdB92qnf.js";import"./state-4vIOJjS6.js";import"./panels-CwhLUZOq.js";const u=20;function I(s){return s==="allow"?{cls:"bg-accent-green/20 text-accent-green",Icon:S,label:"允许"}:s==="deny"?{cls:"bg-accent-red/20 text-accent-red",Icon:C,label:"拒绝"}:{cls:"bg-accent-yellow/20 text-accent-yellow",Icon:M,label:"待定"}}function P(){const{audit:s,auditTotal:h,fetchAudit:i,loading:b,error:p}=z(),[n,g]=c.useState(""),[l,k]=c.useState("all"),[r,d]=c.useState(0),x=Math.max(1,Math.ceil(h/u));c.useEffect(()=>{i({tool:n||void 0,decision:l==="all"?void 0:l,page:r,pageSize:u})},[i,n,l,r]);const f=c.useMemo(()=>{var a;const e={};for(const o of s){const m=e[a=o.tool]??(e[a]={allow:0,deny:0,ask:0});m[o.decision]+=1}return e},[s]);return t.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden p-4",children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[t.jsx(j,{size:20,className:"text-accent-blue"}),"审计历史",t.jsxs("span",{className:"text-xs text-dark-muted font-normal",children:["(",h," 条)"]})]}),t.jsx("button",{onClick:()=>void i({tool:n||void 0,decision:l==="all"?void 0:l,page:r,pageSize:u}),className:"p-2 rounded-lg hover:bg-dark-hover text-dark-muted",title:"刷新",children:t.jsx(v,{size:16})})]}),t.jsxs("div",{className:"flex gap-2 mb-3 flex-wrap items-center",children:[t.jsx("input",{value:n,onChange:e=>{g(e.target.value),d(0)},placeholder:"按工具过滤(如 write_file)",className:"w-52 px-3 py-1.5 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue"}),t.jsx("div",{className:"flex rounded-lg bg-dark-hover p-0.5 text-sm",children:["all","allow","deny","ask"].map(e=>t.jsx("button",{onClick:()=>{k(e),d(0)},className:`px-3 py-1 rounded-md transition-colors ${l===e?"bg-accent-blue/20 text-accent-blue":"text-dark-muted hover:text-dark-text"}`,children:e==="all"?"全部":e==="allow"?"允许":e==="deny"?"拒绝":"待定"},e))})]}),t.jsx("div",{className:"flex flex-wrap gap-1 mb-3",children:Object.entries(f).slice(0,12).map(([e,a])=>t.jsxs("button",{onClick:()=>{g(e),d(0)},className:`px-2 py-0.5 rounded text-xs ${n===e?"bg-accent-blue/20 text-accent-blue":"bg-dark-hover text-dark-muted hover:text-dark-text"}`,children:[e," · ",t.jsx("span",{className:"text-accent-green",children:a.allow}),"/",t.jsx("span",{className:"text-accent-red",children:a.deny}),"/",t.jsx("span",{className:"text-accent-yellow",children:a.ask})]},e))}),p&&t.jsxs("div",{className:"mb-3 p-3 rounded-lg bg-accent-red/10 text-accent-red text-sm flex items-center gap-2",children:[t.jsx(N,{size:16})," ",p]}),t.jsxs("div",{className:"flex-1 overflow-y-auto border border-dark-border rounded-lg bg-dark-surface",children:[b&&s.length===0&&t.jsx("p",{className:"text-dark-muted text-center py-8",children:"加载中..."}),!b&&s.length===0&&t.jsx("p",{className:"text-dark-muted text-center py-8",children:"暂无审计记录"}),s.map(e=>{const{cls:a,Icon:o,label:m}=I(e.decision);return t.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-dark-border last:border-b-0 hover:bg-dark-hover/50",children:[t.jsxs("span",{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs shrink-0 ${a}`,children:[t.jsx(o,{size:12})," ",m]}),t.jsx("code",{className:"text-xs text-accent-blue shrink-0",children:e.tool}),e.argsMasked&&Object.keys(e.argsMasked).length>0&&t.jsx("span",{className:"text-[11px] text-dark-muted truncate flex-1",children:JSON.stringify(e.argsMasked).slice(0,120)}),t.jsxs("span",{className:"text-[11px] text-dark-muted shrink-0 hidden md:inline",children:[e.approvedBy||"auto"," · ",e.risk||""," · ",e.durationMs!=null?`${e.durationMs}ms`:""]}),t.jsx("span",{className:"text-[11px] text-dark-muted shrink-0",children:new Date(e.ts).toLocaleString()})]},e.id)})]}),t.jsxs("div",{className:"flex items-center justify-end gap-2 mt-3",children:[t.jsx("button",{onClick:()=>d(e=>Math.max(0,e-1)),disabled:r===0,className:"p-1.5 rounded-lg bg-dark-hover text-dark-muted disabled:opacity-30 hover:text-dark-text",children:t.jsx(y,{size:14})}),t.jsxs("span",{className:"text-xs text-dark-muted",children:["第 ",r+1," / ",x," 页"]}),t.jsx("button",{onClick:()=>d(e=>Math.min(x-1,e+1)),disabled:r>=x-1,className:"p-1.5 rounded-lg bg-dark-hover text-dark-muted disabled:opacity-30 hover:text-dark-text",children:t.jsx(w,{size:14})})]})]})}export{P as AuditView};
@@ -1,8 +0,0 @@
1
- import{j as o}from"./markdown-4Q3UQbv9.js";import{a as M,b6 as mt,ax as xt,aw as pt,aj as vt,z as Z,b7 as ke,ar as bt,a7 as St,g as Bt,h as At}from"./icons-ZBQi-Ogj.js";import{L as je,M as Tt,a as Ae,t as X}from"./index-sYOn5Yyn.js";import"./react-vendor-LdB92qnf.js";import"./state-4vIOJjS6.js";import"./panels-CwhLUZOq.js";const Te=new Set(["mattermost","msteams","googlechat","irc","imessage","sms","nextcloud-talk","nostr","synology-chat","tlon","twitch","zalo","zalouser","clickclack","raft","qa-channel"]),Re={wechat:"微信",feishu:"飞书",dingtalk:"钉钉",telegram:"Telegram",discord:"Discord",slack:"Slack",signal:"Signal",whatsapp:"WhatsApp",line:"LINE",qqbot:"QQ Bot",matrix:"Matrix",mattermost:"Mattermost",msteams:"Teams",googlechat:"Google Chat",irc:"IRC",imessage:"iMessage",sms:"SMS","nextcloud-talk":"Nextcloud Talk",nostr:"Nostr","synology-chat":"Synology Chat",tlon:"Tlon",twitch:"Twitch",zalo:"Zalo",zalouser:"ZaloUser",clickclack:"ClickClack",raft:"Raft","qa-channel":"QA"},Me={wechat:"💬",feishu:"📘",dingtalk:"🔔",telegram:"✈️",discord:"🎮",slack:"💼",signal:"🔒",whatsapp:"📱",line:"🟢",qqbot:"🐧",matrix:"🧩",mattermost:"🏢",msteams:"📋",googlechat:"📧",irc:"💻",imessage:"✉️",sms:"📨"},Ie=[{label:"即时通讯",types:["wechat","feishu","dingtalk"]},{label:"国际主流",types:["telegram","discord","slack","signal","whatsapp"]},{label:"东亚",types:["line","qqbot"]},{label:"协作平台",types:["matrix","mattermost","msteams","googlechat"]},{label:"经典协议",types:["irc","imessage","sms"]},{label:"其他",types:["nextcloud-talk","nostr","synology-chat","tlon","twitch","zalo","zalouser"]},{label:"内置",types:["clickclack","raft","qa-channel"]}];function Rt(){const{channels:r,selectedType:s,selectType:i}=je(),n=M.useMemo(()=>{const e=new Map;for(const t of r){const a=e.get(t.type)??{count:0,connected:0};e.set(t.type,{count:a.count+1,connected:a.connected+(t.connected?1:0)})}return e},[r]);return o.jsxs("div",{className:"flex flex-col h-full min-h-0 border-r border-dark-border bg-dark-surface",children:[o.jsxs("div",{className:"shrink-0 px-4 py-3 border-b border-dark-border",children:[o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-dark-muted",children:"频道列表"}),o.jsx("p",{className:"text-[11px] text-dark-muted mt-0.5",children:r.length>0?`${r.length} 个已配置`:"点击下方频道开始配置"})]}),o.jsxs("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:[Ie.map(e=>{const t=e.types.filter(a=>n.has(a));return t.length===0?null:o.jsxs("div",{children:[o.jsx("div",{className:"sticky top-0 bg-dark-surface/95 backdrop-blur px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-dark-muted/60",children:e.label}),t.map(a=>{const l=n.get(a);return o.jsx(Pe,{label:Re[a]??a,icon:Me[a]??"📡",isSelected:s===a,experimental:Te.has(a),info:l,onClick:()=>i(a)},a)})]},e.label)}),(()=>{const e=Ie.flatMap(t=>t.types).filter(t=>!n.has(t));return e.length===0?null:o.jsxs("div",{children:[o.jsx("div",{className:"sticky top-0 bg-dark-surface/95 backdrop-blur px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-dark-muted/60",children:"未配置"}),e.map(t=>o.jsx(Pe,{label:Re[t]??t,icon:Me[t]??"📡",isSelected:s===t,experimental:Te.has(t),onClick:()=>i(t)},t))]})})()]})]})}function Pe({label:r,icon:s,isSelected:i,experimental:n,info:e,onClick:t}){return o.jsxs("button",{onClick:t,className:`w-full flex items-center gap-2.5 px-4 py-2.5 text-left transition-colors hover:bg-dark-hover ${i?"bg-accent-blue/10 border-l-2 border-accent-blue":"border-l-2 border-transparent"}`,children:[o.jsx("span",{className:"text-lg shrink-0 w-7 h-7 flex items-center justify-center rounded-md bg-dark-bg",children:s}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx("span",{className:"text-sm font-medium text-dark-text truncate",children:r}),n&&o.jsxs("span",{className:"inline-flex items-center gap-0.5 text-[9px] text-yellow-500 bg-yellow-500/10 px-1 py-0.5 rounded shrink-0",title:"实验性实现,功能不完整",children:[o.jsx(mt,{className:"w-2.5 h-2.5"})," 实验"]}),e&&o.jsx("span",{className:"text-[10px] text-dark-muted bg-dark-hover px-1.5 py-0.5 rounded shrink-0",children:e.count})]}),o.jsx("div",{className:"flex items-center gap-1 mt-0.5",children:e?e.connected>0?o.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-green-400",children:[o.jsx(xt,{className:"w-3 h-3"}),e.connected===e.count?"已连接":`${e.connected}/${e.count} 已连接`]}):o.jsxs("span",{className:"flex items-center gap-1 text-[11px] text-dark-muted",children:[o.jsx(pt,{className:"w-3 h-3"}),"未连接"]}):o.jsx("span",{className:"text-[11px] text-dark-muted",children:"未配置"})})]})]})}const Le=new Set(["mattermost","msteams","googlechat","irc","imessage","sms","nextcloud-talk","nostr","synology-chat","tlon","twitch","zalo","zalouser","clickclack","raft","qa-channel"]),qe={wechat:"微信",feishu:"飞书",dingtalk:"钉钉",telegram:"Telegram",discord:"Discord",slack:"Slack",signal:"Signal",whatsapp:"WhatsApp",line:"LINE",qqbot:"QQ Bot",matrix:"Matrix",mattermost:"Mattermost",msteams:"Microsoft Teams",googlechat:"Google Chat",irc:"IRC",imessage:"iMessage",sms:"SMS","nextcloud-talk":"Nextcloud Talk",nostr:"Nostr","synology-chat":"Synology Chat",tlon:"Tlon",twitch:"Twitch",zalo:"Zalo",zalouser:"ZaloUser",clickclack:"ClickClack",raft:"Raft","qa-channel":"QA Channel"},_e={wechat:"💬",feishu:"📘",dingtalk:"🔔",telegram:"✈️",discord:"🎮",slack:"💼",signal:"🔒",whatsapp:"📱",line:"🟢",qqbot:"🐧",matrix:"🧩",mattermost:"🏢",msteams:"📋",googlechat:"📧",irc:"💻",imessage:"✉️",sms:"📨"},z={name:"",type:"wechat",appId:"",appSecret:"",token:"",encodingAESKey:"",enabled:!0};function Mt(){const{channels:r,selectedType:s,create:i,update:n,remove:e,toggle:t,error:a,clearError:l,openQr:c,load:d}=je(),u=M.useMemo(()=>s?r.filter(f=>f.type===s):[],[r,s]),[x,p]=M.useState(""),[h,N]=M.useState(z),[B,R]=M.useState(!1),j=x==="__new__",y=M.useMemo(()=>j?null:u.find(f=>f.id===x)??null,[u,x,j]);M.useEffect(()=>{p(""),N(z),R(!1),l()},[s]),M.useEffect(()=>{s==="wechat"&&u.length===0&&c(null)},[s,u.length,c]),M.useEffect(()=>{y?N({name:y.name,type:y.type,appId:y.appId||"",appSecret:"",token:"",encodingAESKey:y.encodingAESKey||"",enabled:y.enabled}):j&&N(f=>({...f,type:s}))},[x]);const S=(f,w)=>{l(),N(E=>({...E,[f]:w}))},g=f=>{p(f),l()},A=()=>{p("__new__"),N({...z,type:s}),l()},m=()=>{p(""),N(z),l()},C=async()=>{if(!h.name.trim())return;R(!0);const f=y?await n(y.id,h):await i(h);R(!1),f&&(p(""),N(z))},k=async f=>{if(!confirm("确认删除该频道?"))return;await e(f)&&x===f&&(p(""),N(z))},b=(f,w)=>{t(f,w)};return s?o.jsxs("div",{className:"flex-1 flex flex-col min-h-0 overflow-hidden",children:[o.jsx("div",{className:"shrink-0 px-6 py-4 border-b border-dark-border",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("span",{className:"text-2xl",children:_e[s]??"📡"}),o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h2",{className:"font-semibold text-base text-dark-text",children:qe[s]??s}),Le.has(s)&&o.jsxs("span",{className:"inline-flex items-center gap-0.5 text-[10px] text-yellow-500 bg-yellow-500/10 px-1.5 py-0.5 rounded",title:"实验性实现,功能不完整",children:[o.jsx(mt,{className:"w-3 h-3"})," 实验性"]})]}),o.jsx("p",{className:"text-xs text-dark-muted mt-0.5",children:u.length>0?`${u.length} 个配置实例`:"尚未配置"}),Le.has(s)&&o.jsx("p",{className:"text-[10px] text-yellow-600/70 mt-1",children:"此频道为基础适配器封装,支持基础消息收发,部分高级功能可能不完整"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("button",{onClick:()=>d(),className:"text-xs px-3 py-1.5 rounded-lg border border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors",children:"刷新"}),o.jsxs("button",{onClick:A,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-accent-blue hover:bg-accent-blue/90 text-white transition-colors",children:[o.jsx(Z,{className:"w-3.5 h-3.5"})," 新建实例"]})]})]})}),a&&o.jsxs("div",{className:"shrink-0 mx-6 mt-3 bg-red-500/10 border border-red-500/40 text-red-400 px-3 py-2 rounded-lg text-sm flex justify-between items-center",children:[o.jsx("span",{children:a}),o.jsx("button",{onClick:l,className:"text-red-400 hover:text-red-300",children:o.jsx("span",{className:"w-4 h-4 inline-flex items-center justify-center",children:"×"})})]}),o.jsxs("div",{className:"flex-1 overflow-y-auto custom-scrollbar p-6",children:[u.length>1&&!j&&o.jsxs("div",{className:"mb-4",children:[o.jsx("label",{className:"block text-xs text-dark-muted mb-1.5",children:"选择实例"}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[u.map(f=>o.jsxs("button",{onClick:()=>g(f.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border transition-colors ${x===f.id?"bg-accent-blue/10 border-accent-blue/40 text-accent-blue":"border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover"}`,children:[o.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${f.connected?"bg-green-500":"bg-gray-500"}`}),f.name]},f.id)),o.jsxs("button",{onClick:A,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border border-dashed border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors",children:[o.jsx(Z,{className:"w-3 h-3"})," 新建"]})]})]}),u.length===0&&x===""&&o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx("div",{className:"text-4xl mb-3",children:_e[s]??"📡"}),o.jsxs("p",{className:"text-dark-text font-medium",children:["还没有配置 ",qe[s]??s]}),o.jsx("p",{className:"text-sm text-dark-muted mt-1 mb-4",children:s==="wechat"?"点击下方按钮,用微信扫码即可自动完成绑定":"点击上方「新建实例」开始配置"}),s==="wechat"&&o.jsxs("button",{onClick:()=>c(null),className:"flex items-center gap-1.5 text-sm px-4 py-2 rounded-lg bg-green-600/15 hover:bg-green-600/25 text-green-400 border border-green-600/40 transition-colors mb-3",children:[o.jsx(ke,{className:"w-4 h-4"})," 扫码绑定"]}),o.jsxs("button",{onClick:A,className:"flex items-center gap-1.5 text-sm px-4 py-2 rounded-lg bg-accent-blue hover:bg-accent-blue/90 text-white transition-colors",children:[o.jsx(Z,{className:"w-4 h-4"})," 新建实例"]})]}),u.length===1&&x===""&&u[0]&&o.jsx(De,{channel:u[0],onEdit:()=>g(u[0].id),onDelete:()=>k(u[0].id),onToggle:f=>b(u[0].id,f),onQr:()=>c(u[0])}),u.length>1&&x===""&&o.jsx("div",{className:"space-y-3",children:u.map(f=>o.jsx(De,{channel:f,onEdit:()=>g(f.id),onDelete:()=>k(f.id),onToggle:w=>b(f.id,w),onQr:()=>c(f)},f.id))}),x!==""&&(j||y)&&o.jsx(It,{form:h,upd:S,saving:B,editing:!!y,channel:y??void 0,onSave:C,onCancel:m,onDelete:y?()=>k(y.id):void 0,onQr:y?()=>c(y):void 0})]})]}):o.jsx("div",{className:"flex-1 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(vt,{className:"w-12 h-12 mx-auto mb-3 text-dark-muted/40"}),o.jsx("p",{className:"text-dark-muted text-sm",children:"请从左侧选择一个频道类型"})]})})}function De({channel:r,onEdit:s,onDelete:i,onToggle:n,onQr:e}){return o.jsxs("div",{className:"border border-dark-border rounded-lg bg-dark-surface overflow-hidden",children:[o.jsx("div",{className:"p-5",children:o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"font-medium text-dark-text",children:r.name}),o.jsxs("div",{className:"flex items-center gap-3 mt-2",children:[o.jsx("span",{className:`flex items-center gap-1 text-xs ${r.connected?"text-green-400":"text-dark-muted"}`,children:r.connected?o.jsxs(o.Fragment,{children:[o.jsx(xt,{className:"w-3 h-3"})," 已连接"]}):o.jsxs(o.Fragment,{children:[o.jsx(pt,{className:"w-3 h-3"})," 未连接"]})}),o.jsxs("span",{className:"text-xs text-dark-muted",children:["AppID: ",r.appId||"—"]})]})]}),o.jsx("button",{onClick:()=>n(!r.enabled),className:`w-9 h-5 rounded-full relative transition-colors shrink-0 ${r.enabled?"bg-green-600":"bg-gray-600"}`,children:o.jsx("span",{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-all ${r.enabled?"left-[18px]":"left-0.5"}`})})]})}),o.jsxs("div",{className:"flex items-center gap-1 px-5 py-2.5 bg-dark-bg/50 border-t border-dark-border",children:[r.type==="wechat"&&o.jsxs("button",{onClick:e,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-green-400 hover:bg-green-500/10 transition-colors",children:[o.jsx(ke,{className:"w-3.5 h-3.5"})," 扫码登录"]}),o.jsxs("button",{onClick:s,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-blue hover:bg-accent-blue/10 transition-colors",children:[o.jsx("span",{className:"w-3.5 h-3.5 inline-flex items-center justify-center",children:"✎"})," 编辑"]}),o.jsxs("button",{onClick:i,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-red-400 hover:bg-red-500/10 transition-colors ml-auto",children:[o.jsx(bt,{className:"w-3.5 h-3.5"})," 删除"]})]})]})}function It({form:r,upd:s,saving:i,editing:n,channel:e,onSave:t,onCancel:a,onDelete:l,onQr:c}){return o.jsxs("div",{className:"border border-dark-border rounded-lg bg-dark-surface overflow-hidden",children:[o.jsx("div",{className:"px-5 py-4 border-b border-dark-border",children:o.jsx("h3",{className:"font-medium text-dark-text",children:n?"编辑配置":"新建配置"})}),o.jsxs("div",{className:"p-5 space-y-4",children:[o.jsx(Ue,{label:"频道名称",required:!0,children:o.jsx("input",{value:r.name,onChange:d=>s("name",d.target.value),placeholder:"例如:研发群机器人",className:H})}),o.jsxs(Ue,{label:"接入凭证",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[o.jsxs("div",{children:[o.jsx("label",{className:"block text-[10px] text-dark-muted mb-1",children:"AppID / 企业ID"}),o.jsx("input",{value:r.appId,onChange:d=>s("appId",d.target.value),placeholder:"AppID",className:H})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-[10px] text-dark-muted mb-1",children:"AppSecret"}),o.jsx("input",{type:"password",value:r.appSecret,onChange:d=>s("appSecret",d.target.value),placeholder:n?"留空不修改":"应用密钥",className:H})]}),o.jsxs("div",{children:[o.jsx("label",{className:"block text-[10px] text-dark-muted mb-1",children:"Token"}),o.jsx("input",{value:r.token,onChange:d=>s("token",d.target.value),placeholder:n?"留空不修改":"回调校验 Token",className:H})]}),r.type==="wechat"&&o.jsxs("div",{children:[o.jsx("label",{className:"block text-[10px] text-dark-muted mb-1",children:"EncodingAESKey"}),o.jsx("input",{value:r.encodingAESKey,onChange:d=>s("encodingAESKey",d.target.value),placeholder:"选填",className:H})]})]}),r.type==="wechat"&&o.jsx("p",{className:"text-xs text-dark-muted mt-2",children:"微信 iLink 机器人通过扫码授权,凭证可留空,保存后扫码登录即可。"})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-dark-border px-3 py-2.5",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm text-dark-text",children:"启用频道"}),o.jsx("p",{className:"text-xs text-dark-muted",children:"关闭后停止收发消息"})]}),o.jsx("button",{onClick:()=>s("enabled",!r.enabled),className:`w-9 h-5 rounded-full relative transition-colors shrink-0 ${r.enabled?"bg-green-600":"bg-gray-600"}`,children:o.jsx("span",{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-all ${r.enabled?"left-[18px]":"left-0.5"}`})})]}),n&&(e==null?void 0:e.type)==="wechat"&&c&&o.jsxs("button",{onClick:c,className:"w-full flex items-center justify-center gap-2 text-sm bg-green-600/15 hover:bg-green-600/25 text-green-400 border border-green-600/40 px-3 py-2.5 rounded-lg transition-colors",children:[o.jsx(ke,{className:"w-4 h-4"})," 扫码登录 / 重新授权"]})]}),o.jsxs("div",{className:"flex items-center justify-between px-5 py-3 bg-dark-bg/50 border-t border-dark-border",children:[o.jsx("div",{children:n&&l&&o.jsxs("button",{onClick:l,className:"flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-red-400 hover:bg-red-500/10 transition-colors",children:[o.jsx(bt,{className:"w-3.5 h-3.5"})," 删除"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("button",{onClick:a,className:"px-4 py-2 text-sm text-dark-muted hover:text-dark-text transition-colors",children:"取消"}),o.jsxs("button",{onClick:t,disabled:i||!r.name.trim(),className:"flex items-center gap-1.5 px-4 py-2 text-sm bg-accent-blue hover:bg-accent-blue/90 text-white rounded-lg disabled:opacity-50 transition-colors",children:[o.jsx(St,{className:"w-3.5 h-3.5"}),i?"保存中...":"保存"]})]})]})]})}function Ue({label:r,required:s,children:i}){return o.jsxs("div",{children:[o.jsxs("label",{className:"block text-xs text-dark-muted mb-1.5",children:[r,s&&o.jsx("span",{className:"text-red-400 ml-0.5",children:"*"})]}),i]})}const H="w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-2 text-sm text-dark-text placeholder-dark-muted/60 focus:outline-none focus:border-accent-blue transition-colors";var K={},ee,Fe;function Pt(){return Fe||(Fe=1,ee=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),ee}var te={},_={},ze;function D(){if(ze)return _;ze=1;let r;const s=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return _.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},_.getSymbolTotalCodewords=function(n){return s[n]},_.getBCHDigit=function(i){let n=0;for(;i!==0;)n++,i>>>=1;return n},_.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');r=n},_.isKanjiModeEnabled=function(){return typeof r<"u"},_.toSJIS=function(n){return r(n)},_}var ne={},Ke;function Ee(){return Ke||(Ke=1,(function(r){r.L={bit:1},r.M={bit:0},r.Q={bit:3},r.H={bit:2};function s(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.toLowerCase()){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+i)}}r.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},r.from=function(n,e){if(r.isValid(n))return n;try{return s(n)}catch{return e}}})(ne)),ne}var re,Ve;function Lt(){if(Ve)return re;Ve=1;function r(){this.buffer=[],this.length=0}return r.prototype={get:function(s){const i=Math.floor(s/8);return(this.buffer[i]>>>7-s%8&1)===1},put:function(s,i){for(let n=0;n<i;n++)this.putBit((s>>>i-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(s){const i=Math.floor(this.length/8);this.buffer.length<=i&&this.buffer.push(0),s&&(this.buffer[i]|=128>>>this.length%8),this.length++}},re=r,re}var se,He;function qt(){if(He)return se;He=1;function r(s){if(!s||s<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=s,this.data=new Uint8Array(s*s),this.reservedBit=new Uint8Array(s*s)}return r.prototype.set=function(s,i,n,e){const t=s*this.size+i;this.data[t]=n,e&&(this.reservedBit[t]=!0)},r.prototype.get=function(s,i){return this.data[s*this.size+i]},r.prototype.xor=function(s,i,n){this.data[s*this.size+i]^=n},r.prototype.isReserved=function(s,i){return this.reservedBit[s*this.size+i]},se=r,se}var oe={},Qe;function _t(){return Qe||(Qe=1,(function(r){const s=D().getSymbolSize;r.getRowColCoords=function(n){if(n===1)return[];const e=Math.floor(n/7)+2,t=s(n),a=t===145?26:Math.ceil((t-13)/(2*e-2))*2,l=[t-7];for(let c=1;c<e-1;c++)l[c]=l[c-1]-a;return l.push(6),l.reverse()},r.getPositions=function(n){const e=[],t=r.getRowColCoords(n),a=t.length;for(let l=0;l<a;l++)for(let c=0;c<a;c++)l===0&&c===0||l===0&&c===a-1||l===a-1&&c===0||e.push([t[l],t[c]]);return e}})(oe)),oe}var ie={},Oe;function Dt(){if(Oe)return ie;Oe=1;const r=D().getSymbolSize,s=7;return ie.getPositions=function(n){const e=r(n);return[[0,0],[e-s,0],[0,e-s]]},ie}var ae={},$e;function Ut(){return $e||($e=1,(function(r){r.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const s={N1:3,N2:3,N3:40,N4:10};r.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7},r.from=function(e){return r.isValid(e)?parseInt(e,10):void 0},r.getPenaltyN1=function(e){const t=e.size;let a=0,l=0,c=0,d=null,u=null;for(let x=0;x<t;x++){l=c=0,d=u=null;for(let p=0;p<t;p++){let h=e.get(x,p);h===d?l++:(l>=5&&(a+=s.N1+(l-5)),d=h,l=1),h=e.get(p,x),h===u?c++:(c>=5&&(a+=s.N1+(c-5)),u=h,c=1)}l>=5&&(a+=s.N1+(l-5)),c>=5&&(a+=s.N1+(c-5))}return a},r.getPenaltyN2=function(e){const t=e.size;let a=0;for(let l=0;l<t-1;l++)for(let c=0;c<t-1;c++){const d=e.get(l,c)+e.get(l,c+1)+e.get(l+1,c)+e.get(l+1,c+1);(d===4||d===0)&&a++}return a*s.N2},r.getPenaltyN3=function(e){const t=e.size;let a=0,l=0,c=0;for(let d=0;d<t;d++){l=c=0;for(let u=0;u<t;u++)l=l<<1&2047|e.get(d,u),u>=10&&(l===1488||l===93)&&a++,c=c<<1&2047|e.get(u,d),u>=10&&(c===1488||c===93)&&a++}return a*s.N3},r.getPenaltyN4=function(e){let t=0;const a=e.data.length;for(let c=0;c<a;c++)t+=e.data[c];return Math.abs(Math.ceil(t*100/a/5)-10)*s.N4};function i(n,e,t){switch(n){case r.Patterns.PATTERN000:return(e+t)%2===0;case r.Patterns.PATTERN001:return e%2===0;case r.Patterns.PATTERN010:return t%3===0;case r.Patterns.PATTERN011:return(e+t)%3===0;case r.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case r.Patterns.PATTERN101:return e*t%2+e*t%3===0;case r.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case r.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}r.applyMask=function(e,t){const a=t.size;for(let l=0;l<a;l++)for(let c=0;c<a;c++)t.isReserved(c,l)||t.xor(c,l,i(e,c,l))},r.getBestMask=function(e,t){const a=Object.keys(r.Patterns).length;let l=0,c=1/0;for(let d=0;d<a;d++){t(d),r.applyMask(d,e);const u=r.getPenaltyN1(e)+r.getPenaltyN2(e)+r.getPenaltyN3(e)+r.getPenaltyN4(e);r.applyMask(d,e),u<c&&(c=u,l=d)}return l}})(ae)),ae}var $={},Je;function wt(){if(Je)return $;Je=1;const r=Ee(),s=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],i=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return $.getBlocksCount=function(e,t){switch(t){case r.L:return s[(e-1)*4+0];case r.M:return s[(e-1)*4+1];case r.Q:return s[(e-1)*4+2];case r.H:return s[(e-1)*4+3];default:return}},$.getTotalCodewordsCount=function(e,t){switch(t){case r.L:return i[(e-1)*4+0];case r.M:return i[(e-1)*4+1];case r.Q:return i[(e-1)*4+2];case r.H:return i[(e-1)*4+3];default:return}},$}var le={},Q={},Ye;function Ft(){if(Ye)return Q;Ye=1;const r=new Uint8Array(512),s=new Uint8Array(256);return(function(){let n=1;for(let e=0;e<255;e++)r[e]=n,s[n]=e,n<<=1,n&256&&(n^=285);for(let e=255;e<512;e++)r[e]=r[e-255]})(),Q.log=function(n){if(n<1)throw new Error("log("+n+")");return s[n]},Q.exp=function(n){return r[n]},Q.mul=function(n,e){return n===0||e===0?0:r[s[n]+s[e]]},Q}var Ge;function zt(){return Ge||(Ge=1,(function(r){const s=Ft();r.mul=function(n,e){const t=new Uint8Array(n.length+e.length-1);for(let a=0;a<n.length;a++)for(let l=0;l<e.length;l++)t[a+l]^=s.mul(n[a],e[l]);return t},r.mod=function(n,e){let t=new Uint8Array(n);for(;t.length-e.length>=0;){const a=t[0];for(let c=0;c<e.length;c++)t[c]^=s.mul(e[c],a);let l=0;for(;l<t.length&&t[l]===0;)l++;t=t.slice(l)}return t},r.generateECPolynomial=function(n){let e=new Uint8Array([1]);for(let t=0;t<n;t++)e=r.mul(e,new Uint8Array([1,s.exp(t)]));return e}})(le)),le}var ce,We;function Kt(){if(We)return ce;We=1;const r=zt();function s(i){this.genPoly=void 0,this.degree=i,this.degree&&this.initialize(this.degree)}return s.prototype.initialize=function(n){this.degree=n,this.genPoly=r.generateECPolynomial(this.degree)},s.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const e=new Uint8Array(n.length+this.degree);e.set(n);const t=r.mod(e,this.genPoly),a=this.degree-t.length;if(a>0){const l=new Uint8Array(this.degree);return l.set(t,a),l}return t},ce=s,ce}var de={},ue={},fe={},Ze;function yt(){return Ze||(Ze=1,fe.isValid=function(s){return!isNaN(s)&&s>=1&&s<=40}),fe}var I={},Xe;function Nt(){if(Xe)return I;Xe=1;const r="[0-9]+",s="[A-Z $%*+\\-./:]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+`)(?:.|[\r
2
- ]))+`;I.KANJI=new RegExp(i,"g"),I.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),I.BYTE=new RegExp(n,"g"),I.NUMERIC=new RegExp(r,"g"),I.ALPHANUMERIC=new RegExp(s,"g");const e=new RegExp("^"+i+"$"),t=new RegExp("^"+r+"$"),a=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return I.testKanji=function(c){return e.test(c)},I.testNumeric=function(c){return t.test(c)},I.testAlphanumeric=function(c){return a.test(c)},I}var et;function U(){return et||(et=1,(function(r){const s=yt(),i=Nt();r.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},r.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},r.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},r.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},r.MIXED={bit:-1},r.getCharCountIndicator=function(t,a){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!s.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?t.ccBits[0]:a<27?t.ccBits[1]:t.ccBits[2]},r.getBestModeForData=function(t){return i.testNumeric(t)?r.NUMERIC:i.testAlphanumeric(t)?r.ALPHANUMERIC:i.testKanji(t)?r.KANJI:r.BYTE},r.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},r.isValid=function(t){return t&&t.bit&&t.ccBits};function n(e){if(typeof e!="string")throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return r.NUMERIC;case"alphanumeric":return r.ALPHANUMERIC;case"kanji":return r.KANJI;case"byte":return r.BYTE;default:throw new Error("Unknown mode: "+e)}}r.from=function(t,a){if(r.isValid(t))return t;try{return n(t)}catch{return a}}})(ue)),ue}var tt;function Vt(){return tt||(tt=1,(function(r){const s=D(),i=wt(),n=Ee(),e=U(),t=yt(),a=7973,l=s.getBCHDigit(a);function c(p,h,N){for(let B=1;B<=40;B++)if(h<=r.getCapacity(B,N,p))return B}function d(p,h){return e.getCharCountIndicator(p,h)+4}function u(p,h){let N=0;return p.forEach(function(B){const R=d(B.mode,h);N+=R+B.getBitsLength()}),N}function x(p,h){for(let N=1;N<=40;N++)if(u(p,N)<=r.getCapacity(N,h,e.MIXED))return N}r.from=function(h,N){return t.isValid(h)?parseInt(h,10):N},r.getCapacity=function(h,N,B){if(!t.isValid(h))throw new Error("Invalid QR Code version");typeof B>"u"&&(B=e.BYTE);const R=s.getSymbolTotalCodewords(h),j=i.getTotalCodewordsCount(h,N),y=(R-j)*8;if(B===e.MIXED)return y;const S=y-d(B,h);switch(B){case e.NUMERIC:return Math.floor(S/10*3);case e.ALPHANUMERIC:return Math.floor(S/11*2);case e.KANJI:return Math.floor(S/13);case e.BYTE:default:return Math.floor(S/8)}},r.getBestVersionForData=function(h,N){let B;const R=n.from(N,n.M);if(Array.isArray(h)){if(h.length>1)return x(h,R);if(h.length===0)return 1;B=h[0]}else B=h;return c(B.mode,B.getLength(),R)},r.getEncodedBits=function(h){if(!t.isValid(h)||h<7)throw new Error("Invalid QR Code version");let N=h<<12;for(;s.getBCHDigit(N)-l>=0;)N^=a<<s.getBCHDigit(N)-l;return h<<12|N}})(de)),de}var he={},nt;function Ht(){if(nt)return he;nt=1;const r=D(),s=1335,i=21522,n=r.getBCHDigit(s);return he.getEncodedBits=function(t,a){const l=t.bit<<3|a;let c=l<<10;for(;r.getBCHDigit(c)-n>=0;)c^=s<<r.getBCHDigit(c)-n;return(l<<10|c)^i},he}var ge={},me,rt;function Qt(){if(rt)return me;rt=1;const r=U();function s(i){this.mode=r.NUMERIC,this.data=i.toString()}return s.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(n){let e,t,a;for(e=0;e+3<=this.data.length;e+=3)t=this.data.substr(e,3),a=parseInt(t,10),n.put(a,10);const l=this.data.length-e;l>0&&(t=this.data.substr(e),a=parseInt(t,10),n.put(a,l*3+1))},me=s,me}var xe,st;function Ot(){if(st)return xe;st=1;const r=U(),s=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function i(n){this.mode=r.ALPHANUMERIC,this.data=n}return i.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let a=s.indexOf(this.data[t])*45;a+=s.indexOf(this.data[t+1]),e.put(a,11)}this.data.length%2&&e.put(s.indexOf(this.data[t]),6)},xe=i,xe}var pe,ot;function $t(){if(ot)return pe;ot=1;const r=U();function s(i){this.mode=r.BYTE,typeof i=="string"?this.data=new TextEncoder().encode(i):this.data=new Uint8Array(i)}return s.getBitsLength=function(n){return n*8},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(i){for(let n=0,e=this.data.length;n<e;n++)i.put(this.data[n],8)},pe=s,pe}var be,it;function Jt(){if(it)return be;it=1;const r=U(),s=D();function i(n){this.mode=r.KANJI,this.data=n}return i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(n){let e;for(e=0;e<this.data.length;e++){let t=s.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
3
- Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),n.put(t,13)}},be=i,be}var we={exports:{}},at;function Yt(){return at||(at=1,(function(r){var s={single_source_shortest_paths:function(i,n,e){var t={},a={};a[n]=0;var l=s.PriorityQueue.make();l.push(n,0);for(var c,d,u,x,p,h,N,B,R;!l.empty();){c=l.pop(),d=c.value,x=c.cost,p=i[d]||{};for(u in p)p.hasOwnProperty(u)&&(h=p[u],N=x+h,B=a[u],R=typeof a[u]>"u",(R||B>N)&&(a[u]=N,l.push(u,N),t[u]=d))}if(typeof e<"u"&&typeof a[e]>"u"){var j=["Could not find a path from ",n," to ",e,"."].join("");throw new Error(j)}return t},extract_shortest_path_from_predecessor_list:function(i,n){for(var e=[],t=n;t;)e.push(t),i[t],t=i[t];return e.reverse(),e},find_path:function(i,n,e){var t=s.single_source_shortest_paths(i,n,e);return s.extract_shortest_path_from_predecessor_list(t,e)},PriorityQueue:{make:function(i){var n=s.PriorityQueue,e={},t;i=i||{};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e.queue=[],e.sorter=i.sorter||n.default_sorter,e},default_sorter:function(i,n){return i.cost-n.cost},push:function(i,n){var e={value:i,cost:n};this.queue.push(e),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};r.exports=s})(we)),we.exports}var lt;function Gt(){return lt||(lt=1,(function(r){const s=U(),i=Qt(),n=Ot(),e=$t(),t=Jt(),a=Nt(),l=D(),c=Yt();function d(j){return unescape(encodeURIComponent(j)).length}function u(j,y,S){const g=[];let A;for(;(A=j.exec(S))!==null;)g.push({data:A[0],index:A.index,mode:y,length:A[0].length});return g}function x(j){const y=u(a.NUMERIC,s.NUMERIC,j),S=u(a.ALPHANUMERIC,s.ALPHANUMERIC,j);let g,A;return l.isKanjiModeEnabled()?(g=u(a.BYTE,s.BYTE,j),A=u(a.KANJI,s.KANJI,j)):(g=u(a.BYTE_KANJI,s.BYTE,j),A=[]),y.concat(S,g,A).sort(function(C,k){return C.index-k.index}).map(function(C){return{data:C.data,mode:C.mode,length:C.length}})}function p(j,y){switch(y){case s.NUMERIC:return i.getBitsLength(j);case s.ALPHANUMERIC:return n.getBitsLength(j);case s.KANJI:return t.getBitsLength(j);case s.BYTE:return e.getBitsLength(j)}}function h(j){return j.reduce(function(y,S){const g=y.length-1>=0?y[y.length-1]:null;return g&&g.mode===S.mode?(y[y.length-1].data+=S.data,y):(y.push(S),y)},[])}function N(j){const y=[];for(let S=0;S<j.length;S++){const g=j[S];switch(g.mode){case s.NUMERIC:y.push([g,{data:g.data,mode:s.ALPHANUMERIC,length:g.length},{data:g.data,mode:s.BYTE,length:g.length}]);break;case s.ALPHANUMERIC:y.push([g,{data:g.data,mode:s.BYTE,length:g.length}]);break;case s.KANJI:y.push([g,{data:g.data,mode:s.BYTE,length:d(g.data)}]);break;case s.BYTE:y.push([{data:g.data,mode:s.BYTE,length:d(g.data)}])}}return y}function B(j,y){const S={},g={start:{}};let A=["start"];for(let m=0;m<j.length;m++){const C=j[m],k=[];for(let b=0;b<C.length;b++){const f=C[b],w=""+m+b;k.push(w),S[w]={node:f,lastCount:0},g[w]={};for(let E=0;E<A.length;E++){const v=A[E];S[v]&&S[v].node.mode===f.mode?(g[v][w]=p(S[v].lastCount+f.length,f.mode)-p(S[v].lastCount,f.mode),S[v].lastCount+=f.length):(S[v]&&(S[v].lastCount=f.length),g[v][w]=p(f.length,f.mode)+4+s.getCharCountIndicator(f.mode,y))}}A=k}for(let m=0;m<A.length;m++)g[A[m]].end=0;return{map:g,table:S}}function R(j,y){let S;const g=s.getBestModeForData(j);if(S=s.from(y,g),S!==s.BYTE&&S.bit<g.bit)throw new Error('"'+j+'" cannot be encoded with mode '+s.toString(S)+`.
4
- Suggested mode is: `+s.toString(g));switch(S===s.KANJI&&!l.isKanjiModeEnabled()&&(S=s.BYTE),S){case s.NUMERIC:return new i(j);case s.ALPHANUMERIC:return new n(j);case s.KANJI:return new t(j);case s.BYTE:return new e(j)}}r.fromArray=function(y){return y.reduce(function(S,g){return typeof g=="string"?S.push(R(g,null)):g.data&&S.push(R(g.data,g.mode)),S},[])},r.fromString=function(y,S){const g=x(y,l.isKanjiModeEnabled()),A=N(g),m=B(A,S),C=c.find_path(m.map,"start","end"),k=[];for(let b=1;b<C.length-1;b++)k.push(m.table[C[b]].node);return r.fromArray(h(k))},r.rawSplit=function(y){return r.fromArray(x(y,l.isKanjiModeEnabled()))}})(ge)),ge}var ct;function Wt(){if(ct)return te;ct=1;const r=D(),s=Ee(),i=Lt(),n=qt(),e=_t(),t=Dt(),a=Ut(),l=wt(),c=Kt(),d=Vt(),u=Ht(),x=U(),p=Gt();function h(m,C){const k=m.size,b=t.getPositions(C);for(let f=0;f<b.length;f++){const w=b[f][0],E=b[f][1];for(let v=-1;v<=7;v++)if(!(w+v<=-1||k<=w+v))for(let T=-1;T<=7;T++)E+T<=-1||k<=E+T||(v>=0&&v<=6&&(T===0||T===6)||T>=0&&T<=6&&(v===0||v===6)||v>=2&&v<=4&&T>=2&&T<=4?m.set(w+v,E+T,!0,!0):m.set(w+v,E+T,!1,!0))}}function N(m){const C=m.size;for(let k=8;k<C-8;k++){const b=k%2===0;m.set(k,6,b,!0),m.set(6,k,b,!0)}}function B(m,C){const k=e.getPositions(C);for(let b=0;b<k.length;b++){const f=k[b][0],w=k[b][1];for(let E=-2;E<=2;E++)for(let v=-2;v<=2;v++)E===-2||E===2||v===-2||v===2||E===0&&v===0?m.set(f+E,w+v,!0,!0):m.set(f+E,w+v,!1,!0)}}function R(m,C){const k=m.size,b=d.getEncodedBits(C);let f,w,E;for(let v=0;v<18;v++)f=Math.floor(v/3),w=v%3+k-8-3,E=(b>>v&1)===1,m.set(f,w,E,!0),m.set(w,f,E,!0)}function j(m,C,k){const b=m.size,f=u.getEncodedBits(C,k);let w,E;for(w=0;w<15;w++)E=(f>>w&1)===1,w<6?m.set(w,8,E,!0):w<8?m.set(w+1,8,E,!0):m.set(b-15+w,8,E,!0),w<8?m.set(8,b-w-1,E,!0):w<9?m.set(8,15-w-1+1,E,!0):m.set(8,15-w-1,E,!0);m.set(b-8,8,1,!0)}function y(m,C){const k=m.size;let b=-1,f=k-1,w=7,E=0;for(let v=k-1;v>0;v-=2)for(v===6&&v--;;){for(let T=0;T<2;T++)if(!m.isReserved(f,v-T)){let q=!1;E<C.length&&(q=(C[E]>>>w&1)===1),m.set(f,v-T,q),w--,w===-1&&(E++,w=7)}if(f+=b,f<0||k<=f){f-=b,b=-b;break}}}function S(m,C,k){const b=new i;k.forEach(function(T){b.put(T.mode.bit,4),b.put(T.getLength(),x.getCharCountIndicator(T.mode,m)),T.write(b)});const f=r.getSymbolTotalCodewords(m),w=l.getTotalCodewordsCount(m,C),E=(f-w)*8;for(b.getLengthInBits()+4<=E&&b.put(0,4);b.getLengthInBits()%8!==0;)b.putBit(0);const v=(E-b.getLengthInBits())/8;for(let T=0;T<v;T++)b.put(T%2?17:236,8);return g(b,m,C)}function g(m,C,k){const b=r.getSymbolTotalCodewords(C),f=l.getTotalCodewordsCount(C,k),w=b-f,E=l.getBlocksCount(C,k),v=b%E,T=E-v,q=Math.floor(b/E),V=Math.floor(w/E),kt=V+1,ve=q-V,jt=new c(ve);let J=0;const O=new Array(E),Se=new Array(E);let Y=0;const Et=new Uint8Array(m.buffer);for(let F=0;F<E;F++){const W=F<T?V:kt;O[F]=Et.slice(J,J+W),Se[F]=jt.encode(O[F]),J+=W,Y=Math.max(Y,W)}const G=new Uint8Array(b);let Be=0,P,L;for(P=0;P<Y;P++)for(L=0;L<E;L++)P<O[L].length&&(G[Be++]=O[L][P]);for(P=0;P<ve;P++)for(L=0;L<E;L++)G[Be++]=Se[L][P];return G}function A(m,C,k,b){let f;if(Array.isArray(m))f=p.fromArray(m);else if(typeof m=="string"){let q=C;if(!q){const V=p.rawSplit(m);q=d.getBestVersionForData(V,k)}f=p.fromString(m,q||40)}else throw new Error("Invalid data");const w=d.getBestVersionForData(f,k);if(!w)throw new Error("The amount of data is too big to be stored in a QR Code");if(!C)C=w;else if(C<w)throw new Error(`
5
- The chosen QR Code version cannot contain this amount of data.
6
- Minimum version required to store current data is: `+w+`.
7
- `);const E=S(C,k,f),v=r.getSymbolSize(C),T=new n(v);return h(T,C),N(T),B(T,C),j(T,k,0),C>=7&&R(T,C),y(T,E),isNaN(b)&&(b=a.getBestMask(T,j.bind(null,T,k))),a.applyMask(b,T),j(T,k,b),{modules:T,version:C,errorCorrectionLevel:k,maskPattern:b,segments:f}}return te.create=function(C,k){if(typeof C>"u"||C==="")throw new Error("No input text");let b=s.M,f,w;return typeof k<"u"&&(b=s.from(k.errorCorrectionLevel,s.M),f=d.from(k.version),w=a.from(k.maskPattern),k.toSJISFunc&&r.setToSJISFunction(k.toSJISFunc)),A(C,f,b,w)},te}var ye={},Ne={},dt;function Ct(){return dt||(dt=1,(function(r){function s(i){if(typeof i=="number"&&(i=i.toString()),typeof i!="string")throw new Error("Color should be defined as hex string");let n=i.slice().replace("#","").split("");if(n.length<3||n.length===5||n.length>8)throw new Error("Invalid hex color: "+i);(n.length===3||n.length===4)&&(n=Array.prototype.concat.apply([],n.map(function(t){return[t,t]}))),n.length===6&&n.push("F","F");const e=parseInt(n.join(""),16);return{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:e&255,hex:"#"+n.slice(0,6).join("")}}r.getOptions=function(n){n||(n={}),n.color||(n.color={});const e=typeof n.margin>"u"||n.margin===null||n.margin<0?4:n.margin,t=n.width&&n.width>=21?n.width:void 0,a=n.scale||4;return{width:t,scale:t?4:a,margin:e,color:{dark:s(n.color.dark||"#000000ff"),light:s(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},r.getScale=function(n,e){return e.width&&e.width>=n+e.margin*2?e.width/(n+e.margin*2):e.scale},r.getImageWidth=function(n,e){const t=r.getScale(n,e);return Math.floor((n+e.margin*2)*t)},r.qrToImageData=function(n,e,t){const a=e.modules.size,l=e.modules.data,c=r.getScale(a,t),d=Math.floor((a+t.margin*2)*c),u=t.margin*c,x=[t.color.light,t.color.dark];for(let p=0;p<d;p++)for(let h=0;h<d;h++){let N=(p*d+h)*4,B=t.color.light;if(p>=u&&h>=u&&p<d-u&&h<d-u){const R=Math.floor((p-u)/c),j=Math.floor((h-u)/c);B=x[l[R*a+j]?1:0]}n[N++]=B.r,n[N++]=B.g,n[N++]=B.b,n[N]=B.a}}})(Ne)),Ne}var ut;function Zt(){return ut||(ut=1,(function(r){const s=Ct();function i(e,t,a){e.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=a,t.width=a,t.style.height=a+"px",t.style.width=a+"px"}function n(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}r.render=function(t,a,l){let c=l,d=a;typeof c>"u"&&(!a||!a.getContext)&&(c=a,a=void 0),a||(d=n()),c=s.getOptions(c);const u=s.getImageWidth(t.modules.size,c),x=d.getContext("2d"),p=x.createImageData(u,u);return s.qrToImageData(p.data,t,c),i(x,d,u),x.putImageData(p,0,0),d},r.renderToDataURL=function(t,a,l){let c=l;typeof c>"u"&&(!a||!a.getContext)&&(c=a,a=void 0),c||(c={});const d=r.render(t,a,c),u=c.type||"image/png",x=c.rendererOpts||{};return d.toDataURL(u,x.quality)}})(ye)),ye}var Ce={},ft;function Xt(){if(ft)return Ce;ft=1;const r=Ct();function s(e,t){const a=e.a/255,l=t+'="'+e.hex+'"';return a<1?l+" "+t+'-opacity="'+a.toFixed(2).slice(1)+'"':l}function i(e,t,a){let l=e+t;return typeof a<"u"&&(l+=" "+a),l}function n(e,t,a){let l="",c=0,d=!1,u=0;for(let x=0;x<e.length;x++){const p=Math.floor(x%t),h=Math.floor(x/t);!p&&!d&&(d=!0),e[x]?(u++,x>0&&p>0&&e[x-1]||(l+=d?i("M",p+a,.5+h+a):i("m",c,0),c=0,d=!1),p+1<t&&e[x+1]||(l+=i("h",u),u=0)):c++}return l}return Ce.render=function(t,a,l){const c=r.getOptions(a),d=t.modules.size,u=t.modules.data,x=d+c.margin*2,p=c.color.light.a?"<path "+s(c.color.light,"fill")+' d="M0 0h'+x+"v"+x+'H0z"/>':"",h="<path "+s(c.color.dark,"stroke")+' d="'+n(u,d,c.margin)+'"/>',N='viewBox="0 0 '+x+" "+x+'"',R='<svg xmlns="http://www.w3.org/2000/svg" '+(c.width?'width="'+c.width+'" height="'+c.width+'" ':"")+N+' shape-rendering="crispEdges">'+p+h+`</svg>
8
- `;return typeof l=="function"&&l(null,R),R},Ce}var ht;function en(){if(ht)return K;ht=1;const r=Pt(),s=Wt(),i=Zt(),n=Xt();function e(t,a,l,c,d){const u=[].slice.call(arguments,1),x=u.length,p=typeof u[x-1]=="function";if(!p&&!r())throw new Error("Callback required as last argument");if(p){if(x<2)throw new Error("Too few arguments provided");x===2?(d=l,l=a,a=c=void 0):x===3&&(a.getContext&&typeof d>"u"?(d=c,c=void 0):(d=c,c=l,l=a,a=void 0))}else{if(x<1)throw new Error("Too few arguments provided");return x===1?(l=a,a=c=void 0):x===2&&!a.getContext&&(c=l,l=a,a=void 0),new Promise(function(h,N){try{const B=s.create(l,c);h(t(B,a,c))}catch(B){N(B)}})}try{const h=s.create(l,c);d(null,t(h,a,c))}catch(h){d(h)}}return K.create=s.create,K.toCanvas=e.bind(null,i.render),K.toDataURL=e.bind(null,i.renderToDataURL),K.toString=e.bind(null,function(t,a,l){return n.render(t,l)}),K}var tn=en();const nn=Bt(tn),rn=2e3,gt=5;function sn({channel:r,onClose:s}){const[i,n]=M.useState("loading"),[e,t]=M.useState(null),[a,l]=M.useState(null),[c,d]=M.useState(""),u=M.useRef(null),x=M.useRef(0),p=M.useRef(null),h=M.useRef(!1),N=()=>{p.current&&(clearTimeout(p.current),p.current=null),h.current=!0},B=async g=>{if(u.current)try{await nn.toCanvas(u.current,g,{width:240,margin:2,color:{dark:"#000000ff",light:"#ffffffff"}})}catch(A){console.warn("[WechatQr] Canvas QR generation failed, falling back to URL:",A)}},R=async()=>{if(!(h.current||!a))try{const g=await Ae.channels.weixin.bindStatus(a),A=(g==null?void 0:g.data)??g,m=(A==null?void 0:A.status)??"";if(x.current=0,m==="confirmed"){n("confirmed"),X.success(r?`微信「${r.name}」重新授权成功,频道已连接`:"微信绑定成功,频道已自动创建并连接"),setTimeout(s,2400);return}if(m==="scaned")n("scanned");else if(m==="expired"){n("expired");return}h.current||(p.current=setTimeout(R,rn))}catch(g){if(x.current++,console.warn("[WechatQr] poll error ("+x.current+"/"+gt+")",g),x.current>=gt)n("error"),d("轮询状态失败次数过多,请刷新二维码重试"),X.error("微信绑定状态轮询失败,请刷新二维码重试");else if(!h.current){const A=Math.min(1e3*Math.pow(2,x.current),1e4);p.current=setTimeout(R,A)}}},j=()=>{N(),h.current=!1,x.current=0,p.current=setTimeout(R,1e3)},y=async()=>{n("loading"),t(null),l(null),d(""),x.current=0;try{const g=await Ae.channels.weixin.bind(),A=(g==null?void 0:g.data)??g,m=(A==null?void 0:A.qrcode_img_content)??"",C=(A==null?void 0:A.qrcode)??"";if(!m||!C){n("error"),d(`二维码数据缺失: ${JSON.stringify(A)}`);return}t(m),l(C),await B(m),n("waiting")}catch(g){n("error");const A=String((g==null?void 0:g.message)??g);d(A),X.error(`获取微信二维码失败:${A}`)}},S=()=>{y()};return M.useEffect(()=>(y(),N),[]),M.useEffect(()=>(a&&j(),N),[a]),o.jsx(Tt,{isOpen:!0,onClose:s,title:`扫码绑定 · ${(r==null?void 0:r.name)??"微信"}`,size:"sm",children:o.jsxs("div",{className:"flex flex-col items-center gap-4 py-2",children:[o.jsxs("div",{className:"relative w-60 h-60 rounded-lg bg-white flex items-center justify-center overflow-hidden",children:[i==="loading"&&o.jsx("span",{className:"text-gray-400 text-sm",children:"二维码生成中..."}),i!=="error"&&i!=="expired"&&o.jsx("canvas",{ref:u,width:240,height:240,className:`w-full h-full object-contain ${i==="waiting"?"":"opacity-30"}`}),i==="scanned"&&o.jsxs("div",{className:"absolute inset-0 bg-black/70 flex flex-col items-center justify-center text-white gap-1",children:[o.jsx("span",{className:"text-2xl",children:"✓"}),o.jsx("span",{className:"text-sm",children:"已扫描,请在手机上确认"})]}),i==="confirmed"&&o.jsxs("div",{className:"absolute inset-0 bg-green-600/90 flex flex-col items-center justify-center text-white gap-2 px-4 text-center",children:[o.jsx("span",{className:"text-2xl",children:"🎉"}),o.jsx("span",{className:"text-sm font-medium",children:"绑定成功"}),o.jsx("span",{className:"text-xs opacity-90",children:r?`「${r.name}」已连接,可开始使用`:"微信频道已创建并连接,可开始使用"}),o.jsx("button",{onClick:s,className:"mt-1 text-xs bg-white/20 hover:bg-white/30 px-3 py-1.5 rounded-md transition-colors",children:"开始使用"})]}),i==="expired"&&o.jsxs("div",{className:"absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-white gap-2",children:[o.jsx("span",{className:"text-sm",children:"二维码已失效"}),o.jsx("button",{onClick:S,className:"text-xs bg-green-600 hover:bg-green-500 px-3 py-1 rounded",children:"点击刷新"})]}),i==="error"&&o.jsxs("div",{className:"absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-red-300 gap-2 px-4 text-center",children:[o.jsx("span",{className:"text-xs",children:c||"未知错误"}),o.jsx("button",{onClick:S,className:"text-xs bg-blue-600 hover:bg-blue-500 px-3 py-1 rounded text-white",children:"重试"})]})]}),o.jsxs("p",{className:"text-sm text-dark-muted text-center",children:[i==="waiting"&&"请使用微信扫描二维码授权机器人",i==="scanned"&&"已扫描,请在手机上确认...",i==="confirmed"&&"机器人已授权并启动,即将自动关闭",i==="loading"&&"正在连接 iLink 服务...",(i==="expired"||i==="error")&&(i==="expired"?"二维码已失效":"")]}),e&&i==="waiting"&&o.jsxs("button",{onClick:()=>window.open(e,"_blank","width=480,height=600,noopener"),className:"w-full flex items-center justify-center gap-2 text-sm bg-green-600/15 hover:bg-green-600/25 text-green-400 border border-green-600/40 px-3 py-2.5 rounded-lg transition-colors",children:[o.jsx("span",{children:"🔔"})," 在新标签页打开(备用)"]})]})})}function fn(){const{load:r,loading:s,qrOpen:i,qrChannel:n,closeQr:e}=je();return M.useEffect(()=>{r()},[]),o.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-dark-bg text-dark-text",children:[o.jsxs("div",{className:"flex items-center justify-between px-6 py-4 border-b border-dark-border shrink-0",children:[o.jsxs("div",{children:[o.jsx("h2",{className:"font-semibold text-base",children:"频道管理"}),o.jsx("p",{className:"text-xs text-dark-muted mt-0.5",children:"接入微信、飞书、钉钉,用户可通过频道发送任务并实时接收进度与结果"})]}),o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("button",{onClick:()=>r(),title:"刷新",className:"p-2 rounded-lg text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors",children:o.jsx(At,{className:`w-4 h-4 ${s?"animate-spin":""}`})})})]}),o.jsxs("div",{className:"flex-1 flex min-h-0 overflow-hidden",children:[o.jsx("div",{className:"w-[260px] shrink-0",children:o.jsx(Rt,{})}),o.jsx("div",{className:"flex-1 min-w-0",children:o.jsx(Mt,{})})]}),i&&o.jsx(sn,{channel:n,onClose:e})]})}export{fn as ChannelConfigView};
@@ -1 +0,0 @@
1
- import{j as s}from"./markdown-4Q3UQbv9.js";import{a as d,L as w,Z as A,aj as F,z as ae,h as ne,af as le,aa as R,b1 as K,b4 as q,$ as oe,aU as V,E as de,ar as ce,D,l as ie}from"./icons-ZBQi-Ogj.js";import{c as me,a as f}from"./index-sYOn5Yyn.js";import"./react-vendor-LdB92qnf.js";import"./state-4vIOJjS6.js";import"./panels-CwhLUZOq.js";const ue={"code-intelligence":"🧠 代码智能",filesystem:"📂 文件系统",databases:"🗄️ 数据库","browser-automation":"🌐 浏览器自动化","knowledge-memory":"🧠 知识/记忆","search-web":"🔎 搜索/网页","cloud-platforms":"☁️ 云平台",communication:"💬 通讯","developer-tools":"🛠️ 开发者工具",security:"🔒 安全","test-demo":"🧪 测试/Demo",other:"📦 其他"};function je(){const{t:r}=me(),[u,x]=d.useState([]),[H,C]=d.useState(!0),[E,S]=d.useState(null),[j,p]=d.useState({}),[z,m]=d.useState(null),[v,O]=d.useState(""),[b,$]=d.useState(null),[k,U]=d.useState("all"),[Y,g]=d.useState(null),[G,L]=d.useState({}),[M,N]=d.useState(!1),[l,i]=d.useState({name:"",command:"",args:"",env:"",transport:"stdio",url:"",headers:""}),Q=()=>i({name:"",command:"",args:"",env:"",transport:"stdio",url:"",headers:""}),T=e=>Object.fromEntries(e.split(",").map(t=>t.trim()).filter(Boolean).map(t=>{const n=t.indexOf("=");return n>0?[t.slice(0,n).trim(),t.slice(n+1).trim()]:[t,""]})),Z=async()=>{const e=l.transport!=="stdio";if(!l.name.trim()||!e&&!l.command.trim()||e&&!l.url.trim()){m(r("connectors.customFormRequired"));return}p(t=>({...t,__add:!0})),m(null);try{const t=await f.connectors.addCustom({name:l.name.trim(),command:e?void 0:l.command.trim(),args:e?void 0:l.args.split(/\s+/).filter(Boolean),env:T(l.env),url:e?l.url.trim():void 0,transport:e?l.transport:void 0,headers:e?T(l.headers):void 0});t.success&&t.data?(x(n=>[...n,t.data]),N(!1),Q()):m(t.error||"添加失败")}catch(t){m(t instanceof Error?t.message:String(t))}finally{p(t=>({...t,__add:!1}))}},I=async e=>{p(t=>({...t,[e.id]:!0}));try{const t=await f.connectors.removeCustom(e.id);t.success?x(n=>n.filter(a=>a.id!==e.id)):m(t.error||"删除失败")}finally{p(t=>({...t,[e.id]:!1}))}},y=async()=>{var t;C(!0),S(null);const e=await f.connectors.list();e.success&&Array.isArray((t=e.data)==null?void 0:t.connectors)?x(e.data.connectors):S(e.error||"加载连接器失败"),C(!1)};d.useEffect(()=>{y()},[]);const B=(e,t,n,a)=>{m(n||null),x(o=>o.map(c=>c.id===e?{...c,enabled:!!a,status:"error"}:c))},P=async(e,t,n)=>{m(null),p(a=>({...a,[e.id]:!0})),x(a=>a.map(o=>o.id===e.id?{...o,enabled:t,status:t?"connecting":"installed"}:o));try{const a=await f.connectors.toggle(e.id,t,n);a.success&&a.data?x(o=>o.map(c=>c.id===e.id?a.data:c)):B(e.id,void 0,a.error||`切换 ${e.name} 失败`,!t)}catch(a){B(e.id,void 0,a instanceof Error?a.message:String(a),!t)}finally{p(a=>({...a,[e.id]:!1}))}},W=e=>{var t,n;if(!e.enabled&&((t=e.requiresEnv)!=null&&t.length)&&((n=e.missingEnv)!=null&&n.length)){g(e.id);return}g(null),P(e,!e.enabled)},J=(e,t)=>{g(null),L(n=>({...n,[e.id]:{}})),P(e,!0,t)},X=e=>{const t="inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-medium";if(!e.installed)return s.jsxs("span",{className:`${t} bg-dark-hover text-dark-muted`,children:[s.jsx(D,{size:12}),r("connectors.notInstalled")]});switch(e.status){case"ready":return s.jsxs("span",{className:`${t} bg-accent-green/15 text-accent-green`,children:[s.jsx(ie,{size:12}),r("connectors.ready")]});case"connecting":return s.jsxs("span",{className:`${t} bg-accent-blue/15 text-accent-blue`,children:[s.jsx(w,{size:12,className:"animate-spin"}),r("connectors.connecting")]});case"error":return s.jsxs("span",{className:`${t} bg-accent-red/15 text-accent-red`,children:[s.jsx(A,{size:12}),r("connectors.error")]});case"disabled":return s.jsx("span",{className:`${t} bg-dark-hover text-dark-muted`,children:r("connectors.disabled")});default:return s.jsx("span",{className:`${t} bg-dark-hover text-dark-muted`,children:r("connectors.installed")})}},h=u.filter(e=>k==="all"||e.kind===k),_=h.filter(e=>{if(v){const t=v.toLowerCase();if(![e.name,e.id,e.description,e.category??"",e.kind,...e.languages??[]].join(" ").toLowerCase().includes(t))return!1}return!(b&&e.category!==b)}).sort((e,t)=>e.enabled!==t.enabled?e.enabled?-1:1:e.name.localeCompare(t.name)),ee=[...new Set(h.map(e=>e.category).filter(Boolean))];if(H)return s.jsx("div",{className:"flex-1 flex items-center justify-center",children:s.jsxs("div",{className:"text-center",children:[s.jsx(w,{size:32,className:"animate-spin mx-auto mb-2 text-accent-blue"}),s.jsx("p",{className:"text-dark-muted",children:r("common.loading")})]})});if(E)return s.jsx("div",{className:"flex-1 flex items-center justify-center",children:s.jsxs("div",{className:"text-center",children:[s.jsx(A,{size:32,className:"mx-auto mb-2 text-accent-red"}),s.jsx("p",{className:"text-accent-red mb-4",children:E}),s.jsx("button",{onClick:()=>void y(),className:"px-4 py-2 bg-accent-blue text-white rounded-lg",children:r("common.retry")})]})});const se=e=>{const t=G[e.id]??{},n=(a,o)=>L(c=>({...c,[e.id]:{...c[e.id]??{},[a]:o}}));return s.jsxs("div",{className:"mt-3 pt-3 border-t border-dark-border",children:[s.jsxs("div",{className:"text-xs text-dark-muted mb-2 flex items-center gap-1",children:[s.jsx(V,{size:12}),r("connectors.needCredentials")]}),s.jsx("div",{className:"space-y-2",children:(e.requiresEnv??[]).map(a=>s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:a.label}),s.jsx("input",{type:a.secret?"password":"text",value:t[a.key]??"",onChange:o=>n(a.key,o.target.value),placeholder:a.key,className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]},a.key))}),s.jsxs("div",{className:"flex gap-2 mt-2",children:[s.jsx("button",{onClick:()=>void J(e,t),className:"px-3 py-1.5 bg-accent-blue text-white rounded-lg text-sm",children:r("connectors.connect")}),s.jsx("button",{onClick:()=>g(null),className:"px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm",children:r("common.cancel")})]})]})},te=e=>{var a,o,c;const t=!!j[e.id],n=Y===e.id;return s.jsxs("div",{className:`bg-dark-surface border border-dark-border rounded-lg p-4 transition-opacity ${e.enabled?"":"opacity-80"}`,children:[s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"flex items-start gap-3 flex-1 min-w-0",children:[s.jsx("span",{className:`mt-0.5 shrink-0 px-2 py-1 rounded-md text-[11px] font-semibold uppercase ${e.kind==="lsp"?"bg-accent-purple/15 text-accent-purple":"bg-accent-green/15 text-accent-green"}`,children:e.kind==="lsp"?"LSP":"MCP"}),s.jsxs("div",{className:"min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("span",{className:"font-medium text-sm truncate",children:e.name}),e.custom?s.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-accent-purple/15 text-accent-purple",children:r("connectors.custom")}):null,e.official?s.jsxs("span",{title:"Official",className:"text-[10px] px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow",children:["🎖️ ",r("connectors.official")]}):null,e.scope==="cloud"?s.jsxs("span",{title:"Cloud",className:"inline-flex items-center gap-0.5 text-[10px] px-1.5 py-0.5 rounded bg-accent-blue/15 text-accent-blue",children:[s.jsx(K,{size:9}),r("connectors.cloud")]}):s.jsxs("span",{title:"Local",className:"inline-flex items-center gap-0.5 text-[10px] px-1.5 py-0.5 rounded bg-dark-hover text-dark-muted",children:[s.jsx(q,{size:9}),r("connectors.local")]}),e.language?s.jsx("span",{className:"text-[10px]",children:e.language}):null,X(e)]}),s.jsx("p",{className:"text-xs text-dark-muted mt-1 line-clamp-2",children:e.description}),s.jsxs("div",{className:"flex items-center gap-3 mt-2 text-[11px] text-dark-muted flex-wrap",children:[s.jsxs("span",{className:"inline-flex items-center gap-1",children:[s.jsx(q,{size:11}),s.jsx("code",{className:"text-[10px]",children:e.installHint})]}),e.transport&&e.transport!=="stdio"?s.jsxs("span",{className:"inline-flex items-center gap-1 text-accent-blue",children:[s.jsx(K,{size:11}),e.transport==="sse"?"SSE":"Streamable HTTP"]}):null,(a=e.languages)!=null&&a.length?s.jsxs("span",{className:"inline-flex items-center gap-1",children:[s.jsx(oe,{size:11}),e.languages.join(", ")]}):null,e.kind==="mcp"&&e.toolCount!==void 0?s.jsxs("span",{className:"inline-flex items-center gap-1",children:[s.jsx(F,{size:11}),r("connectors.toolCount",{count:e.toolCount})]}):null,(o=e.requiresEnv)!=null&&o.length?s.jsxs("span",{className:"inline-flex items-center gap-1 text-accent-yellow",children:[s.jsx(V,{size:11}),(c=e.missingEnv)!=null&&c.length?`${e.missingEnv.join(", ")} ${r("connectors.missing")}`:r("connectors.envConfigured")]}):null,e.docsUrl?s.jsxs("a",{href:e.docsUrl,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1 hover:text-accent-blue",onClick:re=>re.stopPropagation(),children:[s.jsx(de,{size:11}),r("connectors.docs")]}):null]}),e.error?s.jsx("p",{className:"text-[11px] text-accent-red mt-1",children:e.error}):null]})]}),s.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.custom?s.jsx("button",{onClick:()=>void I(e),disabled:t,title:r("connectors.removeCustom"),className:"p-1.5 rounded-lg text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors disabled:opacity-40",children:s.jsx(ce,{size:14})}):null,!e.installed&&e.enabled?s.jsxs("span",{className:"text-[11px] text-accent-blue flex items-center gap-1",children:[s.jsx(D,{size:11,className:"animate-pulse"}),r("connectors.installing")]}):null,s.jsx("button",{role:"switch","aria-checked":e.enabled,disabled:t,onClick:()=>W(e),className:`relative w-12 h-6 rounded-full transition-colors disabled:opacity-50 ${e.enabled?"bg-accent-green":"bg-dark-border"}`,children:s.jsx("span",{className:`absolute top-1 w-4 h-4 bg-white rounded-full transition-transform ${e.enabled?"left-7":"left-1"}`})})]})]}),n?se(e):null]},e.id)};return s.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden p-4",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[s.jsx(F,{size:20}),r("nav.connectors"),s.jsxs("span",{className:"text-sm font-normal text-dark-muted",children:["· ",u.filter(e=>e.enabled).length,"/",u.length]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("button",{onClick:()=>N(e=>!e),className:"flex items-center gap-2 px-3 py-1.5 bg-accent-blue text-white rounded hover:bg-accent-blue/90 transition-colors",children:[s.jsx(ae,{size:14}),r("connectors.addCustom")]}),s.jsxs("button",{onClick:()=>void y(),className:"flex items-center gap-2 px-3 py-1.5 bg-dark-surface border border-dark-border rounded hover:bg-dark-hover transition-colors",children:[s.jsx(ne,{size:14}),r("common.refresh")]})]})]}),M?s.jsxs("div",{className:"mb-4 p-4 bg-dark-surface border border-dark-border rounded-lg",children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[s.jsx(le,{size:15,className:"text-accent-purple"}),r("connectors.customTitle")]}),s.jsx("div",{className:"flex gap-1",children:[["stdio","🖥️ "+r("connectors.customLocal")],["http","🌐 HTTP"],["sse","📡 SSE"]].map(([e,t])=>s.jsx("button",{onClick:()=>i(n=>({...n,transport:e})),className:`px-3 py-1.5 rounded-lg text-xs transition-colors ${l.transport===e?"bg-accent-blue text-white":"bg-dark-bg border border-dark-border hover:bg-dark-hover"}`,children:t},e))})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:r("connectors.customName")}),s.jsx("input",{value:l.name,onChange:e=>i(t=>({...t,name:e.target.value})),placeholder:"my-server",className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]}),l.transport==="stdio"?s.jsxs(s.Fragment,{children:[s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:r("connectors.customCommand")}),s.jsx("input",{value:l.command,onChange:e=>i(t=>({...t,command:e.target.value})),placeholder:"npx -y @some/mcp-server",className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]}),s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:r("connectors.customArgs")}),s.jsx("input",{value:l.args,onChange:e=>i(t=>({...t,args:e.target.value})),placeholder:"--arg value",className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]})]}):s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:r("connectors.customUrl")}),s.jsx("input",{value:l.url,onChange:e=>i(t=>({...t,url:e.target.value})),placeholder:"https://mcp.example.com/mcp",className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]}),l.transport==="stdio"?s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:r("connectors.customEnv")}),s.jsx("input",{value:l.env,onChange:e=>i(t=>({...t,env:e.target.value})),placeholder:"KEY=value, KEY2=value2",className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]}):s.jsxs("div",{children:[s.jsx("label",{className:"block text-[11px] text-dark-muted mb-1",children:r("connectors.customHeaders")}),s.jsx("input",{value:l.headers,onChange:e=>i(t=>({...t,headers:e.target.value})),placeholder:"Authorization=Bearer xxx",className:"w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]})]}),s.jsxs("div",{className:"flex gap-2 mt-3",children:[s.jsx("button",{onClick:()=>void Z(),disabled:!!j.__add,className:"px-3 py-1.5 bg-accent-blue text-white rounded-lg text-sm disabled:opacity-50",children:j.__add?s.jsx(w,{size:14,className:"animate-spin"}):r("connectors.add")}),s.jsx("button",{onClick:()=>N(!1),className:"px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm",children:r("common.cancel")})]})]}):null,s.jsx("div",{className:"flex gap-1 mb-3",children:[["all",`${r("connectors.all")} (${u.length})`],["lsp",`LSP (${u.filter(e=>e.kind==="lsp").length})`],["mcp",`MCP (${u.filter(e=>e.kind==="mcp").length})`]].map(([e,t])=>s.jsx("button",{onClick:()=>U(e),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${k===e?"bg-accent-blue text-white":"bg-dark-surface border border-dark-border hover:bg-dark-hover"}`,children:t},e))}),s.jsx("div",{className:"flex gap-3 mb-3",children:s.jsxs("div",{className:"flex-1 relative",children:[s.jsx(R,{size:16,className:"absolute left-3 top-1/2 -translate-y-1/2 text-dark-muted"}),s.jsx("input",{type:"text",value:v,onChange:e=>O(e.target.value),placeholder:r("connectors.searchPlaceholder"),className:"w-full pl-10 pr-4 py-2 bg-dark-surface border border-dark-border rounded-lg text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none"})]})}),s.jsxs("div",{className:"flex gap-1 mb-4 flex-wrap",children:[s.jsxs("button",{onClick:()=>$(null),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${b?"bg-dark-surface border border-dark-border hover:bg-dark-hover":"bg-accent-blue text-white"}`,children:[r("connectors.all")," ",s.jsxs("span",{className:"opacity-70 text-xs",children:["(",h.length,")"]})]}),ee.map(e=>{const t=h.filter(n=>n.category===e).length;return s.jsxs("button",{onClick:()=>$(b===e?null:e),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${b===e?"bg-accent-blue text-white":"bg-dark-surface border border-dark-border hover:bg-dark-hover"}`,children:[ue[e]??e," ",s.jsxs("span",{className:"opacity-70 text-xs",children:["(",t,")"]})]},e)})]}),z?s.jsx("div",{className:"mb-4 px-3 py-2 bg-accent-red/10 border border-accent-red/30 rounded-lg text-accent-red text-sm",children:z}):null,s.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto custom-scrollbar",children:_.length===0?s.jsxs("div",{className:"text-center text-dark-muted text-sm py-10",children:[s.jsx(R,{size:24,className:"mx-auto mb-2 opacity-50"}),r("connectors.noResults")]}):s.jsx("div",{className:"space-y-2",children:_.map(te)})})]})}export{je as ConnectorsView};
@@ -1 +0,0 @@
1
- import{j as t}from"./markdown-4Q3UQbv9.js";import{a as c,ak as m,h as f,Z as j,aD as k,X as v,b8 as N,b9 as y,al as w}from"./icons-ZBQi-Ogj.js";import{N as C}from"./index-sYOn5Yyn.js";import"./react-vendor-LdB92qnf.js";import"./state-4vIOJjS6.js";import"./panels-CwhLUZOq.js";function O(){const{items:i,pendingCount:x,fetchInbox:l,resolveInbox:d,loading:p,error:u}=C(),[r,g]=c.useState("pending");c.useEffect(()=>{l()},[l]);const o=c.useMemo(()=>i.filter(e=>r==="all"||e.state===r),[i,r]),h=e=>e.kind==="approval"?{label:"需要批准",icon:y,color:"text-accent-yellow"}:e.kind==="question"?{label:"需要回答",icon:w,color:"text-accent-blue"}:{label:"通知",icon:m,color:"text-dark-muted"},b=e=>{var n;if(e.kind!=="approval")return null;const a=((n=e.data)==null?void 0:n.payload)||{};for(const s of["target","recipient","channel","url"])if(typeof a[s]=="string"&&a[s])return a[s];for(const s of["path","filePath"])if(typeof a[s]=="string"&&a[s])return a[s];return null};return t.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden p-4",children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("h2",{className:"text-lg font-semibold flex items-center gap-2",children:[t.jsx(m,{size:20,className:"text-accent-blue"}),"Inbox",x>0&&t.jsxs("span",{className:"ml-1 px-2 py-0.5 rounded-full bg-accent-yellow/20 text-accent-yellow text-xs",children:[x," 待处理"]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:"flex rounded-lg bg-dark-hover p-0.5 text-sm",children:["pending","resolved","all"].map(e=>t.jsx("button",{onClick:()=>g(e),className:`px-3 py-1 rounded-md transition-colors ${r===e?"bg-accent-blue/20 text-accent-blue":"text-dark-muted hover:text-dark-text"}`,children:e==="pending"?"待处理":e==="resolved"?"已解决":"全部"},e))}),t.jsx("button",{onClick:()=>void l(),className:"p-2 rounded-lg hover:bg-dark-hover text-dark-muted",title:"刷新",children:t.jsx(f,{size:16})})]})]}),u&&t.jsxs("div",{className:"mb-3 p-3 rounded-lg bg-accent-red/10 text-accent-red text-sm flex items-center gap-2",children:[t.jsx(j,{size:16})," ",u]}),t.jsxs("div",{className:"flex-1 overflow-y-auto space-y-2",children:[p&&o.length===0&&t.jsx("p",{className:"text-dark-muted text-center py-8",children:"加载中..."}),!p&&o.length===0&&t.jsxs("p",{className:"text-dark-muted text-center py-8",children:["没有",r==="pending"?"待处理":"","事项"]}),o.map(e=>{const a=h(e),n=a.icon;return t.jsxs("div",{className:"rounded-lg border border-dark-border bg-dark-surface p-3",children:[t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[t.jsx(n,{size:16,className:`${a.color} shrink-0`}),t.jsx("span",{className:"font-medium text-sm truncate",children:e.title}),t.jsx("span",{className:"text-xs px-1.5 py-0.5 rounded bg-dark-hover text-dark-muted shrink-0",children:e.kind})]}),t.jsx("span",{className:`text-xs shrink-0 ${e.state==="pending"?"text-accent-yellow":"text-accent-green"}`,children:e.state==="pending"?"pending":e.resolution||"resolved"})]}),e.body&&t.jsx("p",{className:"mt-1 text-xs text-dark-muted break-all",children:e.body}),e.data&&typeof e.data.toolName=="string"&&e.data.toolName&&t.jsxs("div",{className:"mt-2 p-2 rounded bg-dark-bg border border-dark-border",children:[t.jsxs("code",{className:"text-xs text-accent-blue",children:["工具: ",String(e.data.toolName)]}),typeof e.data.payload=="object"&&e.data.payload!==null&&t.jsx("pre",{className:"mt-1 text-[11px] text-dark-muted whitespace-pre-wrap max-h-24 overflow-y-auto",children:JSON.stringify(e.data.payload,null,2).slice(0,800)})]}),e.state==="pending"&&t.jsxs("div",{className:"mt-2 flex gap-2",children:[t.jsxs("button",{onClick:()=>void d(e.id,"allow"),className:"flex items-center gap-1 px-3 py-1.5 rounded-lg bg-accent-green/20 text-accent-green hover:bg-accent-green/30 text-xs font-medium",children:[t.jsx(k,{size:14})," 批准"]}),t.jsxs("button",{onClick:()=>void d(e.id,"deny"),className:"flex items-center gap-1 px-3 py-1.5 rounded-lg bg-accent-red/20 text-accent-red hover:bg-accent-red/30 text-xs font-medium",children:[t.jsx(v,{size:14})," 拒绝"]}),e.kind==="approval"&&(()=>{const s=b(e);return t.jsxs("button",{onClick:()=>void d(e.id,"always"),className:"flex items-center gap-1 px-3 py-1.5 rounded-lg bg-dark-hover text-dark-muted hover:text-dark-text text-xs font-medium",title:s?`此目标后续自动放行:${s}`:"此工具本次会话后续自动放行",children:[t.jsx(N,{size:14})," 总是允许",s?` ${s}`:""]})})()]})]},e.id)})]})]})}export{O as InboxView};
@@ -1 +0,0 @@
1
- import{j as t}from"./markdown-4Q3UQbv9.js";import{a,aj as L,h as X,Z,aD as A,bc as _,b5 as G,ar as H,D as E,X as J}from"./icons-ZBQi-Ogj.js";import{c as K,g as i,C as Q}from"./index-sYOn5Yyn.js";import"./react-vendor-LdB92qnf.js";import"./state-4vIOJjS6.js";import"./panels-CwhLUZOq.js";function W(o){return o==="wired"?"bg-emerald-500/15 text-emerald-400 border-emerald-500/30":o==="pending"||o==="pending_wiring"?"bg-amber-500/15 text-amber-400 border-amber-500/30":"bg-dark-hover text-dark-muted border-dark-border"}function de(){const{t:o}=K(),[g,U]=a.useState("installed"),[c,D]=a.useState([]),[N,M]=a.useState([]),[y,V]=a.useState(null),[m,C]=a.useState(!0),[h,w]=a.useState(null),[d,$]=a.useState(null),[k,S]=a.useState(null),[u,z]=a.useState(null),[p,v]=a.useState(null),[P,R]=a.useState(null),n=a.useCallback((e,r)=>{z({kind:e,text:r}),window.setTimeout(()=>z(null),4e3)},[]),l=a.useCallback(async()=>{C(!0),w(null);const[e,r]=await Promise.all([i.get("/api/plugins"),i.get("/api/plugins/market")]);e.success&&e.data?(D(e.data.plugins),V(e.data.schemaVersion??null)):w(e.error??"Failed to load plugins"),r.success&&r.data&&M(r.data.plugins),C(!1)},[]);a.useEffect(()=>{l()},[l]);const f=a.useMemo(()=>c.filter(e=>e.installable!==!0),[c]),j=a.useMemo(()=>[...c.filter(e=>e.installable===!0),...N.filter(e=>!c.some(r=>r.id===e.id))],[c,N]),b=a.useCallback(async(e,r,x)=>{$(e),S(r);try{const s=await x();s&&s.success===!1?n("err",String(s.error??"Request failed")):(n("ok",`${r} ${e} ✓`),await l())}catch(s){n("err",s instanceof Error?s.message:String(s))}finally{$(null),S(null)}},[l,n]),T=(e,r)=>b(e,r?"installed+activated":"installed",()=>i.post("/api/plugins/install",{id:e,activate:r})),B=e=>b(e,"activated",()=>i.post(`/api/plugins/${encodeURIComponent(e)}/activate`)),O=e=>b(e,"deactivated",()=>i.post(`/api/plugins/${encodeURIComponent(e)}/deactivate`)),q=e=>b(e,"uninstalled",()=>i.delete(`/api/plugins/${encodeURIComponent(e)}`)),F=async e=>{R(e);try{const r=await i.post(`/api/plugins/l2/provider/${encodeURIComponent(e)}`);r.success&&r.data?(n("ok",`Provider ${r.data.applied} applied to config ✓`),await l()):n("err",r.error??"Apply failed")}catch(r){n("err",r instanceof Error?r.message:String(r))}finally{R(null)}},I=e=>{const r=e==="bundled"?"bg-blue-500/15 text-blue-400 border-blue-500/30":e==="npm"?"bg-purple-500/15 text-purple-400 border-purple-500/30":e==="local"?"bg-cyan-500/15 text-cyan-400 border-cyan-500/30":"bg-dark-hover text-dark-muted border-dark-border";return t.jsx("span",{className:`px-1.5 py-0.5 rounded text-[11px] border ${r}`,children:e})};return t.jsxs("div",{className:"h-full flex flex-col min-h-0 bg-dark-bg",children:[t.jsxs("div",{className:"h-11 flex items-center gap-2 px-3 border-b border-dark-border bg-dark-bg shrink-0 select-none",children:[t.jsx(L,{size:15,className:"text-accent-blue"}),t.jsx("span",{className:"truncate text-[13px] font-medium text-dark-text",children:o("nav.plugins")}),y!==null&&t.jsxs("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-dark-hover text-dark-muted border border-dark-border",children:["schema v",y]}),t.jsx("div",{className:"flex-1"}),t.jsx("button",{onClick:()=>void l(),className:"p-1.5 rounded hover:bg-dark-hover text-dark-muted hover:text-dark-text transition-colors",title:"Refresh",children:t.jsx(X,{size:14,className:m?"animate-spin":""})})]}),t.jsx("div",{className:"flex items-center gap-1 px-3 pt-2 shrink-0",children:["installed","available"].map(e=>t.jsx("button",{onClick:()=>U(e),className:`px-3 py-1.5 rounded-t text-[12px] transition-colors ${g===e?"bg-dark-surface text-accent-blue border border-b-0 border-dark-border":"text-dark-muted hover:text-dark-text"}`,children:e==="installed"?`已安装 (${f.length})`:`可安装 (${j.length})`},e))}),t.jsxs("div",{className:"flex-1 min-h-0 overflow-y-auto px-3 pb-4",children:[h&&t.jsxs("div",{className:"mt-3 flex items-center gap-2 px-3 py-2 rounded bg-red-500/10 border border-red-500/30 text-red-400 text-[12px]",children:[t.jsx(Z,{size:14})," ",h]}),m&&!h&&t.jsx("div",{className:"mt-10 flex justify-center",children:t.jsx("div",{className:"w-5 h-5 border-2 border-accent-blue border-t-transparent rounded-full animate-spin"})}),!m&&g==="installed"&&t.jsxs("div",{className:"mt-3 space-y-2",children:[f.length===0&&t.jsx("div",{className:"mt-8 text-center text-[12px] text-dark-muted",children:"暂无插件 — 到「可安装」页从市场安装"}),f.map(e=>{const r=e.l2??[],x=e.status==="active";return t.jsxs("div",{className:"rounded-lg border border-dark-border bg-dark-surface p-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-[13px] font-medium text-dark-text truncate",children:e.name||e.id}),e.version&&t.jsx("span",{className:"text-[11px] text-dark-muted shrink-0",children:e.version}),I(e.source),t.jsx("span",{className:`px-1.5 py-0.5 rounded text-[11px] border shrink-0 ${x?"bg-emerald-500/15 text-emerald-400 border-emerald-500/30":"bg-dark-hover text-dark-muted border-dark-border"}`,children:x?"active":"installed"}),e.httpMounted&&t.jsx("span",{className:"px-1.5 py-0.5 rounded text-[11px] bg-emerald-500/15 text-emerald-400 border border-emerald-500/30 shrink-0",children:"http mounted"}),t.jsx("div",{className:"flex-1"}),t.jsx("span",{className:"text-[11px] text-dark-muted font-mono shrink-0",children:e.id})]}),e.description&&t.jsx("p",{className:"mt-1 text-[12px] text-dark-muted",children:e.description}),r.length>0&&t.jsxs("div",{className:"mt-2 flex flex-wrap gap-1.5",children:[r.map(s=>t.jsxs("span",{title:s.note||s.id,className:`px-1.5 py-0.5 rounded text-[11px] border cursor-help ${W(s.status)}`,children:[s.kind," · ",s.status,s.status==="wired"&&t.jsx(A,{size:10,className:"inline ml-0.5"})]},`${s.kind}-${s.id}`)),r.filter(s=>s.kind==="provider"&&s.status==="wired").map(s=>t.jsx("button",{disabled:P===s.id,onClick:()=>void F(s.id),className:"px-1.5 py-0.5 rounded text-[11px] border border-accent-blue/40 text-accent-blue hover:bg-accent-blue/10 disabled:opacity-50 transition-colors",title:"把插件 provider preset 写入 ProviderConfigStore(用户授权)",children:P===s.id?"applying…":"apply provider"},`apply-${s.id}`))]}),t.jsxs("div",{className:"mt-2 flex items-center gap-1.5",children:[x?t.jsxs("button",{onClick:()=>void O(e.id),disabled:d===e.id,className:"flex items-center gap-1 px-2 py-1 rounded bg-amber-500/15 border border-amber-500/30 text-amber-400 text-[11px] hover:bg-amber-500/25 disabled:opacity-50 transition-colors",children:[t.jsx(_,{size:11})," ",d===e.id?`${k}…`:"停用"]}):t.jsxs("button",{onClick:()=>void B(e.id),disabled:d===e.id,className:"flex items-center gap-1 px-2 py-1 rounded bg-emerald-500/15 border border-emerald-500/30 text-emerald-400 text-[11px] hover:bg-emerald-500/25 disabled:opacity-50 transition-colors",children:[t.jsx(G,{size:11})," ",d===e.id?`${k}…`:"激活"]}),t.jsxs("button",{onClick:()=>v(e.id),disabled:d===e.id,className:"flex items-center gap-1 px-2 py-1 rounded bg-dark-hover border border-dark-border text-dark-muted text-[11px] hover:text-red-400 hover:border-red-500/40 disabled:opacity-50 transition-colors",children:[t.jsx(H,{size:11})," 卸载"]})]})]},e.id)})]}),!m&&g==="available"&&t.jsxs("div",{className:"mt-3 space-y-2",children:[j.length===0&&t.jsx("div",{className:"mt-8 text-center text-[12px] text-dark-muted",children:"市场暂无可用插件"}),j.map(e=>t.jsxs("div",{className:"rounded-lg border border-dark-border bg-dark-surface p-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-[13px] font-medium text-dark-text truncate",children:e.name||e.id}),e.version&&t.jsx("span",{className:"text-[11px] text-dark-muted shrink-0",children:e.version}),I(e.source),t.jsx("div",{className:"flex-1"}),t.jsx("span",{className:"text-[11px] text-dark-muted font-mono shrink-0",children:e.id})]}),e.description&&t.jsx("p",{className:"mt-1 text-[12px] text-dark-muted",children:e.description}),t.jsxs("div",{className:"mt-2 flex items-center gap-1.5",children:[t.jsxs("button",{onClick:()=>void T(e.id,!0),disabled:d===e.id,className:"flex items-center gap-1 px-2 py-1 rounded bg-accent-blue/20 border border-accent-blue/40 text-accent-blue text-[11px] hover:bg-accent-blue/30 disabled:opacity-50 transition-colors",children:[t.jsx(E,{size:11})," ",d===e.id?`${k}…`:"安装并激活"]}),t.jsxs("button",{onClick:()=>void T(e.id,!1),disabled:d===e.id,className:"flex items-center gap-1 px-2 py-1 rounded bg-dark-hover border border-dark-border text-dark-muted text-[11px] hover:text-dark-text disabled:opacity-50 transition-colors",children:[t.jsx(E,{size:11})," 仅安装"]})]})]},e.id))]})]}),u&&t.jsxs("div",{className:`fixed bottom-4 right-4 z-50 flex items-center gap-2 px-3 py-2 rounded-lg border text-[12px] shadow-lg ${u.kind==="ok"?"bg-emerald-500/15 border-emerald-500/30 text-emerald-400":"bg-red-500/15 border-red-500/30 text-red-400"}`,children:[u.kind==="ok"?t.jsx(A,{size:13}):t.jsx(J,{size:13})," ",u.text]}),t.jsx(Q,{isOpen:p!==null,title:"卸载插件",message:`确定要卸载 ${p} 吗?插件文件将被删除(bundled 除外)。`,onConfirm:()=>{p&&q(p),v(null)},onClose:()=>v(null)})]})}export{de as PluginsView};