UNPKG

@ebay/ui-core-react

Version:

Skin components build off React

2 lines (1 loc) 1.77 kB
"use strict";const a=require("react"),l=require("makeup-expander"),L=require("makeup-active-descendant");require("@floating-ui/react");const{default:D=l}=l?.default?.__esModule?l.default:l;function h({ref:e,expanded:d,options:v,onExpand:c,onCollapse:i},s){const t=a.useRef(null),o=a.useSyncExternalStore(n=>{var r,u;function _(){n(),c?.()}function E(){n(),i?.()}return(r=e?.current)===null||r===void 0||r.addEventListener("expander-expand",_),(u=e?.current)===null||u===void 0||u.addEventListener("expander-collapse",E),()=>{var x,p;(x=e?.current)===null||x===void 0||x.removeEventListener("expander-expand",_),(p=e?.current)===null||p===void 0||p.removeEventListener("expander-collapse",E)}},()=>{var n;return(n=t.current)===null||n===void 0?void 0:n.expanded},()=>!1);return a.useEffect(()=>(e?.current&&(t.current=new D(e.current,v)),()=>{var n;(n=t.current)===null||n===void 0||n.destroy()}),s||[]),a.useEffect(()=>{t.current&&d!==void 0&&(t.current.expanded=d)},[d]),{isExpanded:o,expand:()=>{t.current&&(t.current.expanded=!0)},collapse:()=>{t.current&&(t.current.expanded=!1)}}}function I({ref:e,focusElementRef:d,itemContainerRef:v,onChange:c=()=>null,disabled:i,options:s}){const t=a.useRef(null);return a.useEffect(()=>{const o=n=>{const r={toIndex:n.detail.toIndex};c(n,r)};return i||(t.current=L.createLinear(e.current,d?d.current:e.current,v?v.current:e.current,"[role=option]",s),e.current.addEventListener("activeDescendantChange",o)),()=>{var n,r,u;(n=t.current)===null||n===void 0||n.reset(),(r=t.current)===null||r===void 0||r.destroy(),(u=e.current)===null||u===void 0||u.removeEventListener("activeDescendantChange",o)}},[i,c]),{setIndex(o){t.current.index=o},getIndex(){return t.current.index}}}exports.useActiveDescendant=I;exports.useExpander=h;