dgz-ui
Version:
Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript
2 lines (1 loc) • 4.4 kB
JavaScript
;const I=require("react"),b=require("./index-Ch6ABCiC.cjs"),h=require("./index-CMmIsz5H.cjs"),x=require("./index-t1JFNXJ1.cjs"),m=require("./index-hwV4SK1V.cjs"),w=require("./jsx-runtime-DUiatUiq.cjs");function q(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,s.get?s:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const o=q(I);function H(t,e=globalThis==null?void 0:globalThis.document){const n=m.useCallbackRef(t);o.useEffect(()=>{const s=r=>{r.key==="Escape"&&n(r)};return e.addEventListener("keydown",s,{capture:!0}),()=>e.removeEventListener("keydown",s,{capture:!0})},[n,e])}var U="DismissableLayer",p="dismissableLayer.update",z="dismissableLayer.pointerDownOutside",M="dismissableLayer.focusOutside",g,T=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),B=o.forwardRef((t,e)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:s,onPointerDownOutside:r,onFocusOutside:a,onInteractOutside:l,onDismiss:d,...E}=t,c=o.useContext(T),[u,k]=o.useState(null),f=(u==null?void 0:u.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,F]=o.useState({}),N=x.useComposedRefs(e,i=>k(i)),P=Array.from(c.layers),[W]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),_=P.indexOf(W),D=u?P.indexOf(u):-1,j=c.layersWithOutsidePointerEventsDisabled.size>0,C=D>=_,A=X(i=>{const v=i.target,O=[...c.branches].some(y=>y.contains(v));!C||O||(r==null||r(i),l==null||l(i),i.defaultPrevented||d==null||d())},f),L=Y(i=>{const v=i.target;[...c.branches].some(y=>y.contains(v))||(a==null||a(i),l==null||l(i),i.defaultPrevented||d==null||d())},f);return H(i=>{D===c.layers.size-1&&(s==null||s(i),!i.defaultPrevented&&d&&(i.preventDefault(),d()))},f),o.useEffect(()=>{if(u)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(g=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(u)),c.layers.add(u),R(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=g)}},[u,f,n,c]),o.useEffect(()=>()=>{u&&(c.layers.delete(u),c.layersWithOutsidePointerEventsDisabled.delete(u),R())},[u,c]),o.useEffect(()=>{const i=()=>F({});return document.addEventListener(p,i),()=>document.removeEventListener(p,i)},[]),w.jsxRuntimeExports.jsx(h.Primitive.div,{...E,ref:N,style:{pointerEvents:j?C?"auto":"none":void 0,...t.style},onFocusCapture:b.composeEventHandlers(t.onFocusCapture,L.onFocusCapture),onBlurCapture:b.composeEventHandlers(t.onBlurCapture,L.onBlurCapture),onPointerDownCapture:b.composeEventHandlers(t.onPointerDownCapture,A.onPointerDownCapture)})});B.displayName=U;var $="DismissableLayerBranch",K=o.forwardRef((t,e)=>{const n=o.useContext(T),s=o.useRef(null),r=x.useComposedRefs(e,s);return o.useEffect(()=>{const a=s.current;if(a)return n.branches.add(a),()=>{n.branches.delete(a)}},[n.branches]),w.jsxRuntimeExports.jsx(h.Primitive.div,{...t,ref:r})});K.displayName=$;function X(t,e=globalThis==null?void 0:globalThis.document){const n=m.useCallbackRef(t),s=o.useRef(!1),r=o.useRef(()=>{});return o.useEffect(()=>{const a=d=>{if(d.target&&!s.current){let E=function(){S(z,n,c,{discrete:!0})};const c={originalEvent:d};d.pointerType==="touch"?(e.removeEventListener("click",r.current),r.current=E,e.addEventListener("click",r.current,{once:!0})):E()}else e.removeEventListener("click",r.current);s.current=!1},l=window.setTimeout(()=>{e.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(l),e.removeEventListener("pointerdown",a),e.removeEventListener("click",r.current)}},[e,n]),{onPointerDownCapture:()=>s.current=!0}}function Y(t,e=globalThis==null?void 0:globalThis.document){const n=m.useCallbackRef(t),s=o.useRef(!1);return o.useEffect(()=>{const r=a=>{a.target&&!s.current&&S(M,n,{originalEvent:a},{discrete:!1})};return e.addEventListener("focusin",r),()=>e.removeEventListener("focusin",r)},[e,n]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function R(){const t=new CustomEvent(p);document.dispatchEvent(t)}function S(t,e,n,{discrete:s}){const r=n.originalEvent.target,a=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:n});e&&r.addEventListener(t,e,{once:!0}),s?h.dispatchDiscreteCustomEvent(r,a):r.dispatchEvent(a)}exports.DismissableLayer=B;