@data-slot/select 0.2.15 → 0.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function _(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const v=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),y=[`top`,`bottom`],b=[`start`,`center`,`end`],ee=[`item-aligned`,`popper`],te={top:`bottom`,bottom:`top`};function x(n,r={}){let i=e(n,`select-trigger`),a=e(n,`select-content`),o=e(n,`select-value`);if(!i||!a)throw Error(`Select requires trigger and content slots`);let s=r.defaultValue??f(n,`defaultValue`)??null,c=r.defaultOpen??u(n,`defaultOpen`)??!1,l=r.placeholder??f(n,`placeholder`)??``,m=r.disabled??u(n,`disabled`)??!1,x=r.required??u(n,`required`)??!1,C=r.name??f(n,`name`)??null,ne=r.onValueChange,re=r.onOpenChange,w=r.position??p(n,`position`,ee)??`item-aligned`,ie=r.side??p(a,`side`,y)??p(n,`side`,y)??`bottom`,T=r.align??p(a,`align`,b)??p(n,`align`,b)??`start`,E=r.sideOffset??d(a,`sideOffset`)??d(n,`sideOffset`)??4,D=r.alignOffset??d(a,`alignOffset`)??d(n,`alignOffset`)??0,O=r.avoidCollisions??u(a,`avoidCollisions`)??u(n,`avoidCollisions`)??!0,k=r.collisionPadding??d(a,`collisionPadding`)??d(n,`collisionPadding`)??8,A=!1,j=s,M=null,N=-1,P=``,F=null,I=!1,L=[],R=[],z=[],B=new Map,V=null,H=[],U=null,W=e=>e.hasAttribute(`disabled`)||e.hasAttribute(`data-disabled`)||e.getAttribute(`aria-disabled`)===`true`,ae=h(i,`select-trigger`),oe=h(a,`select-content`);i.setAttribute(`role`,`combobox`),i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-controls`,oe),i.hasAttribute(`type`)||i.setAttribute(`type`,`button`),a.setAttribute(`role`,`listbox`),a.setAttribute(`aria-labelledby`,ae),a.tabIndex=-1,m&&(i.setAttribute(`aria-disabled`,`true`),i.setAttribute(`data-disabled`,``)),x&&i.setAttribute(`aria-required`,`true`),C&&(U=document.createElement(`input`),U.type=`hidden`,U.name=C,U.value=j??``,n.appendChild(U));let G=()=>{R=t(a,`select-item`);for(let e of R){e.setAttribute(`role`,`option`),e.hasAttribute(`data-disabled`)||e.hasAttribute(`disabled`)?e.setAttribute(`aria-disabled`,`true`):e.removeAttribute(`aria-disabled`),e.tabIndex=-1;let t=e.dataset.value;t===j?(g(e,`selected`,!0),e.setAttribute(`data-selected`,``)):(g(e,`selected`,!1),e.removeAttribute(`data-selected`))}z=R.filter(e=>!W(e)),B=new Map(z.map((e,t)=>[e,t]));let n=t(a,`select-group`);for(let t of n){t.setAttribute(`role`,`group`);let n=e(t,`select-label`);if(n){let e=h(n,`select-label`);t.setAttribute(`aria-labelledby`,e)}}},K=(e,t,n,r)=>{let i=0,a=0;return a=e===`top`?n.top-r.height-E:n.bottom+E,i=t===`start`?n.left+D:t===`center`?n.left+n.width/2-r.width/2+D:n.right-r.width-D,{x:i,y:a}},se=(e,t)=>{let n=R.find(e=>e.dataset.value===j),r=e.left,i,a=0;if(n){let r=n.getBoundingClientRect();a=r.top-t.top,i=e.top+e.height/2-r.height/2-a}else i=e.top;return{x:r,y:i,itemOffsetTop:a}},q=()=>{let e=i.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight;a.style.minWidth=`${e.width}px`;let r=a.getBoundingClientRect(),o,s=`bottom`;if(w===`item-aligned`){let i=se(e,r);o={x:i.x,y:i.y},O&&(o.y<k?o.y=k:o.y+r.height>n-k&&(o.y=n-r.height-k),o.x<k?o.x=k:o.x+r.width>t-k&&(o.x=t-r.width-k)),s=o.y<e.top?`top`:`bottom`}else if(s=ie,o=K(s,T,e,r),O){let i=(e,t)=>e===`top`?t.y<k:t.y+r.height>n-k;if(i(s,o)){let t=te[s],n=K(t,T,e,r);i(t,n)||(s=t,o=n)}o.x<k?o.x=k:o.x+r.width>t-k&&(o.x=t-r.width-k),o.y<k?o.y=k:o.y+r.height>n-k&&(o.y=n-r.height-k)}a.style.position=`fixed`,a.style.top=`${o.y}px`,a.style.left=`${o.x}px`,a.style.margin=`0`,a.setAttribute(`data-side`,s),a.setAttribute(`data-align`,w===`item-aligned`?`center`:T)},ce=()=>{V===null&&(V=requestAnimationFrame(()=>{V=null,A&&q()}))},J=()=>{V!==null&&(cancelAnimationFrame(V),V=null),H.forEach(e=>e()),H.length=0},le=()=>{if(H.length>0)return;let e=()=>ce();window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),H.push(()=>window.removeEventListener(`resize`,e),()=>window.removeEventListener(`scroll`,e,!0));let t=new ResizeObserver(e);t.observe(i),t.observe(a),H.push(()=>t.disconnect())},Y=(e,t=!0)=>{for(let n=0;n<z.length;n++){let r=z[n];n===e?(r.setAttribute(`data-highlighted`,``),t&&r.focus()):r.removeAttribute(`data-highlighted`)}N=e},X=()=>{for(let e of R)e.removeAttribute(`data-highlighted`);N=-1},Z=e=>{n.setAttribute(`data-state`,e),i.setAttribute(`data-state`,e),a.setAttribute(`data-state`,e)},ue=()=>{if(o)if(j===null)o.textContent=l,i.setAttribute(`data-placeholder`,``);else{let e=R.find(e=>e.dataset.value===j),t=e?.dataset.label??e?.textContent?.trim()??j;o.textContent=t,i.removeAttribute(`data-placeholder`)}},Q=(e,t=!1)=>{if(A!==e&&!(m&&e)){if(e){M=document.activeElement,A=!0,g(i,`expanded`,!0),a.hidden=!1,Z(`open`),G(),I=!1;let e=z.findIndex(e=>e.dataset.value===j);e>=0?Y(e,!1):X(),le(),q(),a.focus()}else A=!1,g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),X(),P=``,I=!1,J(),t?M=null:requestAnimationFrame(()=>{M&&document.contains(M)?M.focus():i&&document.contains(i)&&i.focus(),M=null});v(n,`select:open-change`,{open:A}),re?.(A)}},$=(e,t=!1)=>{if(j===e&&!t)return;let r=j;j=e,U&&(U.value=e??``),e===null?n.removeAttribute(`data-value`):n.setAttribute(`data-value`,e);for(let t of R){let n=t.dataset.value;n===e?(g(t,`selected`,!0),t.setAttribute(`data-selected`,``)):(g(t,`selected`,!1),t.removeAttribute(`data-selected`))}ue(),!t&&r!==e&&(v(n,`select:change`,{value:e}),ne?.(e))},de=e=>{if(W(e))return;let t=e.dataset.value;t!==void 0&&($(t),Q(!1))},fe=e=>{let t=z.length;if(t!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),I=!0,Y(N===-1?0:(N+1)%t);break;case`ArrowUp`:e.preventDefault(),I=!0,Y(N===-1?t-1:(N-1+t)%t);break;case`Home`:e.preventDefault(),I=!0,Y(0);break;case`End`:e.preventDefault(),I=!0,Y(t-1);break;case`Enter`:case` `:e.preventDefault(),N>=0&&de(z[N]);break;case`Tab`:Q(!1,!0);break;case`Escape`:e.preventDefault(),Q(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),pe(e.key.toLowerCase()))}},pe=e=>{F&&clearTimeout(F),F=setTimeout(()=>{P=``},500),P+=e;let t=z.findIndex(e=>(e.textContent?.trim().toLowerCase()||``).startsWith(P));if(t===-1&&P.length===1){let n=N+1;for(let r=0;r<z.length;r++){let i=(n+r)%z.length;if((z[i].textContent?.trim().toLowerCase()||``).startsWith(e)){t=i;break}}}t!==-1&&(I=!0,Y(t))},me=e=>{if(!m)switch(e.key){case`Enter`:case` `:case`ArrowDown`:case`ArrowUp`:e.preventDefault(),Q(!0);break}};g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),G(),$(j,!0),L.push(_(i,`click`,()=>{m||Q(!A)}),_(i,`keydown`,me)),L.push(_(a,`keydown`,fe),_(a,`click`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);t&&de(t)}),_(a,`pointermove`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);if(!(I&&(I=!1,t&&B.get(t)===N))&&t&&!W(t)){let e=B.get(t);e!==void 0&&e!==N&&Y(e,!1)}}),_(a,`pointerleave`,()=>{I||X()})),L.push(_(document,`pointerdown`,e=>{let t=e.target;A&&!n.contains(t)&&!a.contains(t)&&Q(!1)})),L.push(_(n,`select:set`,e=>{let t=e.detail;t?.value!==void 0&&$(t.value),t?.open!==void 0&&Q(t.open)}));let he={get value(){return j},get isOpen(){return A},select:e=>$(e),open:()=>Q(!0),close:()=>Q(!1),destroy:()=>{F&&clearTimeout(F),J(),L.forEach(e=>e()),L.length=0,U&&U.parentNode&&U.parentNode.removeChild(U),S.delete(n)}};return c&&Q(!0),he}const S=new WeakSet;function C(e=document){let t=[];for(let r of n(e,`select`)){if(S.has(r))continue;S.add(r),t.push(x(r))}return t}exports.create=C,exports.createSelect=x;
1
+ const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function _(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const v=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),y=[`top`,`bottom`],b=[`start`,`center`,`end`],ee=[`item-aligned`,`popper`],te={top:`bottom`,bottom:`top`};function x(n,r={}){let i=e(n,`select-trigger`),a=e(n,`select-content`),o=e(n,`select-value`);if(!i||!a)throw Error(`Select requires trigger and content slots`);let s=r.defaultValue??f(n,`defaultValue`)??null,c=r.defaultOpen??u(n,`defaultOpen`)??!1,l=r.placeholder??f(n,`placeholder`)??(o?f(o,`placeholder`):void 0)??``,m=r.disabled??u(n,`disabled`)??!1,x=r.required??u(n,`required`)??!1,C=r.name??f(n,`name`)??null,ne=r.onValueChange,re=r.onOpenChange,w=r.position??p(n,`position`,ee)??`item-aligned`,ie=r.side??p(a,`side`,y)??p(n,`side`,y)??`bottom`,T=r.align??p(a,`align`,b)??p(n,`align`,b)??`start`,E=r.sideOffset??d(a,`sideOffset`)??d(n,`sideOffset`)??4,D=r.alignOffset??d(a,`alignOffset`)??d(n,`alignOffset`)??0,ae=r.avoidCollisions??u(a,`avoidCollisions`)??u(n,`avoidCollisions`)??!0,O=r.collisionPadding??d(a,`collisionPadding`)??d(n,`collisionPadding`)??8,k=!1,A=s,j=null,M=-1,N=``,P=null,F=!1,I=[],L=[],R=[],z=new Map,B=null,V=[],H=null,U=e=>e.hasAttribute(`disabled`)||e.hasAttribute(`data-disabled`)||e.getAttribute(`aria-disabled`)===`true`,oe=h(i,`select-trigger`),se=h(a,`select-content`);i.setAttribute(`role`,`combobox`),i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-controls`,se),i.hasAttribute(`type`)||i.setAttribute(`type`,`button`),a.setAttribute(`role`,`listbox`),a.setAttribute(`aria-labelledby`,oe),a.tabIndex=-1,m&&(i.setAttribute(`aria-disabled`,`true`),i.setAttribute(`data-disabled`,``)),x&&i.setAttribute(`aria-required`,`true`),C&&(H=document.createElement(`input`),H.type=`hidden`,H.name=C,H.value=A??``,n.appendChild(H));let W=()=>{L=t(a,`select-item`);for(let e of L){e.setAttribute(`role`,`option`),e.hasAttribute(`data-disabled`)||e.hasAttribute(`disabled`)?e.setAttribute(`aria-disabled`,`true`):e.removeAttribute(`aria-disabled`),e.tabIndex=-1;let t=e.dataset.value;t===A?(g(e,`selected`,!0),e.setAttribute(`data-selected`,``)):(g(e,`selected`,!1),e.removeAttribute(`data-selected`))}R=L.filter(e=>!U(e)),z=new Map(R.map((e,t)=>[e,t]));let n=t(a,`select-group`);for(let t of n){t.setAttribute(`role`,`group`);let n=e(t,`select-label`);if(n){let e=h(n,`select-label`);t.setAttribute(`aria-labelledby`,e)}}},G=(e,t,n,r)=>{let i=0,a=0;return a=e===`top`?n.top-r.height-E:n.bottom+E,i=t===`start`?n.left+D:t===`center`?n.left+n.width/2-r.width/2+D:n.right-r.width-D,{x:i,y:a}},ce=(e,t)=>{let n=L.find(e=>e.dataset.value===A),r=n??R[0],i=e.left,a,o=0;if(r){let n=r.getBoundingClientRect();o=n.top-t.top,a=e.top+e.height/2-n.height/2-o}else a=e.top;return{x:i,y:a,itemOffsetTop:o}},K=()=>{let e=i.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight;a.style.minWidth=`${e.width}px`;let r=a.getBoundingClientRect(),o,s=`bottom`;if(w===`item-aligned`){let i=ce(e,r);o={x:i.x,y:i.y},ae&&(o.y<O?o.y=O:o.y+r.height>n-O&&(o.y=n-r.height-O),o.x<O?o.x=O:o.x+r.width>t-O&&(o.x=t-r.width-O)),s=o.y<e.top?`top`:`bottom`}else if(s=ie,o=G(s,T,e,r),ae){let i=(e,t)=>e===`top`?t.y<O:t.y+r.height>n-O;if(i(s,o)){let t=te[s],n=G(t,T,e,r);i(t,n)||(s=t,o=n)}o.x<O?o.x=O:o.x+r.width>t-O&&(o.x=t-r.width-O),o.y<O?o.y=O:o.y+r.height>n-O&&(o.y=n-r.height-O)}a.style.position=`fixed`,a.style.top=`${o.y}px`,a.style.left=`${o.x}px`,a.style.margin=`0`,a.setAttribute(`data-side`,s),a.setAttribute(`data-align`,w===`item-aligned`?`center`:T)},q=()=>{B===null&&(B=requestAnimationFrame(()=>{B=null,k&&K()}))},J=()=>{B!==null&&(cancelAnimationFrame(B),B=null),V.forEach(e=>e()),V.length=0},le=()=>{if(V.length>0)return;let e=()=>q(),t=e=>{e.target instanceof Node&&a.contains(e.target)||q()};window.addEventListener(`resize`,e),window.addEventListener(`scroll`,t,!0),V.push(()=>window.removeEventListener(`resize`,e),()=>window.removeEventListener(`scroll`,t,!0));let n=new ResizeObserver(e);n.observe(i),n.observe(a),V.push(()=>n.disconnect())},Y=(e,t=!0)=>{for(let n=0;n<R.length;n++){let r=R[n];n===e?(r.setAttribute(`data-highlighted`,``),t&&r.focus()):r.removeAttribute(`data-highlighted`)}M=e},X=()=>{for(let e of L)e.removeAttribute(`data-highlighted`);M=-1},Z=e=>{n.setAttribute(`data-state`,e),i.setAttribute(`data-state`,e),a.setAttribute(`data-state`,e)},ue=()=>{if(o)if(A===null)o.textContent=l,i.setAttribute(`data-placeholder`,``);else{let e=L.find(e=>e.dataset.value===A),t=e?.dataset.label??e?.textContent?.trim()??A;o.textContent=t,i.removeAttribute(`data-placeholder`)}},Q=(e,t=!1)=>{if(k!==e&&!(m&&e)){if(e){j=document.activeElement,k=!0,g(i,`expanded`,!0),a.hidden=!1,Z(`open`),W(),F=!1;let e=R.findIndex(e=>e.dataset.value===A);e>=0?Y(e,!1):X(),le(),K(),a.focus()}else k=!1,g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),X(),N=``,F=!1,J(),t?j=null:requestAnimationFrame(()=>{j&&document.contains(j)?j.focus():i&&document.contains(i)&&i.focus(),j=null});v(n,`select:open-change`,{open:k}),re?.(k)}},$=(e,t=!1)=>{if(A===e&&!t)return;let r=A;A=e,H&&(H.value=e??``),e===null?n.removeAttribute(`data-value`):n.setAttribute(`data-value`,e);for(let t of L){let n=t.dataset.value;n===e?(g(t,`selected`,!0),t.setAttribute(`data-selected`,``)):(g(t,`selected`,!1),t.removeAttribute(`data-selected`))}ue(),!t&&r!==e&&(v(n,`select:change`,{value:e}),ne?.(e))},de=e=>{if(U(e))return;let t=e.dataset.value;t!==void 0&&($(t),Q(!1))},fe=e=>{let t=R.length;if(t!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),F=!0,Y(M===-1?0:(M+1)%t);break;case`ArrowUp`:e.preventDefault(),F=!0,Y(M===-1?t-1:(M-1+t)%t);break;case`Home`:e.preventDefault(),F=!0,Y(0);break;case`End`:e.preventDefault(),F=!0,Y(t-1);break;case`Enter`:case` `:e.preventDefault(),M>=0&&de(R[M]);break;case`Tab`:Q(!1,!0);break;case`Escape`:e.preventDefault(),Q(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),pe(e.key.toLowerCase()))}},pe=e=>{P&&clearTimeout(P),P=setTimeout(()=>{N=``},500),N+=e;let t=R.findIndex(e=>(e.textContent?.trim().toLowerCase()||``).startsWith(N));if(t===-1&&N.length===1){let n=M+1;for(let r=0;r<R.length;r++){let i=(n+r)%R.length;if((R[i].textContent?.trim().toLowerCase()||``).startsWith(e)){t=i;break}}}t!==-1&&(F=!0,Y(t))},me=e=>{if(!m)switch(e.key){case`Enter`:case` `:case`ArrowDown`:case`ArrowUp`:e.preventDefault(),Q(!0);break}};g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),W(),$(A,!0),I.push(_(i,`click`,()=>{m||Q(!k)}),_(i,`keydown`,me)),I.push(_(a,`keydown`,fe),_(a,`click`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);t&&de(t)}),_(a,`pointermove`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);if(!(F&&(F=!1,t&&z.get(t)===M))&&t&&!U(t)){let e=z.get(t);e!==void 0&&e!==M&&Y(e,!1)}}),_(a,`pointerleave`,()=>{F||X()})),I.push(_(document,`pointerdown`,e=>{let t=e.target;k&&!n.contains(t)&&!a.contains(t)&&Q(!1)})),I.push(_(n,`select:set`,e=>{let t=e.detail;t?.value!==void 0&&$(t.value),t?.open!==void 0&&Q(t.open)}));let he={get value(){return A},get isOpen(){return k},select:e=>$(e),open:()=>Q(!0),close:()=>Q(!1),destroy:()=>{P&&clearTimeout(P),J(),I.forEach(e=>e()),I.length=0,H&&H.parentNode&&H.parentNode.removeChild(H),S.delete(n)}};return c&&Q(!0),he}const S=new WeakSet;function C(e=document){let t=[];for(let r of n(e,`select`)){if(S.has(r))continue;S.add(r),t.push(x(r))}return t}exports.create=C,exports.createSelect=x;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function _(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const v=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),y=[`top`,`bottom`],b=[`start`,`center`,`end`],ee=[`item-aligned`,`popper`],te={top:`bottom`,bottom:`top`};function x(n,r={}){let i=e(n,`select-trigger`),a=e(n,`select-content`),o=e(n,`select-value`);if(!i||!a)throw Error(`Select requires trigger and content slots`);let s=r.defaultValue??f(n,`defaultValue`)??null,c=r.defaultOpen??u(n,`defaultOpen`)??!1,l=r.placeholder??f(n,`placeholder`)??``,m=r.disabled??u(n,`disabled`)??!1,x=r.required??u(n,`required`)??!1,C=r.name??f(n,`name`)??null,ne=r.onValueChange,re=r.onOpenChange,w=r.position??p(n,`position`,ee)??`item-aligned`,ie=r.side??p(a,`side`,y)??p(n,`side`,y)??`bottom`,T=r.align??p(a,`align`,b)??p(n,`align`,b)??`start`,E=r.sideOffset??d(a,`sideOffset`)??d(n,`sideOffset`)??4,D=r.alignOffset??d(a,`alignOffset`)??d(n,`alignOffset`)??0,O=r.avoidCollisions??u(a,`avoidCollisions`)??u(n,`avoidCollisions`)??!0,k=r.collisionPadding??d(a,`collisionPadding`)??d(n,`collisionPadding`)??8,A=!1,j=s,M=null,N=-1,P=``,F=null,I=!1,L=[],R=[],z=[],B=new Map,V=null,H=[],U=null,W=e=>e.hasAttribute(`disabled`)||e.hasAttribute(`data-disabled`)||e.getAttribute(`aria-disabled`)===`true`,ae=h(i,`select-trigger`),oe=h(a,`select-content`);i.setAttribute(`role`,`combobox`),i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-controls`,oe),i.hasAttribute(`type`)||i.setAttribute(`type`,`button`),a.setAttribute(`role`,`listbox`),a.setAttribute(`aria-labelledby`,ae),a.tabIndex=-1,m&&(i.setAttribute(`aria-disabled`,`true`),i.setAttribute(`data-disabled`,``)),x&&i.setAttribute(`aria-required`,`true`),C&&(U=document.createElement(`input`),U.type=`hidden`,U.name=C,U.value=j??``,n.appendChild(U));let G=()=>{R=t(a,`select-item`);for(let e of R){e.setAttribute(`role`,`option`),e.hasAttribute(`data-disabled`)||e.hasAttribute(`disabled`)?e.setAttribute(`aria-disabled`,`true`):e.removeAttribute(`aria-disabled`),e.tabIndex=-1;let t=e.dataset.value;t===j?(g(e,`selected`,!0),e.setAttribute(`data-selected`,``)):(g(e,`selected`,!1),e.removeAttribute(`data-selected`))}z=R.filter(e=>!W(e)),B=new Map(z.map((e,t)=>[e,t]));let n=t(a,`select-group`);for(let t of n){t.setAttribute(`role`,`group`);let n=e(t,`select-label`);if(n){let e=h(n,`select-label`);t.setAttribute(`aria-labelledby`,e)}}},K=(e,t,n,r)=>{let i=0,a=0;return a=e===`top`?n.top-r.height-E:n.bottom+E,i=t===`start`?n.left+D:t===`center`?n.left+n.width/2-r.width/2+D:n.right-r.width-D,{x:i,y:a}},se=(e,t)=>{let n=R.find(e=>e.dataset.value===j),r=e.left,i,a=0;if(n){let r=n.getBoundingClientRect();a=r.top-t.top,i=e.top+e.height/2-r.height/2-a}else i=e.top;return{x:r,y:i,itemOffsetTop:a}},q=()=>{let e=i.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight;a.style.minWidth=`${e.width}px`;let r=a.getBoundingClientRect(),o,s=`bottom`;if(w===`item-aligned`){let i=se(e,r);o={x:i.x,y:i.y},O&&(o.y<k?o.y=k:o.y+r.height>n-k&&(o.y=n-r.height-k),o.x<k?o.x=k:o.x+r.width>t-k&&(o.x=t-r.width-k)),s=o.y<e.top?`top`:`bottom`}else if(s=ie,o=K(s,T,e,r),O){let i=(e,t)=>e===`top`?t.y<k:t.y+r.height>n-k;if(i(s,o)){let t=te[s],n=K(t,T,e,r);i(t,n)||(s=t,o=n)}o.x<k?o.x=k:o.x+r.width>t-k&&(o.x=t-r.width-k),o.y<k?o.y=k:o.y+r.height>n-k&&(o.y=n-r.height-k)}a.style.position=`fixed`,a.style.top=`${o.y}px`,a.style.left=`${o.x}px`,a.style.margin=`0`,a.setAttribute(`data-side`,s),a.setAttribute(`data-align`,w===`item-aligned`?`center`:T)},ce=()=>{V===null&&(V=requestAnimationFrame(()=>{V=null,A&&q()}))},J=()=>{V!==null&&(cancelAnimationFrame(V),V=null),H.forEach(e=>e()),H.length=0},le=()=>{if(H.length>0)return;let e=()=>ce();window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),H.push(()=>window.removeEventListener(`resize`,e),()=>window.removeEventListener(`scroll`,e,!0));let t=new ResizeObserver(e);t.observe(i),t.observe(a),H.push(()=>t.disconnect())},Y=(e,t=!0)=>{for(let n=0;n<z.length;n++){let r=z[n];n===e?(r.setAttribute(`data-highlighted`,``),t&&r.focus()):r.removeAttribute(`data-highlighted`)}N=e},X=()=>{for(let e of R)e.removeAttribute(`data-highlighted`);N=-1},Z=e=>{n.setAttribute(`data-state`,e),i.setAttribute(`data-state`,e),a.setAttribute(`data-state`,e)},ue=()=>{if(o)if(j===null)o.textContent=l,i.setAttribute(`data-placeholder`,``);else{let e=R.find(e=>e.dataset.value===j),t=e?.dataset.label??e?.textContent?.trim()??j;o.textContent=t,i.removeAttribute(`data-placeholder`)}},Q=(e,t=!1)=>{if(A!==e&&!(m&&e)){if(e){M=document.activeElement,A=!0,g(i,`expanded`,!0),a.hidden=!1,Z(`open`),G(),I=!1;let e=z.findIndex(e=>e.dataset.value===j);e>=0?Y(e,!1):X(),le(),q(),a.focus()}else A=!1,g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),X(),P=``,I=!1,J(),t?M=null:requestAnimationFrame(()=>{M&&document.contains(M)?M.focus():i&&document.contains(i)&&i.focus(),M=null});v(n,`select:open-change`,{open:A}),re?.(A)}},$=(e,t=!1)=>{if(j===e&&!t)return;let r=j;j=e,U&&(U.value=e??``),e===null?n.removeAttribute(`data-value`):n.setAttribute(`data-value`,e);for(let t of R){let n=t.dataset.value;n===e?(g(t,`selected`,!0),t.setAttribute(`data-selected`,``)):(g(t,`selected`,!1),t.removeAttribute(`data-selected`))}ue(),!t&&r!==e&&(v(n,`select:change`,{value:e}),ne?.(e))},de=e=>{if(W(e))return;let t=e.dataset.value;t!==void 0&&($(t),Q(!1))},fe=e=>{let t=z.length;if(t!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),I=!0,Y(N===-1?0:(N+1)%t);break;case`ArrowUp`:e.preventDefault(),I=!0,Y(N===-1?t-1:(N-1+t)%t);break;case`Home`:e.preventDefault(),I=!0,Y(0);break;case`End`:e.preventDefault(),I=!0,Y(t-1);break;case`Enter`:case` `:e.preventDefault(),N>=0&&de(z[N]);break;case`Tab`:Q(!1,!0);break;case`Escape`:e.preventDefault(),Q(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),pe(e.key.toLowerCase()))}},pe=e=>{F&&clearTimeout(F),F=setTimeout(()=>{P=``},500),P+=e;let t=z.findIndex(e=>(e.textContent?.trim().toLowerCase()||``).startsWith(P));if(t===-1&&P.length===1){let n=N+1;for(let r=0;r<z.length;r++){let i=(n+r)%z.length;if((z[i].textContent?.trim().toLowerCase()||``).startsWith(e)){t=i;break}}}t!==-1&&(I=!0,Y(t))},me=e=>{if(!m)switch(e.key){case`Enter`:case` `:case`ArrowDown`:case`ArrowUp`:e.preventDefault(),Q(!0);break}};g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),G(),$(j,!0),L.push(_(i,`click`,()=>{m||Q(!A)}),_(i,`keydown`,me)),L.push(_(a,`keydown`,fe),_(a,`click`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);t&&de(t)}),_(a,`pointermove`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);if(!(I&&(I=!1,t&&B.get(t)===N))&&t&&!W(t)){let e=B.get(t);e!==void 0&&e!==N&&Y(e,!1)}}),_(a,`pointerleave`,()=>{I||X()})),L.push(_(document,`pointerdown`,e=>{let t=e.target;A&&!n.contains(t)&&!a.contains(t)&&Q(!1)})),L.push(_(n,`select:set`,e=>{let t=e.detail;t?.value!==void 0&&$(t.value),t?.open!==void 0&&Q(t.open)}));let he={get value(){return j},get isOpen(){return A},select:e=>$(e),open:()=>Q(!0),close:()=>Q(!1),destroy:()=>{F&&clearTimeout(F),J(),L.forEach(e=>e()),L.length=0,U&&U.parentNode&&U.parentNode.removeChild(U),S.delete(n)}};return c&&Q(!0),he}const S=new WeakSet;function C(e=document){let t=[];for(let r of n(e,`select`)){if(S.has(r))continue;S.add(r),t.push(x(r))}return t}export{C as create,x as createSelect};
1
+ const e=(e,t)=>e.querySelector(`[data-slot="${t}"]`),t=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],n=(e,t)=>[...e.querySelectorAll(`[data-slot="${t}"]`)],r=new WeakMap;function i(e,t,n){if(typeof process<`u`&&process.env?.NODE_ENV===`production`)return;let i=r.get(e);i||(i=new Set,r.set(e,i)),!i.has(t)&&(i.add(t),console.warn(`[@data-slot] ${n}`))}function a(e){let t=`data-${e.replace(/([A-Z])/g,`-$1`).toLowerCase()}`,n=`data-${e}`;return t===n?[t]:[t,n]}function o(e,t){for(let n of a(t))if(e.hasAttribute(n))return e.getAttribute(n);return null}function s(e,t){return a(t).some(t=>e.hasAttribute(t))}const c=new Set([``,`true`,`1`,`yes`]),l=new Set([`false`,`0`,`no`]);function u(e,t){if(!s(e,t))return;let n=o(e,t);if(n===null)return;let r=n.toLowerCase();if(c.has(r))return!0;if(l.has(r))return!1;i(e,t,`Invalid boolean value "${n}" for data-${t}. Expected: true/false/1/0/yes/no or empty.`)}function d(e,t){let n=o(e,t);if(n===null||n===``)return;let r=Number(n);if(Number.isNaN(r)||!Number.isFinite(r)){i(e,t,`Invalid number value "${n}" for data-${t}.`);return}return r}function f(e,t){if(s(e,t))return o(e,t)??void 0}function p(e,t,n){let r=o(e,t);if(r!==null){if(n.includes(r))return r;i(e,t,`Invalid value "${r}" for data-${t}. Expected one of: ${n.join(`, `)}.`)}}let m=0;const h=(e,t)=>e.id||=`${t}-${++m}`,g=(e,t,n)=>{n===null?e.removeAttribute(`aria-${t}`):e.setAttribute(`aria-${t}`,String(n))};function _(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}const v=(e,t,n)=>e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:n})),y=[`top`,`bottom`],b=[`start`,`center`,`end`],ee=[`item-aligned`,`popper`],te={top:`bottom`,bottom:`top`};function x(n,r={}){let i=e(n,`select-trigger`),a=e(n,`select-content`),o=e(n,`select-value`);if(!i||!a)throw Error(`Select requires trigger and content slots`);let s=r.defaultValue??f(n,`defaultValue`)??null,c=r.defaultOpen??u(n,`defaultOpen`)??!1,l=r.placeholder??f(n,`placeholder`)??(o?f(o,`placeholder`):void 0)??``,m=r.disabled??u(n,`disabled`)??!1,x=r.required??u(n,`required`)??!1,C=r.name??f(n,`name`)??null,ne=r.onValueChange,re=r.onOpenChange,w=r.position??p(n,`position`,ee)??`item-aligned`,ie=r.side??p(a,`side`,y)??p(n,`side`,y)??`bottom`,T=r.align??p(a,`align`,b)??p(n,`align`,b)??`start`,E=r.sideOffset??d(a,`sideOffset`)??d(n,`sideOffset`)??4,D=r.alignOffset??d(a,`alignOffset`)??d(n,`alignOffset`)??0,ae=r.avoidCollisions??u(a,`avoidCollisions`)??u(n,`avoidCollisions`)??!0,O=r.collisionPadding??d(a,`collisionPadding`)??d(n,`collisionPadding`)??8,k=!1,A=s,j=null,M=-1,N=``,P=null,F=!1,I=[],L=[],R=[],z=new Map,B=null,V=[],H=null,U=e=>e.hasAttribute(`disabled`)||e.hasAttribute(`data-disabled`)||e.getAttribute(`aria-disabled`)===`true`,oe=h(i,`select-trigger`),se=h(a,`select-content`);i.setAttribute(`role`,`combobox`),i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-controls`,se),i.hasAttribute(`type`)||i.setAttribute(`type`,`button`),a.setAttribute(`role`,`listbox`),a.setAttribute(`aria-labelledby`,oe),a.tabIndex=-1,m&&(i.setAttribute(`aria-disabled`,`true`),i.setAttribute(`data-disabled`,``)),x&&i.setAttribute(`aria-required`,`true`),C&&(H=document.createElement(`input`),H.type=`hidden`,H.name=C,H.value=A??``,n.appendChild(H));let W=()=>{L=t(a,`select-item`);for(let e of L){e.setAttribute(`role`,`option`),e.hasAttribute(`data-disabled`)||e.hasAttribute(`disabled`)?e.setAttribute(`aria-disabled`,`true`):e.removeAttribute(`aria-disabled`),e.tabIndex=-1;let t=e.dataset.value;t===A?(g(e,`selected`,!0),e.setAttribute(`data-selected`,``)):(g(e,`selected`,!1),e.removeAttribute(`data-selected`))}R=L.filter(e=>!U(e)),z=new Map(R.map((e,t)=>[e,t]));let n=t(a,`select-group`);for(let t of n){t.setAttribute(`role`,`group`);let n=e(t,`select-label`);if(n){let e=h(n,`select-label`);t.setAttribute(`aria-labelledby`,e)}}},G=(e,t,n,r)=>{let i=0,a=0;return a=e===`top`?n.top-r.height-E:n.bottom+E,i=t===`start`?n.left+D:t===`center`?n.left+n.width/2-r.width/2+D:n.right-r.width-D,{x:i,y:a}},ce=(e,t)=>{let n=L.find(e=>e.dataset.value===A),r=n??R[0],i=e.left,a,o=0;if(r){let n=r.getBoundingClientRect();o=n.top-t.top,a=e.top+e.height/2-n.height/2-o}else a=e.top;return{x:i,y:a,itemOffsetTop:o}},K=()=>{let e=i.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight;a.style.minWidth=`${e.width}px`;let r=a.getBoundingClientRect(),o,s=`bottom`;if(w===`item-aligned`){let i=ce(e,r);o={x:i.x,y:i.y},ae&&(o.y<O?o.y=O:o.y+r.height>n-O&&(o.y=n-r.height-O),o.x<O?o.x=O:o.x+r.width>t-O&&(o.x=t-r.width-O)),s=o.y<e.top?`top`:`bottom`}else if(s=ie,o=G(s,T,e,r),ae){let i=(e,t)=>e===`top`?t.y<O:t.y+r.height>n-O;if(i(s,o)){let t=te[s],n=G(t,T,e,r);i(t,n)||(s=t,o=n)}o.x<O?o.x=O:o.x+r.width>t-O&&(o.x=t-r.width-O),o.y<O?o.y=O:o.y+r.height>n-O&&(o.y=n-r.height-O)}a.style.position=`fixed`,a.style.top=`${o.y}px`,a.style.left=`${o.x}px`,a.style.margin=`0`,a.setAttribute(`data-side`,s),a.setAttribute(`data-align`,w===`item-aligned`?`center`:T)},q=()=>{B===null&&(B=requestAnimationFrame(()=>{B=null,k&&K()}))},J=()=>{B!==null&&(cancelAnimationFrame(B),B=null),V.forEach(e=>e()),V.length=0},le=()=>{if(V.length>0)return;let e=()=>q(),t=e=>{e.target instanceof Node&&a.contains(e.target)||q()};window.addEventListener(`resize`,e),window.addEventListener(`scroll`,t,!0),V.push(()=>window.removeEventListener(`resize`,e),()=>window.removeEventListener(`scroll`,t,!0));let n=new ResizeObserver(e);n.observe(i),n.observe(a),V.push(()=>n.disconnect())},Y=(e,t=!0)=>{for(let n=0;n<R.length;n++){let r=R[n];n===e?(r.setAttribute(`data-highlighted`,``),t&&r.focus()):r.removeAttribute(`data-highlighted`)}M=e},X=()=>{for(let e of L)e.removeAttribute(`data-highlighted`);M=-1},Z=e=>{n.setAttribute(`data-state`,e),i.setAttribute(`data-state`,e),a.setAttribute(`data-state`,e)},ue=()=>{if(o)if(A===null)o.textContent=l,i.setAttribute(`data-placeholder`,``);else{let e=L.find(e=>e.dataset.value===A),t=e?.dataset.label??e?.textContent?.trim()??A;o.textContent=t,i.removeAttribute(`data-placeholder`)}},Q=(e,t=!1)=>{if(k!==e&&!(m&&e)){if(e){j=document.activeElement,k=!0,g(i,`expanded`,!0),a.hidden=!1,Z(`open`),W(),F=!1;let e=R.findIndex(e=>e.dataset.value===A);e>=0?Y(e,!1):X(),le(),K(),a.focus()}else k=!1,g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),X(),N=``,F=!1,J(),t?j=null:requestAnimationFrame(()=>{j&&document.contains(j)?j.focus():i&&document.contains(i)&&i.focus(),j=null});v(n,`select:open-change`,{open:k}),re?.(k)}},$=(e,t=!1)=>{if(A===e&&!t)return;let r=A;A=e,H&&(H.value=e??``),e===null?n.removeAttribute(`data-value`):n.setAttribute(`data-value`,e);for(let t of L){let n=t.dataset.value;n===e?(g(t,`selected`,!0),t.setAttribute(`data-selected`,``)):(g(t,`selected`,!1),t.removeAttribute(`data-selected`))}ue(),!t&&r!==e&&(v(n,`select:change`,{value:e}),ne?.(e))},de=e=>{if(U(e))return;let t=e.dataset.value;t!==void 0&&($(t),Q(!1))},fe=e=>{let t=R.length;if(t!==0)switch(e.key){case`ArrowDown`:e.preventDefault(),F=!0,Y(M===-1?0:(M+1)%t);break;case`ArrowUp`:e.preventDefault(),F=!0,Y(M===-1?t-1:(M-1+t)%t);break;case`Home`:e.preventDefault(),F=!0,Y(0);break;case`End`:e.preventDefault(),F=!0,Y(t-1);break;case`Enter`:case` `:e.preventDefault(),M>=0&&de(R[M]);break;case`Tab`:Q(!1,!0);break;case`Escape`:e.preventDefault(),Q(!1);break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&(e.preventDefault(),pe(e.key.toLowerCase()))}},pe=e=>{P&&clearTimeout(P),P=setTimeout(()=>{N=``},500),N+=e;let t=R.findIndex(e=>(e.textContent?.trim().toLowerCase()||``).startsWith(N));if(t===-1&&N.length===1){let n=M+1;for(let r=0;r<R.length;r++){let i=(n+r)%R.length;if((R[i].textContent?.trim().toLowerCase()||``).startsWith(e)){t=i;break}}}t!==-1&&(F=!0,Y(t))},me=e=>{if(!m)switch(e.key){case`Enter`:case` `:case`ArrowDown`:case`ArrowUp`:e.preventDefault(),Q(!0);break}};g(i,`expanded`,!1),a.hidden=!0,Z(`closed`),W(),$(A,!0),I.push(_(i,`click`,()=>{m||Q(!k)}),_(i,`keydown`,me)),I.push(_(a,`keydown`,fe),_(a,`click`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);t&&de(t)}),_(a,`pointermove`,e=>{let t=e.target.closest?.(`[data-slot="select-item"]`);if(!(F&&(F=!1,t&&z.get(t)===M))&&t&&!U(t)){let e=z.get(t);e!==void 0&&e!==M&&Y(e,!1)}}),_(a,`pointerleave`,()=>{F||X()})),I.push(_(document,`pointerdown`,e=>{let t=e.target;k&&!n.contains(t)&&!a.contains(t)&&Q(!1)})),I.push(_(n,`select:set`,e=>{let t=e.detail;t?.value!==void 0&&$(t.value),t?.open!==void 0&&Q(t.open)}));let he={get value(){return A},get isOpen(){return k},select:e=>$(e),open:()=>Q(!0),close:()=>Q(!1),destroy:()=>{P&&clearTimeout(P),J(),I.forEach(e=>e()),I.length=0,H&&H.parentNode&&H.parentNode.removeChild(H),S.delete(n)}};return c&&Q(!0),he}const S=new WeakSet;function C(e=document){let t=[];for(let r of n(e,`select`)){if(S.has(r))continue;S.add(r),t.push(x(r))}return t}export{C as create,x as createSelect};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-slot/select",
3
- "version": "0.2.15",
3
+ "version": "0.2.17",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.cjs",