UNPKG

ivt

Version:

Ivt Components Library

3 lines (2 loc) 4.08 kB
import*as e from"react";import{u as t,c as n}from"./index-BgU_7G37.mjs";import{P as r,d as s}from"./index-Bj6b6xW8.mjs";import{u as o}from"./index-DwSoQWco.mjs";import{jsx as i}from"react/jsx-runtime";import a from"react-dom";import{u}from"./index-C99OdH8-.mjs";var c,d="dismissableLayer.update",l="dismissableLayer.pointerDownOutside",f="dismissableLayer.focusOutside",m=e.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),v=e.forwardRef(((s,a)=>{const{disableOutsidePointerEvents:u=!1,onEscapeKeyDown:v,onPointerDownOutside:E,onFocusOutside:b,onInteractOutside:w,onDismiss:h,...D}=s,P=e.useContext(m),[L,C]=e.useState(null),O=L?.ownerDocument??globalThis?.document,[,g]=e.useState({}),x=t(a,(e=>C(e))),R=Array.from(P.layers),[T]=[...P.layersWithOutsidePointerEventsDisabled].slice(-1),k=R.indexOf(T),W=L?R.indexOf(L):-1,B=P.layersWithOutsidePointerEventsDisabled.size>0,S=W>=k,j=function(t,n=globalThis?.document){const r=o(t),s=e.useRef(!1),i=e.useRef((()=>{}));return e.useEffect((()=>{const e=e=>{if(e.target&&!s.current){let t=function(){y(l,r,s,{discrete:!0})};const s={originalEvent:e};"touch"===e.pointerType?(n.removeEventListener("click",i.current),i.current=t,n.addEventListener("click",i.current,{once:!0})):t()}else n.removeEventListener("click",i.current);s.current=!1},t=window.setTimeout((()=>{n.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",i.current)}}),[n,r]),{onPointerDownCapture:()=>s.current=!0}}((e=>{const t=e.target,n=[...P.branches].some((e=>e.contains(t)));S&&!n&&(E?.(e),w?.(e),e.defaultPrevented||h?.())}),O),F=function(t,n=globalThis?.document){const r=o(t),s=e.useRef(!1);return e.useEffect((()=>{const e=e=>{if(e.target&&!s.current){y(f,r,{originalEvent:e},{discrete:!1})}};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)}),[n,r]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}((e=>{const t=e.target;[...P.branches].some((e=>e.contains(t)))||(b?.(e),w?.(e),e.defaultPrevented||h?.())}),O);return function(t,n=globalThis?.document){const r=o(t);e.useEffect((()=>{const e=e=>{"Escape"===e.key&&r(e)};return n.addEventListener("keydown",e,{capture:!0}),()=>n.removeEventListener("keydown",e,{capture:!0})}),[r,n])}((e=>{W===P.layers.size-1&&(v?.(e),!e.defaultPrevented&&h&&(e.preventDefault(),h()))}),O),e.useEffect((()=>{if(L)return u&&(0===P.layersWithOutsidePointerEventsDisabled.size&&(c=O.body.style.pointerEvents,O.body.style.pointerEvents="none"),P.layersWithOutsidePointerEventsDisabled.add(L)),P.layers.add(L),p(),()=>{u&&1===P.layersWithOutsidePointerEventsDisabled.size&&(O.body.style.pointerEvents=c)}}),[L,O,u,P]),e.useEffect((()=>()=>{L&&(P.layers.delete(L),P.layersWithOutsidePointerEventsDisabled.delete(L),p())}),[L,P]),e.useEffect((()=>{const e=()=>g({});return document.addEventListener(d,e),()=>document.removeEventListener(d,e)}),[]),i(r.div,{...D,ref:x,style:{pointerEvents:B?S?"auto":"none":void 0,...s.style},onFocusCapture:n(s.onFocusCapture,F.onFocusCapture),onBlurCapture:n(s.onBlurCapture,F.onBlurCapture),onPointerDownCapture:n(s.onPointerDownCapture,j.onPointerDownCapture)})}));v.displayName="DismissableLayer";var E=e.forwardRef(((n,s)=>{const o=e.useContext(m),a=e.useRef(null),u=t(s,a);return e.useEffect((()=>{const e=a.current;if(e)return o.branches.add(e),()=>{o.branches.delete(e)}}),[o.branches]),i(r.div,{...n,ref:u})}));function p(){const e=new CustomEvent(d);document.dispatchEvent(e)}function y(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?s(o,i):o.dispatchEvent(i)}E.displayName="DismissableLayerBranch";var b=v,w=E,h=e.forwardRef(((t,n)=>{const{container:s,...o}=t,[c,d]=e.useState(!1);u((()=>d(!0)),[]);const l=s||c&&globalThis?.document?.body;return l?a.createPortal(i(r.div,{...o,ref:n}),l):null}));h.displayName="Portal";export{w as B,v as D,h as P,b as R}; //# sourceMappingURL=index-DX37fts-.mjs.map