Files
op-packages/luci-app-honk/root/etc/honk/doona/assets/Policies-DZOKUNEx.js
T

3 lines
42 KiB
JavaScript

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Arrange-Bbxnsdc8.js","./vendor-react-Bf71BWbF.js","./index-BOpK0UVB.js","./index-tAbIWhIz.css","./Virtualizer-BIsXGNLZ.js","./ListLayout-CkBMjK9o.js","./DaeCode-B8yPDjSE.js","./policyText-y7dbn7hu.js","./openGroup-B1VdMhOs.js","./useFilter-6_o4NyOf.js","./ActionGroup-BU73NzbX.js","./useGridSelectionCheckbox-C4VxQajJ.js","./nav-BASDWt23.js","./Arrange-Dd3j3leY.css"])))=>i.map(i=>d[i]);
import{bT as it,bU as ot,bV as rt,bW as pe,bX as te,bY as Ie,bZ as nt,b_ as at,b$ as lt,c0 as st,c1 as je,c2 as re,c3 as ne,c4 as me,c5 as G,c6 as W,c7 as q,c8 as ee,c9 as ct,ca as ae,cb as Ke,cc as dt,cd as ut,ce as He,cf as pt,cg as de,ch as fe,ci as Oe,cj as ue,ck as ft,cl as ke,cm as Se,cn as he,co as be,cp as Fe,cq as ht,cr as bt,cs as mt,ct as Be,cu as gt,cv as yt,cw as le,cx as vt,cy as xt,cz as $t,cA as kt,cB as wt,cC as Pt,cD as It,cE as St,cF as Et,cG as Dt,cH as Mt,cI as jt,M as Ct,b as ce,cJ as Nt,a4 as _t,bc as Ge,bB as Tt,a_ as Lt,K as zt,cK as At,aW as Rt,a5 as Kt,u as B,a6 as Ht,a as Ot,ak as we,bC as Ft,cL as ge,c as ye,T as Ee,br as Bt,cM as Gt,cN as Ue,ah as Ve,I as Ut,B as Y,aj as Vt,bd as Wt,aa as qt,ae as Yt,ac as ve,ad as Xt,bA as Jt,cO as Qt,ag as Zt,cP as ei,bj as ti,bk as ii,cQ as oi,bL as ri,cR as We,cS as qe,R as ni,bm as U,cT as ai,cU as li,bg as si,cV as ci,cW as di,A as ui,E as Ye,cX as pi,bx as fi,j as Xe,aN as hi,bQ as bi,aO as mi,aJ as se,bw as gi,cY as yi,aK as vi,bs as xi,cZ as $i,_ as ki}from"./index-BOpK0UVB.js";import{r as f,$ as S,j as c}from"./vendor-react-Bf71BWbF.js";import{M as wi}from"./ActionGroup-BU73NzbX.js";import{$ as Pi,a as Ii,b as Si,c as Ei,d as Di}from"./useGridSelectionCheckbox-C4VxQajJ.js";import{$ as Mi,a as F,b as xe,c as J,d as ji}from"./Virtualizer-BIsXGNLZ.js";import{$ as Ci}from"./useFilter-6_o4NyOf.js";import{g as Ni,a as _i}from"./policyText-y7dbn7hu.js";import{P as Ti,o as Li}from"./openGroup-B1VdMhOs.js";import{p as Je}from"./nav-BASDWt23.js";const De=new WeakMap;function Pe(i,t){let{id:e}=De.get(i)??{};if(!e)throw new Error("Unknown list");return`${e}-${zi(t)}`}function zi(i){return typeof i=="string"?i.replace(/\s*/g,""):""+i}function Ai(i,t,e){let{isVirtualized:o,keyboardDelegate:r,layoutDelegate:n,onAction:s,disallowTypeAhead:l,linkBehavior:a="action",keyboardNavigationBehavior:p="arrow",escapeKeyBehavior:d="clearSelection",shouldSelectOnPressUp:v}=i;!i["aria-label"]&&!i["aria-labelledby"]&&console.warn("An aria-label or aria-labelledby prop is required for accessibility.");let{listProps:h}=it({selectionManager:t.selectionManager,collection:t.collection,disabledKeys:t.disabledKeys,ref:e,keyboardDelegate:r,layoutDelegate:n,isVirtualized:o,selectOnFocus:t.selectionManager.selectionBehavior==="replace",shouldFocusWrap:i.shouldFocusWrap,linkBehavior:a,disallowTypeAhead:l,autoFocus:i.autoFocus,escapeKeyBehavior:d,UNSTABLE_focusOnEntry:i.UNSTABLE_focusOnEntry}),g=ot(i.id);De.set(t,{id:g,onAction:s,linkBehavior:a,keyboardNavigationBehavior:p,shouldSelectOnPressUp:v});let x=Pi({selectionManager:t.selectionManager,hasItemActions:!!s}),P=rt(e,{isDisabled:t.collection.size!==0}),m=pe(i,{labelable:!0}),b=te(m,{role:"grid",id:g,"aria-multiselectable":t.selectionManager.selectionMode==="multiple"?"true":void 0},t.collection.size===0?{tabIndex:P?-1:0}:h,x);return o&&(b["aria-rowcount"]=t.collection.size,b["aria-colcount"]=1),Ii({},t),{gridProps:b}}const Ce={expand:{ltr:"ArrowRight",rtl:"ArrowLeft"},collapse:{ltr:"ArrowLeft",rtl:"ArrowRight"}};function Ri(i,t,e){let{node:o,isVirtualized:r,focusMode:n="row",allowsArrowNavigation:s}=i,{direction:l}=Ie(),{onAction:a,linkBehavior:p,keyboardNavigationBehavior:d,shouldSelectOnPressUp:v}=De.get(t),h=nt(),g=f.useRef(null),x=()=>{if(e.current!==null){if(n==="child"){if(je(e.current)&&e.current!==re(ne(e.current)))return;let D=me(e.current,{tabbable:!0}).firstChild();if(D){G(D),W(D,{containingElement:q(D)});return}}(g.current!=null&&o.key!==g.current||!je(e.current))&&G(e.current)}},P={},m=i.hasChildItems,b=t.selectionManager.isLink(o.key);if(o!=null&&"expandedKeys"in t){let u=t.collection.getChildren?.(o.key);m=m||[...u??[]].length>1,a==null&&!b&&t.selectionManager.selectionMode==="none"&&m&&(a=()=>t.toggleKey(o.key));let D=m?t.expandedKeys.has(o.key):void 0,w=1,j=o.index;if(o.level>=0&&o?.parentKey!=null){let C=t.collection.getItem(o.parentKey);if(C){let z=Ki(C,t.collection);w=[...z].filter(R=>R.type==="item").length,j>0&&z[0].type!=="item"&&(j-=1)}}else w=[...t.collection].filter(C=>C.level===0&&C.type==="item").length;P={"aria-expanded":D,"aria-level":o.level+1,"aria-posinset":j+1,"aria-setsize":w}}let{itemProps:$,...I}=at({selectionManager:t.selectionManager,key:o.key,ref:e,isVirtualized:r,shouldSelectOnPressUp:i.shouldSelectOnPressUp||v,onAction:a||o.props?.onAction?lt(o.props?.onAction,a?()=>a(o.key):void 0):void 0,focus:x,linkBehavior:p}),M=u=>{let D=re(ne(e.current));if(!ae(u.currentTarget,ee(u))||!e.current||!D)return;let w=me(e.current);if(w.currentNode=D,!Ne(u,t,o,m,l,D,e.current,s))switch(u.key){case"ArrowLeft":if(d==="arrow"){let j=l==="rtl"?w.nextNode():w.previousNode();if(j)u.preventDefault(),u.stopPropagation(),G(j),W(j,{containingElement:q(e.current)});else if(u.preventDefault(),u.stopPropagation(),l==="rtl")G(e.current),W(e.current,{containingElement:q(e.current)});else{w.currentNode=e.current;let C=_e(w);C&&(G(C),W(C,{containingElement:q(e.current)}))}}break;case"ArrowRight":if(d==="arrow"){let j=l==="rtl"?w.previousNode():w.nextNode();if(j)u.preventDefault(),u.stopPropagation(),G(j),W(j,{containingElement:q(e.current)});else if(u.preventDefault(),u.stopPropagation(),l==="ltr")G(e.current),W(e.current,{containingElement:q(e.current)});else{w.currentNode=e.current;let C=_e(w);C&&(G(C),W(C,{containingElement:q(e.current)}))}}break;case"ArrowUp":case"ArrowDown":!u.altKey&&ae(e.current,ee(u))&&(u.stopPropagation(),u.preventDefault(),e.current.parentElement?.dispatchEvent(new KeyboardEvent(u.nativeEvent.type,u.nativeEvent)));break}},E=u=>{if(g.current=o.key,ee(u)!==e.current){ct()||t.selectionManager.setFocusedKey(o.key);return}n==="child"&&u.relatedTarget&&ae(e.current,u.relatedTarget)||requestAnimationFrame(()=>{n==="child"&&re(ne(e.current))===e.current&&x()})},N=u=>{let D=re(ne(e.current));if(!(!ae(u.currentTarget,ee(u))||!e.current||!D)){if(d==="tab"){if(ee(u)!==e.current&&u.key!=="Tab"){u.stopPropagation();return}if(Ne(u,t,o,m,l,D,e.current,s))return}switch(u.key){case"Tab":if(d==="tab"){let w=me(e.current,{tabbable:!0});w.currentNode=D,(u.shiftKey?w.previousNode():w.nextNode())&&u.stopPropagation()}}}},L=st(o.props),_=I.hasAction?L:{},T=te($,_,{role:"row",onKeyDownCapture:d==="arrow"||s?M:void 0,onFocus:E,"aria-label":o["aria-label"]||o.textValue||void 0,"aria-selected":t.selectionManager.canSelectItem(o.key)?t.selectionManager.isSelected(o.key):void 0,"aria-disabled":t.selectionManager.isDisabled(o.key)||void 0,"aria-labelledby":h&&(o["aria-label"]||o.textValue)?`${Pe(t,o.key)} ${h}`:void 0,id:Pe(t,o.key)});n==="child"&&s&&d==="tab"&&(T.tabIndex=-1);let k=T.onKeyDown;if(T.onKeyDown=u=>{N(u),u.isPropagationStopped()||k?.(u)},r){let{collection:u}=t,D=[...u];T["aria-rowindex"]=D.find(w=>w.type==="section")?[...u.getKeys()].filter(w=>u.getItem(w)?.type!=="section").findIndex(w=>w===o.key)+1:o.index+1}let y={role:"gridcell","aria-colindex":1};return{rowProps:{...te(T,P)},gridCellProps:y,descriptionProps:{id:h},...I}}function Ne(i,t,e,o,r,n,s,l){if(!("expandedKeys"in t)||!l&&n!==s)return!1;if(i.key===Ce.expand[r]&&t.selectionManager.focusedKey===e.key&&o&&!t.expandedKeys.has(e.key))return t.toggleKey(e.key),i.stopPropagation(),!0;if(i.key===Ce.collapse[r]&&t.selectionManager.focusedKey===e.key){if(o&&t.expandedKeys.has(e.key))return t.toggleKey(e.key),i.stopPropagation(),!0;if(!t.expandedKeys.has(e.key)&&e.parentKey&&t.collection.getItem(e.parentKey)?.type==="item")return t.selectionManager.setFocusedKey(e.parentKey),i.stopPropagation(),!0}return!1}function _e(i){let t=null,e=null;do e=i.lastChild(),e&&(t=e);while(e);return t}function Ki(i,t){let e=t.getChildren?.(i.key),o=e?Array.from(e):[],r=o.length>0?o[0]:null,n=[];for(;r;)n.push(r),r=r.nextKey!=null?t.getItem(r.nextKey):null;return n}function Hi(i,t){let{key:e}=i;const{checkboxProps:o}=Si(i,t);return{checkboxProps:{...o,"aria-labelledby":`${o.id} ${Pe(t,e)}`}}}const Oi=f.createContext(null),Fi=f.forwardRef(function(t,e){return[t,e]=Ke(t,e,Oi),S.createElement(dt,{content:S.createElement(ut,t)},o=>S.createElement(Bi,{props:t,collection:o,gridListRef:e}))});function Bi({props:i,collection:t,gridListRef:e}){[i,e]=Ke(i,e,Be);let{shouldUseVirtualFocus:o,filter:r,disallowTypeAhead:n,UNSTABLE_focusOnEntry:s,...l}=i,{dragAndDropHooks:a,keyboardNavigationBehavior:p="arrow",layout:d="stack",orientation:v="vertical"}=i,{CollectionRoot:h,isVirtualized:g,layoutDelegate:x,dropTargetDelegate:P}=f.useContext(ue),m=vt({...l,collection:t,children:void 0,layoutDelegate:x}),b=xt(m,r),$=$t({usage:"search",sensitivity:"base"}),{disabledBehavior:I,disabledKeys:M}=b.selectionManager,{direction:E}=Ie(),N=f.useMemo(()=>new kt({collection:b.collection,collator:$,ref:e,disabledKeys:M,disabledBehavior:I,layoutDelegate:x,layout:d,orientation:v,direction:E}),[b.collection,e,d,v,M,I,x,$,E]),{gridProps:L}=Ai({...l,keyboardDelegate:N,keyboardNavigationBehavior:d==="grid"?"tab":p,isVirtualized:g,shouldSelectOnPressUp:i.shouldSelectOnPressUp,disallowTypeAhead:n,UNSTABLE_focusOnEntry:s},b,e),_=b.selectionManager,T=!!a?.useDraggableCollectionState,k=!!a?.useDroppableCollectionState;f.useRef(T),f.useRef(k),f.useEffect(()=>{},[T,k]);let y,u,D,w=!1,j=null,C=f.useRef(null);if(T&&a){y=a.useDraggableCollectionState({collection:b.collection,selectionManager:_,preview:a.renderDragPreview?C:void 0}),a.useDraggableCollection({},y,e);let V=a.DragPreview;j=a.renderDragPreview?S.createElement(V,{ref:C},a.renderDragPreview):null}if(k&&a){u=a.useDroppableCollectionState({collection:b.collection,selectionManager:_});let V=a.dropTargetDelegate||P||new a.ListDropTargetDelegate(t,e,{layout:d,direction:E,orientation:v});D=a.useDroppableCollection({keyboardDelegate:N,dropTargetDelegate:V},u,e),w=u.isDropTarget({type:"root"})}let{focusProps:z,isFocused:R,isFocusVisible:K}=ke(),O=b.collection.size===0,H={isDropTarget:w,orientation:v,isEmpty:O,isFocused:R,isFocusVisible:K,layout:d,state:b},Q=he({...i,children:void 0,defaultClassName:"react-aria-GridList",values:H}),ie=null,oe=null;if(O&&i.renderEmptyState){let V=i.renderEmptyState(H);ie=S.createElement("div",{role:"row","aria-rowindex":1,style:{display:"contents"}},S.createElement("div",{role:"gridcell",style:{display:"contents"}},V))}let Z=pe(i,{global:!0});return S.createElement(wt,null,S.createElement(be.div,{...te(Z,Q,L,z,D?.collectionProps,oe),ref:e,slot:i.slot||void 0,onScroll:i.onScroll,"data-drop-target":w||void 0,"data-empty":O||void 0,"data-focused":R||void 0,"data-focus-visible":K||void 0,"data-layout":d,"data-orientation":v},S.createElement(Fe,{values:[[de,b],[fe,{dragAndDropHooks:a,dragState:y,dropState:u}],[Pt,{render:Ui}]]},k&&S.createElement(qi,null),S.createElement(It,null,S.createElement(h,{collection:b.collection,scrollRef:e,persistedKeys:Et(_,a,u),renderDropIndicator:St(a,u)}))),ie,j))}const Gi=He(pt,function(t,e,o){let r=f.useContext(de),{dragAndDropHooks:n,dragState:s,dropState:l}=f.useContext(fe),a=Oe(e),{isVirtualized:p}=f.useContext(ue),d=s&&!(s.isDisabled||s.selectionManager.isDisabled(o.key)),{rowProps:v,gridCellProps:h,descriptionProps:g,...x}=Ri({node:o,shouldSelectOnPressUp:!!s,isVirtualized:p,focusMode:t.focusMode,allowsArrowNavigation:t.allowsArrowNavigation},r,a),{hoverProps:P,isHovered:m}=ft({isDisabled:!x.allowsSelection&&!x.hasAction&&!d,onHoverStart:o.props.onHoverStart,onHoverChange:o.props.onHoverChange,onHoverEnd:o.props.onHoverEnd}),{isFocusVisible:b,focusProps:$}=ke(),{isFocusVisible:I,focusProps:M}=ke({within:!0}),{checkboxProps:E}=Hi({key:o.key},r),N=r.selectionManager.disabledBehavior==="all"&&x.isDisabled?{isDisabled:!0}:{},L=null;s&&n&&(L=n.useDraggableItem({key:o.key,hasDragButton:!0},s));let _=null,T=f.useRef(null),{visuallyHiddenProps:k}=Se();l&&n&&(_=n.useDropIndicator({target:{type:"item",key:o.key,dropPosition:"on"}},l,T));let y=s&&s.isDragging(o.key),u=he({...t,id:void 0,children:o.rendered,defaultClassName:"react-aria-GridListItem",values:{...x,isHovered:m,isFocusVisible:b,isFocusVisibleWithin:I,selectionMode:r.selectionManager.selectionMode,selectionBehavior:r.selectionManager.selectionBehavior,allowsDragging:!!s,isDragging:y,isDropTarget:_?.isDropTarget,id:o.key,state:r}}),D=f.useRef(null);f.useEffect(()=>{s&&!D.current&&console.warn('Draggable items in a GridList must contain a <Button slot="drag"> element so that keyboard and screen reader users can drag them.')},[]),f.useEffect(()=>{o.textValue},[o.textValue]);let w=pe(t,{global:!0});return delete w.id,delete w.onClick,S.createElement(S.Fragment,null,_&&!_.isHidden&&S.createElement("div",{role:"row",style:{position:"absolute"}},S.createElement("div",{role:"gridcell"},S.createElement("div",{role:"button",...k,..._?.dropIndicatorProps,ref:T}))),S.createElement(be.div,{...te(w,u,v,$,M,P,L?.dragProps),ref:a,"data-selected":x.isSelected||void 0,"data-disabled":x.isDisabled||void 0,"data-hovered":m||void 0,"data-focused":x.isFocused||void 0,"data-focus-visible":b||void 0,"data-focus-visible-within":I||void 0,"data-pressed":x.isPressed||void 0,"data-allows-dragging":!!s||void 0,"data-dragging":y||void 0,"data-drop-target":_?.isDropTarget||void 0,"data-selection-mode":r.selectionManager.selectionMode==="none"?void 0:r.selectionManager.selectionMode},S.createElement("div",{...h,style:{display:"contents"}},S.createElement(Fe,{values:[[Ei,{slots:{[le]:{},selection:E}}],[Di,{slots:{[le]:{},selection:E}}],[ht,{slots:{[le]:N,drag:{...L?.dragButtonProps,ref:D,style:{pointerEvents:"none"}}}}],[bt,{slots:{[le]:{},description:g}}],[ue,mt],[de,null],[Be,null],[gt,null],[yt,{isSelected:x.isSelected}]]},u.children))))});function Ui(i,t){t=Oe(t);let{dragAndDropHooks:e,dropState:o}=f.useContext(fe),r=f.useRef(null),{dropIndicatorProps:n,isHidden:s,isDropTarget:l}=e.useDropIndicator(i,o,r);return s?null:S.createElement(Wi,{...i,dropIndicatorProps:n,isDropTarget:l,buttonRef:r,ref:t})}function Vi(i,t){let{dropIndicatorProps:e,isDropTarget:o,buttonRef:r,...n}=i,{visuallyHiddenProps:s}=Se(),l=he({...n,defaultClassName:"react-aria-DropIndicator",values:{isDropTarget:o}});return S.createElement(be.div,{...l,role:"row",ref:t,"data-drop-target":o||void 0},S.createElement("div",{role:"gridcell"},S.createElement("div",{...s,role:"button",...e,ref:r}),l.children))}const Wi=f.forwardRef(Vi);function qi(){let{dragAndDropHooks:i,dropState:t}=f.useContext(fe),e=f.useRef(null),{dropIndicatorProps:o}=i.useDropIndicator({target:{type:"root"}},t,e),r=t.isDropTarget({type:"root"}),{visuallyHiddenProps:n}=Se();return!r&&o["aria-hidden"]?null:S.createElement("div",{role:"row","aria-hidden":o["aria-hidden"],style:{position:"absolute"}},S.createElement("div",{role:"gridcell"},S.createElement("div",{role:"button",...n,...o,ref:e})))}He(Dt,function(t,e,o){let r=f.useContext(de),{isVirtualized:n}=f.useContext(ue),{isLoading:s,onLoadMore:l,scrollOffset:a,...p}=t,d=f.useRef(null),v=f.useMemo(()=>({onLoadMore:l,collection:r?.collection,sentinelRef:d,scrollOffset:a}),[l,a,d,r?.collection]);Mt(v,d);let h=he({...p,id:void 0,children:o.rendered,defaultClassName:"react-aria-GridListLoadingIndicator",values:void 0});return S.createElement(S.Fragment,null,S.createElement("div",{style:{position:"relative",width:0,height:0},inert:jt(!0)},S.createElement("div",{"data-testid":"loadMoreSentinel",ref:d,style:{position:"absolute",height:1,width:1}})),s&&h.children&&S.createElement(be.div,{...h,...pe(t,{global:!0}),role:"row",ref:e},S.createElement("div",{"aria-colindex":n?1:void 0,role:"gridcell"},h.children)))});const A={minItemSize:new F(200,200),maxItemSize:new F(1/0,1/0),preserveAspectRatio:!1,minSpace:new F(18,18),maxSpace:1/0,maxColumns:1/0,dropIndicatorThickness:2,loaderHeight:48};class Yi extends Mi{shouldInvalidateLayoutOptions(t,e){return t.maxColumns!==e.maxColumns||t.dropIndicatorThickness!==e.dropIndicatorThickness||t.preserveAspectRatio!==e.preserveAspectRatio||!(t.minItemSize||A.minItemSize).equals(e.minItemSize||A.minItemSize)||!(t.maxItemSize||A.maxItemSize).equals(e.maxItemSize||A.maxItemSize)||!(t.minSpace||A.minSpace).equals(e.minSpace||A.minSpace)||t.maxHorizontalSpace!==e.maxHorizontalSpace||t.loaderHeight!==e.loaderHeight||t.direction!==e.direction}update(t){let{minItemSize:e=A.minItemSize,maxItemSize:o=A.maxItemSize,preserveAspectRatio:r=A.preserveAspectRatio,minSpace:n=A.minSpace,maxHorizontalSpace:s=A.maxSpace,maxColumns:l=A.maxColumns,dropIndicatorThickness:a=A.dropIndicatorThickness,loaderHeight:p=A.loaderHeight,direction:d="ltr"}=t.layoutOptions||{};this.dropIndicatorThickness=a,this.direction=d;let v=this.virtualizer.size.width,h=Math.min(o.width,v),g=Number.isFinite(o.height)?o.height:Math.floor(e.height/e.width*h),x=Math.floor(v/(e.width+n.width)),P=Math.max(1,Math.min(l,x));this.numColumns=P;let m=v-n.width*Math.max(0,P),b=Math.floor(m/P);b=Math.max(e.width,Math.min(h,b));let $=(b-e.width)/Math.max(1,h-e.width),I=e.height+Math.floor((g-e.height)*$);I=Math.max(e.height,Math.min(g,I));let M=Math.min(Math.max(s,n.width),Math.floor((v-P*b)/(P+1)));this.gap=new F(M,n.height),this.margin=Math.floor((v-P*b-M*(P+1))/2);let E=this.virtualizer.collection,N=E.size,L=E.getLastKey();for(let j=0;j<2&&L!=null;j++){if(E.getItem(L)?.type==="skeleton"){N++;break}L=E.getKeyBefore(L)}let _=Math.ceil(N/P),T=E[Symbol.iterator](),k=_>0?n.height:0,y=new Map,u=null,D=0;for(let j=0;j<_;j++){let C=0,z=[];for(let R=0;R<P;R++){let K=u||T.next().value;if(!K)break;if(K.type==="loader")continue;K.type==="skeleton"&&(u=K);let O=u?`${u.key}-${D++}`:K.key,H=this.layoutInfos.get(O),Q=K;u&&(Q=H&&H.content.key===O?H.content:{...u,key:O});let ie=M+R*(b+M)+this.margin,oe=I,Z=!r;H&&Z&&(oe=H.rect.height,Z=t.layoutOptionsChanged||t.sizeChanged||H.estimatedSize||H.content!==Q);let V=new J(ie,k,b,oe),X=new xe(K.type,O,V);X.estimatedSize=Z,X.allowOverflow=!0,X.content=Q,y.set(O,X),z.push(X),C=Math.max(C,X.rect.height)}for(let R of z)R.rect.height=C;k+=C+n.height,u&&j===_-1&&k<this.virtualizer.size.height&&_++}let w=E.getItem(E.getLastKey());if(w?.type==="loader"){(D>0||!w.props.isLoading)&&(p=0);const j=v-M*2;let C=new J(M,k,j,p),z=new xe("loader",w.key,C);y.set(w.key,z),k=z.rect.maxY}this.layoutInfos=y,this.contentSize=new F(this.virtualizer.size.width,k)}getLayoutInfo(t){return this.layoutInfos.get(t)||null}getContentSize(){return this.contentSize}getVisibleLayoutInfos(t){let e=[];for(let o of this.layoutInfos.values())(o.rect.intersects(t)||this.virtualizer.isPersistedKey(o.key)||o.type==="loader")&&e.push(o);return e}updateItemSize(t,e){let o=this.layoutInfos.get(t);if(!e||!o)return!1;if(e.height!==o.rect.height){let r=o.copy();return r.rect.height=e.height,r.estimatedSize=!1,this.layoutInfos.set(t,r),!0}return!1}getDropTargetFromPoint(t,e,o){if(this.layoutInfos.size===0)return{type:"root"};t+=this.virtualizer.visibleRect.x,e+=this.virtualizer.visibleRect.y,this.direction==="rtl"&&this.numColumns>1&&(t=this.contentSize.width-t);let r=null;if(this.numColumns===1){let d=new J(t,Math.max(0,e-this.gap.height),1,Math.max(1,this.gap.height*2)),v=this.getVisibleLayoutInfos(d),h=1/0;for(let g of v){if(!g.rect.intersects(d))continue;let x=Math.abs(g.rect.y-e),P=Math.abs(g.rect.maxY-e),m=Math.min(x,P);m<h&&(h=m,r=g.key)}}else{let d=new J(Math.max(0,t-this.gap.width),e,this.gap.width*2,1),v=this.getVisibleLayoutInfos(d),h=1/0;for(let g of v){if(!g.rect.intersects(d))continue;let x=Math.abs(g.rect.x-t),P=Math.abs(g.rect.maxX-t),m=Math.min(x,P);m<h&&(h=m,r=g.key)}}let n=r!=null?this.getLayoutInfo(r):null;if(!n)return{type:"root"};let s={type:"item",key:n.key,dropPosition:"on"},l=this.numColumns===1?e:t,a=this.numColumns===1?n.rect.y:n.rect.x,p=this.numColumns===1?n.rect.height:n.rect.width;if(o(s))l<a+5?s.dropPosition="before":l>a+p-5&&(s.dropPosition="after");else{let d=a+p/2;l<=d&&o({...s,dropPosition:"before"})?s.dropPosition="before":l>=d&&o({...s,dropPosition:"after"})&&(s.dropPosition="after")}return s}getDropTargetLayoutInfo(t){let e=this.getLayoutInfo(t.key),o;return this.numColumns===1?o=new J(e.rect.x,t.dropPosition==="before"?e.rect.y-this.gap.height/2-this.dropIndicatorThickness/2:e.rect.maxY+this.gap.height/2-this.dropIndicatorThickness/2,e.rect.width,this.dropIndicatorThickness):o=new J(t.dropPosition==="before"?e.rect.x-this.gap.width/2-this.dropIndicatorThickness/2:e.rect.maxX+this.gap.width/2-this.dropIndicatorThickness/2,e.rect.y,this.dropIndicatorThickness,e.rect.height),new xe("dropIndicator",t.key+":"+t.dropPosition,o)}constructor(...t){super(...t),this.gap=A.minSpace,this.dropIndicatorThickness=2,this.numColumns=0,this.direction="ltr",this.contentSize=new F,this.layoutInfos=new Map,this.margin=0}}class Xi extends Yi{useLayoutOptions(){let{direction:t}=Ie();return f.useMemo(()=>({direction:t}),[t])}}const Ji={default_member_id:"policy.cfg.defaultMember",final_outbound:"policy.cfg.finalOutbound",check_url:"policy.cfg.checkUrl",check_interval:"policy.cfg.checkInterval",tolerance:"policy.cfg.tolerance",idle_timeout:"policy.cfg.idleTimeout",interrupt_connections:"policy.cfg.interruptConnections"},Te={check_interval:"policy.cfg.seconds",idle_timeout:"policy.cfg.seconds",tolerance:"policy.cfg.millis"};function Qi(i){return Object.entries(i.config).filter(([,t])=>t!==null).map(([t,e])=>{const o=Ji[t]??{key:"flow.f.input",params:{name:t}};return typeof e=="boolean"?[o,{key:e?"ui.yes":"ui.no"}]:typeof e=="number"&&Te[t]?[o,{key:Te[t],params:{n:e}}]:t==="default_member_id"?[o,i.members.find(r=>r.id===e)?.name??String(e)]:[o,String(e)]})}const Qe=["check_url","check_interval","tolerance","idle_timeout"],Zi=["check_interval","tolerance","idle_timeout"];function Ze(i){return Qe.filter(t=>i.capabilities.mutable_config.includes(t))}const $e=i=>i===null?"":String(i),Le=i=>({check_url:i.config.check_url??"",check_interval:$e(i.config.check_interval),tolerance:$e(i.config.tolerance),idle_timeout:$e(i.config.idle_timeout)}),eo=(i,t,e)=>t==="tolerance"&&i.config.tolerance===null&&e==="";function to(i,t){const e={...i.value},o={...i.theirs};for(const r of Qe)t[r]!==i.base[r]&&(i.value[r]===i.base[r]?e[r]=t[r]:i.value[r]!==t[r]&&(o[r]=t[r]));return{base:t,value:e,theirs:o}}const io={check_interval:1,tolerance:0,idle_timeout:0};function ze(i,t){const e=t.trim();return e?i==="check_url"?!zt(e):!/^\d+$/.test(e)||!Number.isSafeInteger(Number(e))||Number(e)<io[i]:!1}function oo(i,t,e){const o=Ze(i),r=[],n=l=>l.trim()||null,s=l=>l.trim()?Number(l.trim()):null;if(o.includes("check_url")&&n(e.check_url)!==n(t.check_url)){const l="/config/check_url";r.push({op:"test",path:l,value:n(t.check_url)},{op:"replace",path:l,value:n(e.check_url)})}for(const l of Zi){if(!o.includes(l)||s(e[l])===s(t[l]))continue;const a=`/config/${l}`;r.push({op:"test",path:a,value:s(t[l])},{op:"replace",path:a,value:s(e[l])})}return r}function ro(i,t,e=!0){if(!("partialResult"in i))return ce(i,t,e);const{completed:o,total:r,cause:n}=i,s=t("policy.probePartial",{done:o,n:r,error:ce(n,t,e)});return t("ui.valuePair",{label:ce(i,t,e),value:s})}const Ae={unknown:0,healthy:1,unavailable:2};function no(i){const t=new Map;for(const o of i.results){const r=t.get(o.member_id);(!r||Ae[o.state]>Ae[r])&&t.set(o.member_id,o.state)}const e=[...t.values()];return{key:i.selection_changed.tcp||i.selection_changed.udp?"policy.probeChanged":"policy.probeUnchanged",params:{healthy:e.filter(o=>o==="healthy").length,unavailable:e.filter(o=>o==="unavailable").length,unknown:e.filter(o=>o==="unknown").length}}}const ao={data:"policy.purpose.data",dns:"policy.purpose.dns",shared:"policy.purpose.shared"};function lo(i,t){if(i.kind==="group")return{text:t("ui.group"),badge:!0};const e=Ge(i.health);return e!=null?{text:Lt(e,t),tone:Tt(e)}:i.health?.state==="unavailable"?{text:t("ui.unavailable"),tone:"err"}:{text:"—"}}function so(i,t){return i.map(e=>({id:e.id,name:e.name,tcp:Ge(e.health),unavailable:e.health?.state==="unavailable",healthy:e.health?.state==="healthy",status:lo(e,t),description:e.health&&(e.health.transport!=="tcp"||e.health.purpose!=="data")?t("policy.observedVia",{transport:t(e.health.transport==="udp"?"ui.udp":"ui.tcp"),purpose:_t(ao,e.health.purpose,t)}):" ",region:Nt(e.name)??"?"}))}function co(i,t,e,o){const r=i.runtime.selection.tcp?.member_id,n=i.runtime.selection.udp?.member_id,s=i.policy.kind==="selector"&&i.capabilities.can_select,l=!s&&i.capabilities.can_override,a=l&&[i.runtime.selection.tcp,i.runtime.selection.udp].some(g=>g?.source==="override"),p=i.capabilities.mutable_config.includes("interrupt_connections"),d=t.filter(g=>g.healthy).length,v=t.filter(g=>g.unavailable).length,h=t.length-d-v;return{id:i.id,name:i.name,policy:Ni(i.policy,o),selected:e==="tcp"?r:e==="udp"?n:r===n?r:void 0,marks:e==="both"&&r&&n&&r!==n?{[r]:o("ui.tcp"),[n]:o("ui.udp")}:{},selectable:s,overridable:l,pinned:a,interruptable:p,interrupt:i.config.interrupt_connections===!0,interruptUnset:i.config.interrupt_connections===null,showNetwork:s||l||r!==n,networkLabel:o("policy.network",{name:i.name}),healthy:o("policy.healthy",{n:d}),down:v?o("policy.down",{n:v}):null,untested:h?o("policy.untested",{n:h}):null,overrideTone:a?"neutral":"ok",overrideText:o(a?"policy.overridden":"policy.automatic"),fields:Qi(i).filter(([g])=>!(p&&g==="policy.cfg.interruptConnections")).map(([g,x])=>[typeof g=="string"?o(g):o(g.key,g.params),typeof x=="string"?x:o(x.key,x.params)])}}function uo(i,t,e,o,r){const n=i.length>12,s=new Map;for(const p of i)s.set(p.region,(s.get(p.region)??0)+1);const l=n?i.filter(p=>(!t.q||e(p.name,t.q))&&(t.region==="all"||p.region===t.region)&&(!t.aliveOnly||p.healthy)):i;n&&t.sort==="latency"?l.sort((p,d)=>At(p.tcp,d.tcp)):n&&t.sort==="name"&&l.sort((p,d)=>Rt(r)(p.name,d.name));const a=l.filter(p=>p.unavailable).length;return{big:n,shown:l,regions:[{id:"all",label:o("policy.allRegions")},...[...s].sort((p,d)=>d[1]-p[1]).map(([p,d])=>({id:p,label:p==="?"?"—":p,desc:Kt(d,r)}))],regionLabel:t.region==="all"?o("policy.allRegions"):t.region==="?"?"—":t.region,count:a?o("policy.membersDown",{n:l.length,down:a}):o("policy.members",{n:l.length})}}function po(i,t,e){return i?{title:i,text:[e("policy.untestedHelp"),e(t?"policy.untestedProbe":"policy.untestedNoProbe")]}:null}function fo(i){const t=new Map;for(const e of i)for(const o of Ct(e.content))t.set(o.name,t.has(o.name)?"ambiguous":{entry:o,origin:e});return t}function ho(i,t,e){return t.error?ce(t.error,e):t.loaded?i?i==="ambiguous"?e("policy.editAmbiguous"):i.origin.writable?t.complete===void 0?e("policy.editNoConfig"):t.complete?null:e("config.incomplete"):e("policy.editReadOnly",{file:i.origin.path}):e("policy.editNoEntry"):e("policy.editNoConfig")}function bo(i,t,e){return i.shown&&!i.busy&&i.blocked?i.blocked:t.busy||t.canProbe?null:e("policy.noProbe")}function mo(i,t){const e=B(),o=Ht[Ot()],[r,n]=f.useState(""),[s,l]=f.useState("all"),[a,p]=f.useState("latency"),[d,v]=f.useState(!1),{contains:h}=Ci({sensitivity:"base"}),g=f.useMemo(()=>uo(i,{q:r,region:s,sort:a,aliveOnly:d},h,e,o),[i,r,s,a,d,h,e,o]),x=f.useMemo(()=>t?i.map(P=>P.id):[],[t,i]);return{...g,q:r,setQ:n,region:s,setRegion:l,sort:a,setSort:p,aliveOnly:d,setAliveOnly:v,disabledKeys:x}}const go={minItemSize:new F(212,56),maxItemSize:new F(1/0,56),minSpace:new F(0,8)};function yo({nodes:i,selected:t,cur:e,marks:o={},onSelect:r,isDisabled:n}){const s=B(),l=mo(i,n);return i.length?l.big?c.jsxs("div",{className:"rp-form",children:[c.jsxs("div",{className:"rp-toolbar",children:[c.jsx(Ee,{search:!0,label:s("policy.filter"),value:l.q,onChange:l.setQ,width:240}),c.jsx(Bt,{quiet:!0,label:s("policy.region"),value:l.region,onChange:l.setRegion,items:l.regions,children:l.regionLabel}),c.jsx(Gt,{label:s("policy.sort"),value:l.sort,onChange:l.setSort,items:[{id:"latency",label:s("policy.byLatency")},{id:"name",label:s("policy.byName")}]}),c.jsx(Ue,{isSelected:l.aliveOnly,onChange:l.setAliveOnly,children:s("policy.aliveOnly")}),c.jsx("span",{className:"rp-grow"}),c.jsx("span",{className:"rp-label",children:l.count})]}),c.jsx(ji,{layout:Xi,layoutOptions:go,children:c.jsx(Fi,{className:"rp-nodegrid","aria-label":s("policy.filter"),items:l.shown,selectionMode:r?"single":"none",disabledKeys:l.disabledKeys,disallowEmptySelection:!0,selectedKeys:r&&t?[t]:[],onSelectionChange:a=>{if(!r||n||a==="all")return;const p=[...a][0];p!=null&&r(String(p))},renderEmptyState:()=>c.jsx(we,{children:s("policy.none")}),children:a=>c.jsx(Gi,{id:a.id,textValue:a.name,className:ye("rp-node",(e===a.id&&!r||o[a.id])&&"cur"),children:c.jsx(ge,{name:a.name,status:a.status,description:a.description,current:!r&&e===a.id,mark:o[a.id]})})})})]}):c.jsx("div",{className:"rp-nodes",children:i.map(a=>r?c.jsx(Ft,{className:ye("rp-node",o[a.id]&&"cur"),isSelected:t===a.id,isDisabled:n,onChange:()=>r(a.id),children:c.jsx(ge,{name:a.name,status:a.status,description:a.description,mark:o[a.id]})},a.id):c.jsx("div",{className:ye("rp-node",e===a.id&&"cur"),children:c.jsx(ge,{name:a.name,status:a.status,description:a.description,current:e===a.id})},a.id))}):c.jsx(we,{children:s("policy.none")})}function vo({model:i}){const t=B();return c.jsx(Ve,{title:i.title,narrow:!0,isOpen:i.open,onOpenChange:e=>{e||i.close()},footer:e=>c.jsxs(c.Fragment,{children:[c.jsx(Y,{onPress:e,children:t("ui.cancel")}),c.jsx(Y,{accent:!0,isDisabled:!i.open,isPending:i.busy,onPress:()=>i.save(e),children:t("policy.save")})]}),children:i.open&&c.jsxs("div",{className:"rp-list",children:[c.jsx("span",{className:"rp-label",children:t("policy.editHelp")}),i.problem&&c.jsx(Ut,{takeFocus:!0,children:i.problem.text},i.problem.id),c.jsx(Ti,{value:i.policy,onChange:i.setPolicy}),i.filters.map(e=>c.jsx(Ee,{label:e.label,value:e.value,placeholder:"name(keyword: 'HK')",spellCheck:!1,onChange:e.change,action:c.jsx(Y,{quiet:!0,icon:!0,label:e.removeLabel,onPress:e.remove,children:c.jsx(Vt,{})})},e.id)),c.jsx(Y,{small:!0,quiet:!0,onPress:i.add,children:t("policy.addFilter")})]})})}function xo({model:i}){const t=B();return c.jsx(Ve,{title:i.title,narrow:!0,isOpen:i.open,onOpenChange:e=>{e||i.close()},footer:e=>c.jsxs(c.Fragment,{children:[c.jsx(Y,{onPress:e,children:t("ui.cancel")}),c.jsx(Y,{accent:!0,isDisabled:!i.changed,isPending:i.busy,onPress:()=>i.save(e),children:t("policy.save")})]}),children:i.open&&c.jsx("div",{className:"rp-list",children:i.fields.map(e=>c.jsx(Ee,{label:e.label,type:e.id==="check_url"?"url":void 0,value:e.value,description:e.description,error:e.error,spellCheck:!1,onChange:e.change},e.id))})})}function $o(i,t){if(!i)return[];const e=new Map;for(const o of i.runtime.health){const r=e.get(o.member_id);r?r.push(o):e.set(o.member_id,[o])}return i.members.map(o=>({...o,health:Wt(e.get(o.id)??[])??t.get(o.id)}))}const Re=i=>i&&[i.state,i.latency_ms,i.transport,i.purpose].join("\0");function ko(i,t){if(i.size!==t.size)return!1;for(const[e,o]of t)if(!i.has(e)||Re(i.get(e))!==Re(o))return!1;return!0}const wo=Je().map(i=>i.id);function Po({go:i,query:t}){const e=qt(),o=e.data?.resources,r=Yt(ve(o,"groups",{whileLoading:!0}),oi.live),n=ve(o,"nodes",{whileLoading:!1}),s=Xt(n),l=new URLSearchParams(t).get("group"),[a,p]=f.useState({from:void 0,map:new Map});if(a.from!==s.data){const y=new Map((s.data??[]).map(u=>[u.id,Jt(u)]));p({from:s.data,map:ko(a.map,y)?a.map:y})}const d=Qt(),{main:v,writable:h,busy:g,apply:x,error:P,retry:m}=d,b=f.useMemo(()=>({main:v,writable:h,busy:g,apply:x,error:P,retry:m}),[v,h,g,x,P,m]),$=Zt(ve(o,"config",{whileLoading:!1})),I=$.data?.sources,M=f.useMemo(()=>fo(I??[]),[I]),E=ei(f.useMemo(()=>I??[],[I])),N=f.useMemo(()=>(r.data??[]).map(y=>{const u=M.get(y.name);return{id:y.id,domId:"group-"+y.id,name:y.name,members:y.member_count,selection:y.selection,declaration:{owner:u,complete:u&&u!=="ambiguous"?E(u.origin):void 0,loaded:!!I,error:$.error}}}),[r.data,M,E,I,$.error]),L=!!r.data;f.useEffect(()=>{const y=l&&L?document.getElementById("group-"+l):null;if(!y)return;const u=()=>y.scrollIntoView({block:"start"});u();const D=new ResizeObserver(u);for(const z of y.parentElement?.children??[]){if(z===y)break;D.observe(z)}const w=["wheel","touchstart","keydown","pointerdown"],j=()=>{clearTimeout(C),D.disconnect();for(const z of w)removeEventListener(z,j,!0)},C=setTimeout(j,3e3);for(const z of w)addEventListener(z,j,{capture:!0,passive:!0});return j},[l,L]);const{refetch:_}=r,{refetch:T}=s,k=f.useCallback(()=>{_(),T()},[_,T]);return{tab:ii(t,wo,"groups"),viewGroup:y=>y===null?i("policies"):Li(i,y),setTab:y=>i("policies",ti(t,y,"groups")),cards:N,focus:l,health:a.map,source:b,error:r.error??s.error,loading:r.loading&&!r.data||!o&&!e.error||n&&!s.data&&!s.error,empty:r.data?.length===0,reload:k,refreshGroups:r.refetch,refreshNodes:s.refetch,groups:r.data}}function Io(i,t){const[e,o]=f.useState(!1),r=f.useRef(null),n=f.useRef(!1),s=f.useRef(!1),l=f.useCallback(()=>{n.current=!!r.current?.contains(document.activeElement),!s.current&&!i&&t?.(),s.current=!0,o(!0)},[i,t]),[a,p]=ri(l),d=f.useCallback(h=>(r.current=h,a(h)),[a]),v=i||e;return f.useLayoutEffect(()=>{!v||!n.current||(n.current=!1,r.current?.contains(document.activeElement)||r.current?.focus())},[v]),{ref:d,active:v,visible:p,expand:l}}function So(i,t,e){const o=B(),{owner:r}=e,n=r==="ambiguous"?void 0:r,s=n?.entry,l=ho(r,e,o),[a,p]=f.useState(null),d=We(),[v,h]=f.useState(null),g=b=>h($=>({id:($?.id??0)+1,text:b})),x=qe(!!a&&(a.policy!==s?.policy||JSON.stringify(a.filters)!==JSON.stringify(s?.filters)),()=>{d.next(),p(null),h(null)}),P=b=>{if(!a)return;const $=a.filters.map(M=>M.trim()).filter(Boolean);if(!_i($,a.policy,s)){g(o("policy.editUnsafe"));return}const I=d.start();t.apply(M=>ni(M,a.name,{filters:$,policy:a.policy}),a.origin).then(M=>{const E=I();M.kind==="ok"&&(E&&(x.clear(),b()),U("positive",o("policy.updated",{name:a.name})));const N=ai(M,o);N&&(E?g(li(N,o)):U(N.kind,N.text,{detail:N.detail,requestId:N.requestId}))})},m=b=>{t.busy||p($=>$&&b($))};return{title:o("policy.editTitle",{name:i}),open:!!a,available:!!a||t.writable,disabled:t.busy||l!==null,tip:l??void 0,busy:t.busy,problem:v,policy:a?.policy??null,filters:(a?.filters??[]).map((b,$)=>({id:$,value:b,label:o("policy.filterN",{n:$+1}),removeLabel:o("policy.removeFilter",{n:$+1}),change:I=>m(M=>({...M,filters:M.filters.map((E,N)=>N===$?I:E)})),remove:()=>m(I=>({...I,filters:I.filters.filter((M,E)=>E!==$)}))})),show:()=>{d.next(),h(null),n&&!l&&p({name:n.entry.name,origin:n.origin,policy:n.entry.policy,filters:n.entry.filters})},close:()=>{d.next(),h(null),x.clear(),p(null)},setPolicy:b=>m($=>({...$,policy:b})),add:()=>m(b=>({...b,filters:[...b.filters,""]})),save:P}}const Eo={check_url:"policy.cfg.checkUrl",check_interval:"policy.cfg.checkInterval",tolerance:"policy.cfg.tolerance",idle_timeout:"policy.cfg.idleTimeout"},Do={check_url:"policy.checkUrlHelp",check_interval:"policy.checkIntervalHelp",tolerance:"policy.toleranceHelp",idle_timeout:"policy.idleTimeoutHelp"},Mo={check_url:"policy.checkUrlInvalid",check_interval:"policy.checkIntervalInvalid",tolerance:"policy.toleranceInvalid",idle_timeout:"policy.idleTimeoutInvalid"};function jo(i,t,e,o){const r=B(),[n,s]=f.useState(null),[l,a]=f.useState(!1),p=We(),d=o&&i?Le(i):null;si(d&&JSON.stringify(d),()=>{d&&s(m=>m&&to(m,d))});const v=i?Ze(i):[],h=i&&n?oo(i,n.base,n.value):[],g=()=>{p.next(),s(null),a(!1)},x=qe(h.length>0,g),P=m=>{if(!i||!n||(a(!0),!h.length||v.some($=>ze($,n.value[$]))))return;const b=p.start();t(h).then($=>{$&&(U("positive",r("policy.updated",{name:i.name})),b()&&(x.clear(),m()))})};return{title:r("policy.checkEditTitle",{name:i?.name??""}),open:!!n,available:!!n||v.length>0,busy:e,changed:h.length>0,fields:n&&i?v.map(m=>{const b=n.theirs[m];return{id:m,label:r(Eo[m]),value:n.value[m],description:b!==void 0&&b!==n.value[m]?r("policy.checkChangedElsewhere",{value:b||r("ui.none")}):r(eo(i,m,n.value[m])?"policy.unsetDefault":Do[m]),error:l&&ze(m,n.value[m])?r(Mo[m]):void 0,change:$=>{e||s(I=>I&&{...I,value:{...I.value,[m]:$}})}}}):[],show:()=>{if(!i)return;p.next(),a(!1);const m=Le(i);s({base:m,value:m,theirs:{}})},close:()=>{x.clear(),g()},save:P}}function Co(i){const{id:t,health:e,refreshGroups:o,refreshNodes:r,source:n,declaration:s,selection:l,paused:a}=i,p=B(),d=ci(t,o,r,a),v=f.useEffectEvent(k=>U("negative",p("policy.actionFailed",{name:d.data?.name??i.name,error:ro(k,p,!1)}),{requestId:di(k)}));f.useEffect(()=>{d.actionError&&v(d.actionError)},[d.actionError]);const h=d.data,{refetch:g}=d,x=h?.runtime.selection,P=!a&&!!x&&(l.tcp_member_id!==(x.tcp?.member_id??null)||l.udp_member_id!==(x.udp?.member_id??null));f.useEffect(()=>{P&&g()},[P,l,g]);const m=f.useMemo(()=>so($o(h,e),p),[h,e,p]),b=h?co(h,m,d.network,p):null,$=So(h?.name??i.name,n,s),I=d.actionError instanceof ui&&d.actionError.status===409,M=jo(h,d.patchConfig,!!d.busy,I),E=k=>m.find(y=>y.id===k)?.name??k,N=()=>void d.probe().then(k=>{if(k&&h){const y=no(k);U("positive",p("ui.valuePair",{label:h.name,value:p(y.key,y.params)}))}}),L=()=>void d.clearOverride().then(k=>{if(!k||!h)return;const y=k.selection.tcp?.member_id,u=k.selection.udp?.member_id,D=y&&u&&y!==u?p("policy.memberPerNetwork",{tcp:E(y),udp:E(u)}):y||u?E(y??u):p("policy.noneSelected");U("positive",p("policy.backToAutomatic",{name:h.name,member:D}))}),_=k=>void d.setInterrupt(k).then(y=>{y&&h&&U("positive",p("policy.updated",{name:h.name}))}),T=b&&(b.selectable||b.overridable)?k=>{k!==b.selected&&d.select(k).then(y=>{y&&h&&U("positive",p(y.source==="override"?"policy.pinned":y.connections_interrupted?"policy.selectedInterrupted":"policy.selectedKept",{name:h.name,member:E(y.member_id)}))})}:void 0;return{card:b,edit:$,check:M,members:m,error:d.error,retry:d.refetch,loading:!h&&!d.error,loadingText:p("policy.loading",{groupId:t}),busy:!!d.busy,probing:d.busy==="probe",probeDisabled:!!d.busy||!d.canProbe,probeTip:d.canProbe?void 0:p("policy.noProbe"),actionsReason:bo({shown:$.available,busy:n.busy,blocked:$.tip??null},{busy:!!d.busy,canProbe:!!d.canProbe},p),untestedHelp:po(b?.untested??null,!!d.canProbe,p),probeText:p(d.busy==="probe"?"policy.probing":"policy.probeAll"),probe:N,release:L,releasing:d.busy==="selection",interrupt:_,select:T,network:d.network,setNetwork:k=>{(k==="both"||k==="tcp"||k==="udp")&&d.setNetwork(k)}}}const et=$i(()=>ki(()=>import("./Arrange-Bbxnsdc8.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url).then(i=>({default:i.Arrange}))),No=et.Component;et.preload().catch(()=>{});function tt({heading:i,members:t,label:e}){return c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"rp-row",children:i}),c.jsx("div",{className:"rp-wait-line"}),c.jsx("div",{className:"rp-form",role:e?"status":void 0,"aria-label":e,children:t>12?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"rp-wait-line"}),c.jsx("div",{className:"rp-nodegrid"})]}):c.jsx("div",{className:"rp-nodes",children:Array.from({length:Math.max(t,1)},(o,r)=>c.jsx("span",{className:"rp-node"},r))})})]})}const Me=f.createContext({hold(){},release(){}});function _o({loading:i,children:t}){const e=f.useRef(new Set),[o,r]=f.useState(!1),[,n]=f.useReducer(l=>l+1,0),s=f.useMemo(()=>({hold:l=>void e.current.add(l),release:l=>{e.current.delete(l)&&!e.current.size&&n()}}),[]);return f.useLayoutEffect(()=>{!o&&!i&&!e.current.size&&r(!0)}),c.jsx(Me,{value:s,children:c.jsxs("div",{className:"rp-policy-list","data-wait":o?void 0:"",children:[!o&&c.jsx(Xe,{}),t]})})}function To(i){const t=B(),e=Co(i),o=e.card,r=f.use(Me),{id:n,paused:s}=i;return f.useLayoutEffect(()=>{if(!e.loading||s){r.release(n);return}return r.hold(n),()=>r.release(n)},[r,n,e.loading,s]),c.jsxs(c.Fragment,{children:[c.jsx(Ye,{error:e.error,onRetry:e.retry}),e.loading&&c.jsx(tt,{heading:c.jsx("h3",{className:"rp-h3",children:i.name}),members:i.members,label:e.loadingText}),o&&c.jsxs(c.Fragment,{children:[c.jsx(bi,{reason:e.actionsReason,children:c.jsxs("div",{className:"rp-row",children:[c.jsxs("span",{className:"rp-cluster",children:[c.jsx("h3",{className:"rp-h3",children:o.name}),c.jsx(mi,{tip:o.policy.id,children:o.policy.label}),c.jsx(se,{small:!0,tone:"ok",children:o.healthy}),o.down&&c.jsx(se,{small:!0,tone:"err",children:o.down}),o.untested&&c.jsx(gi,{help:e.untestedHelp,children:c.jsx(se,{small:!0,tone:"neutral",children:o.untested})})]}),c.jsx(vo,{model:e.edit}),c.jsx(xo,{model:e.check}),c.jsx(wi,{actions:[...e.edit.available?[{id:"edit",label:t("policy.edit"),isDisabled:e.edit.disabled,reason:e.edit.tip,onAction:e.edit.show}]:[],...e.check.available?[{id:"check",label:t("policy.checkEdit"),isDisabled:e.check.busy,onAction:e.check.show}]:[],{id:"probe",label:e.probeText,isPending:e.probing,isDisabled:e.probeDisabled,reason:e.probeTip,onAction:e.probe},...o.pinned?[{id:"release",label:t("policy.releaseOverride"),isPending:e.releasing,isDisabled:e.busy,onAction:e.release}]:[]]})]})}),c.jsx(yi,{id:o.id,title:t("ui.config"),children:c.jsx(vi,{items:o.fields})}),c.jsxs("div",{className:"rp-toolbar",children:[o.showNetwork&&c.jsx(xi,{label:o.networkLabel,value:e.network,onChange:e.setNetwork,items:[["both",t("policy.both")],["tcp",t("ui.tcp")],["udp",t("ui.udp")]]}),o.overridable&&c.jsx(se,{small:!0,tone:o.overrideTone,children:o.overrideText}),o.interruptable&&c.jsxs("div",{className:"rp-field",children:[c.jsx(Ue,{isSelected:o.interrupt,isDisabled:e.busy,onChange:e.interrupt,"aria-describedby":o.interruptUnset?`${o.id}-interrupt-unset`:void 0,children:t("policy.interrupt")}),o.interruptUnset&&c.jsx("span",{id:`${o.id}-interrupt-unset`,className:"rp-label",children:t("policy.unsetDefault")})]})]}),c.jsx(yo,{nodes:e.members,selected:o.selected,cur:o.selected,marks:o.marks,isDisabled:e.busy,onSelect:e.select})]})]})}const Lo=f.memo(function({focused:t,domId:e,...o}){const r=f.use(Me),{id:n}=o,s=f.useCallback(()=>r.hold(n),[r,n]);f.useLayoutEffect(()=>()=>r.release(n),[r,n]);const{ref:l,active:a,visible:p,expand:d}=Io(t,s);return c.jsx(hi,{ref:l,id:e,"aria-label":o.name,tabIndex:-1,children:a?c.jsx(To,{...o,paused:!p}):c.jsx(tt,{heading:c.jsx(Y,{quiet:!0,onPress:d,children:o.name}),members:o.members})})});function zo(i){const t=B(),e=Po(i),r={groups:c.jsxs(c.Fragment,{children:[c.jsx("p",{className:"rp-note",children:t("policy.note")}),c.jsx(Ye,{error:e.error,onRetry:e.reload}),e.empty&&c.jsx(we,{children:t("policy.empty")}),c.jsx(_o,{loading:e.loading,children:c.jsx(pi,{children:e.cards.map(n=>c.jsx(Lo,{...n,focused:e.focus===n.id,health:e.health,source:e.source,refreshGroups:e.refreshGroups,refreshNodes:e.refreshNodes},n.id))})})]}),arrange:c.jsx(f.Suspense,{fallback:c.jsx(Xe,{}),children:c.jsx(No,{source:e.source,groups:e.groups,viewGroup:e.viewGroup})})};return c.jsx("div",{className:"rp-page",children:c.jsx(fi,{keepMounted:!0,label:t("nav.policies"),value:e.tab,onChange:e.setTab,items:Je().map(n=>({id:n.id,label:t(n.titleKey),content:r[n.id]}))})})}const Vo=Object.freeze(Object.defineProperty({__proto__:null,Policies:zo},Symbol.toStringTag,{value:"Module"}));export{Fi as $,Vo as P,Gi as a};