@anoki/fse-ui
Version:
FSE UI components library
3 lines (2 loc) • 4.32 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("react"),y=require("./index.cjs466.js"),p=require("./index.cjs477.js"),R=require("./index.cjs465.js"),x=require("./index.cjs562.js"),H=require("./index.cjs563.js"),w=require("./index.cjs237.js");function U(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,s.get?s:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const o=U(q);var z="DismissableLayer",h="dismissableLayer.update",M="dismissableLayer.pointerDownOutside",$="dismissableLayer.focusOutside",L,T=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),S=o.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:s,onPointerDownOutside:r,onFocusOutside:a,onInteractOutside:l,onDismiss:d,...v}=e,c=o.useContext(T),[u,F]=o.useState(null),f=(u==null?void 0:u.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,N]=o.useState({}),W=R.useComposedRefs(t,i=>F(i)),m=Array.from(c.layers),[_]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),A=m.indexOf(_),P=u?m.indexOf(u):-1,k=c.layersWithOutsidePointerEventsDisabled.size>0,D=P>=A,I=Y(i=>{const E=i.target,C=[...c.branches].some(b=>b.contains(E));!D||C||(r==null||r(i),l==null||l(i),i.defaultPrevented||d==null||d())},f),O=G(i=>{const E=i.target;[...c.branches].some(b=>b.contains(E))||(a==null||a(i),l==null||l(i),i.defaultPrevented||d==null||d())},f);return H.useEscapeKeydown(i=>{P===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&&(L=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(u)),c.layers.add(u),g(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=L)}},[u,f,n,c]),o.useEffect(()=>()=>{u&&(c.layers.delete(u),c.layersWithOutsidePointerEventsDisabled.delete(u),g())},[u,c]),o.useEffect(()=>{const i=()=>N({});return document.addEventListener(h,i),()=>document.removeEventListener(h,i)},[]),w.jsxRuntimeExports.jsx(p.Primitive.div,{...v,ref:W,style:{pointerEvents:k?D?"auto":"none":void 0,...e.style},onFocusCapture:y.composeEventHandlers(e.onFocusCapture,O.onFocusCapture),onBlurCapture:y.composeEventHandlers(e.onBlurCapture,O.onBlurCapture),onPointerDownCapture:y.composeEventHandlers(e.onPointerDownCapture,I.onPointerDownCapture)})});S.displayName=z;var X="DismissableLayerBranch",B=o.forwardRef((e,t)=>{const n=o.useContext(T),s=o.useRef(null),r=R.useComposedRefs(t,s);return o.useEffect(()=>{const a=s.current;if(a)return n.branches.add(a),()=>{n.branches.delete(a)}},[n.branches]),w.jsxRuntimeExports.jsx(p.Primitive.div,{...e,ref:r})});B.displayName=X;function Y(e,t=globalThis==null?void 0:globalThis.document){const n=x.useCallbackRef(e),s=o.useRef(!1),r=o.useRef(()=>{});return o.useEffect(()=>{const a=d=>{if(d.target&&!s.current){let v=function(){j(M,n,c,{discrete:!0})};const c={originalEvent:d};d.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=v,t.addEventListener("click",r.current,{once:!0})):v()}else t.removeEventListener("click",r.current);s.current=!1},l=window.setTimeout(()=>{t.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(l),t.removeEventListener("pointerdown",a),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>s.current=!0}}function G(e,t=globalThis==null?void 0:globalThis.document){const n=x.useCallbackRef(e),s=o.useRef(!1);return o.useEffect(()=>{const r=a=>{a.target&&!s.current&&j($,n,{originalEvent:a},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>s.current=!0,onBlurCapture:()=>s.current=!1}}function g(){const e=new CustomEvent(h);document.dispatchEvent(e)}function j(e,t,n,{discrete:s}){const r=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),s?p.dispatchDiscreteCustomEvent(r,a):r.dispatchEvent(a)}exports.DismissableLayer=S;exports.DismissableLayerBranch=B;
//# sourceMappingURL=index.cjs473.js.map