mirror of
https://github.com/nunocoracao/blowfish.git
synced 2025-04-21 15:11:54 +02:00
2 lines
10 KiB
JavaScript
2 lines
10 KiB
JavaScript
|
import h,{createContext as q,createRef as se,useContext as z,useEffect as j,useMemo as x,useReducer as Te,useRef as J,useState as me}from"react";import{match as G}from'../../utils/match.js';import{forwardRefWithAs as V,render as $,Features as Q}from'../../utils/render.js';import{optionalRef as ye,useSyncRefs as w}from'../../hooks/use-sync-refs.js';import{useId as _}from'../../hooks/use-id.js';import{Keys as H}from'../keyboard.js';import{isDisabledReactIssue7711 as ie}from'../../utils/bugs.js';import{getFocusableElements as fe,Focus as N,focusIn as K,isFocusableElement as Ee,FocusableMode as be}from'../../utils/focus-management.js';import{OpenClosedProvider as Se,State as X,useOpenClosed as ce}from'../../internal/open-closed.js';import{useResolveButtonType as ge}from'../../hooks/use-resolve-button-type.js';import{useOutsideClick as Ae}from'../../hooks/use-outside-click.js';import{getOwnerDocument as Re}from'../../utils/owner.js';import{useOwnerDocument as ee}from'../../hooks/use-owner.js';import{useEventListener as Ie}from'../../hooks/use-event-listener.js';import{Hidden as te,Features as oe}from'../../internal/hidden.js';import{useEvent as y}from'../../hooks/use-event.js';import{useTabDirection as de,Direction as U}from'../../hooks/use-tab-direction.js';import'../../utils/micro-task.js';import{useLatestValue as Pe}from'../../hooks/use-latest-value.js';var Ce=(f=>(f[f.Open=0]="Open",f[f.Closed=1]="Closed",f))(Ce||{}),Oe=(o=>(o[o.TogglePopover=0]="TogglePopover",o[o.ClosePopover=1]="ClosePopover",o[o.SetButton=2]="SetButton",o[o.SetButtonId=3]="SetButtonId",o[o.SetPanel=4]="SetPanel",o[o.SetPanelId=5]="SetPanelId",o))(Oe||{});let Me={[0]:r=>({...r,popoverState:G(r.popoverState,{[0]:1,[1]:0})}),[1](r){return r.popoverState===1?r:{...r,popoverState:1}},[2](r,n){return r.button===n.button?r:{...r,button:n.button}},[3](r,n){return r.buttonId===n.buttonId?r:{...r,buttonId:n.buttonId}},[4](r,n){return r.panel===n.panel?r:{...r,panel:n.panel}},[5](r,n){return r.panelId===n.panelId?r:{...r,panelId:n.panelId}}},ne=q(null);ne.displayName="PopoverContext";function Z(r){let n=z(ne);if(n===null){let f=new Error(`<${r} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(f,Z),f}return n}let re=q(null);re.displayName="PopoverAPIContext";function le(r){let n=z(re);if(n===null){let f=new Error(`<${r} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(f,le),f}return n}let ae=q(null);ae.displayName="PopoverGroupContext";function ve(){return z(ae)}let ue=q(null);ue.displayName="PopoverPanelContext";function Le(){return z(ue)}function Fe(r,n){return G(n.type,Me,r,n)}let Be="div",he=V(function(n,f){var O;let I=J(null),b=w(f,ye(e=>{I.current=e})),S=Te(Fe,{popoverState:1,buttons:[],button:null,buttonId:null,panel:null,panelId:null,beforePanelSentinel:se(),afterPanelSentinel:se()}),[{popoverState:o,button:t,buttonId:P,panel:a,panelId:L,beforePanelSentinel:F,afterPanelSentinel:v},u]=S,s=ee((O=I.current)!=null?O:t),p=x(()=>{if(!t||!a)return!1;for(let M of document.querySelectorAll("body > *"))if(Number(M==null?void 0:M.contains(t))^Number(M==null?void 0:M.contains(a)))return!0;let e=fe(),l=e.indexOf(t),d=(l+e.length-1)%e.length,E=(l+1)%e.length,D=e[d],Y=e[E];return!a.contains(D)&&!a.contains(Y)},[t,a]),c=Pe(P),T=Pe(L),g=x(()=>({buttonId:c,panelId:T,close:()=>u({type:1})}),[c,T,u]),A=ve(),C=A==null?void 0:A.registerPopover,k=y(()=>{var e;return(e=A==null?void 0:A.isFocusWithinPopoverGroup())!=null?e:(s==null?void 0:s.activeElement)&&((t==null?void 0:t.contains(s.activeElement))||(a==null?void 0:a.contains(s.activeElement)))});j(()=>C==null?void 0:C(g),[C,g]),Ie(s==null?void 0:s.defaultView,"focus",e=>{var l,d,E,D;o===0&&(k()||!t||!a||e.target!==window&&((d=(l=F.current)==null?void 0:l.contains)!=null&&d.call(l,e.target)||(D=(E=v.current)==null?void 0:E.contains)!=null&&D.call(E,e.target)||u({type:1})))},!0),Ae([t,a],(e,l)=>{u({type:1}),Ee(l,be.Loose)||(e.preventDefault(),t==null||t.focus())},o===0);let B=y(e=>{u({type:1});let l=(()=>e?e instanceof H
|