@headlessui/react
Advanced tools
Comparing version 0.0.0-insiders.2b7a57e to 0.0.0-insiders.2d3ec80
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as b}from"@react-aria/focus";import{useHover as c}from"@react-aria/interactions";import{useMemo as P}from"react";import{useActivePress as B}from'../../hooks/use-active-press.js';import{useDisabled as A}from'../../internal/disabled.js';import{forwardRefWithAs as F,mergeProps as g,render as _}from'../../utils/render.js';let v="button";function E(o,l){var p,a;let i=A(),{disabled:e=i||!1,...t}=o,{isFocusVisible:s,focusProps:T}=b({autoFocus:(p=o.autoFocus)!=null?p:!1}),{isHovered:n,hoverProps:f}=c({isDisabled:e}),{pressed:r,pressProps:m}=B({disabled:e}),d=g({ref:l,disabled:e||void 0,type:(a=t.type)!=null?a:"button"},T,f,m),y=P(()=>{var u;return{disabled:e,hover:n,focus:s,active:r,autofocus:(u=o.autoFocus)!=null?u:!1}},[e,n,s,r,o.autoFocus]);return _({ourProps:d,theirProps:t,slot:y,defaultTag:v,name:"Button"})}let H=F(E);export{H as Button}; | ||
"use client";import{useFocusRing as y}from"@react-aria/focus";import{useHover as b}from"@react-aria/interactions";import{useMemo as P}from"react";import{useActivePress as B}from'../../hooks/use-active-press.js';import{useDisabled as c}from'../../internal/disabled.js';import{forwardRefWithAs as A,mergeProps as g,render as _}from'../../utils/render.js';let v="button";function E(a,u){var p;let l=c(),{disabled:e=l||!1,autoFocus:t=!1,...o}=a,{isFocusVisible:r,focusProps:i}=y({autoFocus:t}),{isHovered:s,hoverProps:T}=b({isDisabled:e}),{pressed:n,pressProps:f}=B({disabled:e}),m=g({ref:u,type:(p=o.type)!=null?p:"button",disabled:e||void 0,autoFocus:t},i,T,f),d=P(()=>({disabled:e,hover:s,focus:r,active:n,autofocus:t}),[e,s,r,n,t]);return _({ourProps:m,theirProps:o,slot:d,defaultTag:v,name:"Button"})}let h=A(E);export{h as Button}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as X}from"@react-aria/focus";import{useHover as G}from"@react-aria/interactions";import n,{useCallback as U,useMemo as S,useState as W}from"react";import{useActivePress as N}from'../../hooks/use-active-press.js';import{useControllable as J}from'../../hooks/use-controllable.js';import{useDisposables as V}from'../../hooks/use-disposables.js';import{useEvent as l}from'../../hooks/use-event.js';import{useId as $}from'../../hooks/use-id.js';import{useDisabled as j}from'../../internal/disabled.js';import{FormFields as q}from'../../internal/form-fields.js';import{useProvidedId as z}from'../../internal/id.js';import{isDisabledReactIssue7711 as T}from'../../utils/bugs.js';import{forwardRefWithAs as Q,mergeProps as Y,render as Z}from'../../utils/render.js';import{useDescribedBy as ee}from'../description/description.js';import{Keys as oe}from'../keyboard.js';import{useLabelledBy as te}from'../label/label.js';let re="span";function ae(a,h){var y;let C=$(),k=z(),x=j(),{id:g=k||`headlessui-checkbox-${C}`,disabled:e=x||!1,checked:E,defaultChecked:i=!1,onChange:v,name:d,value:P,form:D,indeterminate:s=!1,...F}=a,[r,t]=J(E,v,i),A=te(),R=ee(),_=V(),[c,p]=W(!1),u=l(()=>{p(!0),t==null||t(!r),_.nextFrame(()=>{p(!1)})}),K=l(o=>{if(T(o.currentTarget))return o.preventDefault();u()}),H=l(o=>{if(T(o.currentTarget))return o.preventDefault();switch(o.key){case oe.Space:o.preventDefault(),u();break}}),{isFocusVisible:f,focusProps:B}=X({autoFocus:(y=a.autoFocus)!=null?y:!1}),{isHovered:m,hoverProps:I}=G({isDisabled:e!=null?e:!1}),{pressed:b,pressProps:L}=N({disabled:e!=null?e:!1}),w=Y({ref:h,id:g,role:"checkbox","aria-checked":s?"mixed":r?"true":"false","aria-labelledby":A,"aria-describedby":R,"aria-disabled":e?!0:void 0,indeterminate:s?"true":void 0,tabIndex:0,onKeyDown:e?void 0:H,onClick:e?void 0:K},B,I,L),M=S(()=>{var o;return{checked:r,disabled:e,hover:m,focus:f,active:b,indeterminate:s,changing:c,autofocus:(o=a.autoFocus)!=null?o:!1}},[r,s,e,m,f,b,c,a.autoFocus]),O=U(()=>t==null?void 0:t(i),[t]);return n.createElement(n.Fragment,null,d!=null&&n.createElement(q,{data:r?{[d]:P||"on"}:{},form:D,onReset:O}),Z({ourProps:w,theirProps:F,slot:M,defaultTag:re,name:"Checkbox"}))}let xe=Q(ae);export{xe as Checkbox}; | ||
"use client";import{useFocusRing as S}from"@react-aria/focus";import{useHover as W}from"@react-aria/interactions";import i,{useCallback as N,useMemo as V,useState as w}from"react";import{useActivePress as J}from'../../hooks/use-active-press.js';import{useControllable as $}from'../../hooks/use-controllable.js';import{useDefaultValue as j}from'../../hooks/use-default-value.js';import{useDisposables as q}from'../../hooks/use-disposables.js';import{useEvent as l}from'../../hooks/use-event.js';import{useId as z}from'../../hooks/use-id.js';import{useDisabled as Q}from'../../internal/disabled.js';import{FormFields as Y}from'../../internal/form-fields.js';import{useProvidedId as Z}from'../../internal/id.js';import{isDisabledReactIssue7711 as ee}from'../../utils/bugs.js';import{attemptSubmit as oe}from'../../utils/form.js';import{forwardRefWithAs as te,mergeProps as re,render as ae}from'../../utils/render.js';import{useDescribedBy as ne}from'../description/description.js';import{Keys as y}from'../keyboard.js';import{useLabelledBy as le}from'../label/label.js';let se="span";function ie(T,h){let C=z(),k=Z(),x=Q(),{id:g=k||`headlessui-checkbox-${C}`,disabled:e=x||!1,autoFocus:s=!1,checked:E,defaultChecked:v,onChange:P,name:d,value:D,form:R,indeterminate:n=!1,...A}=T,r=j(v),[a,t]=$(E,P,r!=null?r:!1),F=le(),K=ne(),_=q(),[p,c]=w(!1),u=l(()=>{c(!0),t==null||t(!a),_.nextFrame(()=>{c(!1)})}),H=l(o=>{if(ee(o.currentTarget))return o.preventDefault();o.preventDefault(),u()}),B=l(o=>{o.key===y.Space?(o.preventDefault(),u()):o.key===y.Enter&&oe(o.currentTarget)}),L=l(o=>o.preventDefault()),{isFocusVisible:m,focusProps:I}=S({autoFocus:s}),{isHovered:f,hoverProps:M}=W({isDisabled:e}),{pressed:b,pressProps:U}=J({disabled:e}),O=re({ref:h,id:g,role:"checkbox","aria-checked":n?"mixed":a?"true":"false","aria-labelledby":F,"aria-describedby":K,"aria-disabled":e?!0:void 0,indeterminate:n?"true":void 0,tabIndex:e?void 0:0,onKeyUp:e?void 0:B,onKeyPress:e?void 0:L,onClick:e?void 0:H},I,M,U),X=V(()=>({checked:a,disabled:e,hover:f,focus:m,active:b,indeterminate:n,changing:p,autofocus:s}),[a,n,e,f,m,b,p,s]),G=N(()=>{if(r!==void 0)return t==null?void 0:t(r)},[t,r]);return i.createElement(i.Fragment,null,d!=null&&i.createElement(Y,{disabled:e,data:{[d]:D||"on"},overrides:{type:"checkbox",checked:a},form:R,onReset:G}),ae({ourProps:O,theirProps:A,slot:X,defaultTag:se,name:"Checkbox"}))}let Re=te(ie);export{Re as Checkbox}; |
import React, { type ElementType, type Ref } from 'react'; | ||
import { type ByComparator } from '../../hooks/use-by-comparator.js'; | ||
import { type AnchorProps } from '../../internal/floating.js'; | ||
import type { EnsureArray, Expand, Props } from '../../types.js'; | ||
import type { EnsureArray, Props } from '../../types.js'; | ||
import { type HasDisplayName, type PropsForFeatures, type RefProp } from '../../utils/render.js'; | ||
@@ -17,38 +17,11 @@ import { type _internal_ComponentLabel } from '../label/label.js'; | ||
}; | ||
type O = 'value' | 'defaultValue' | 'nullable' | 'multiple' | 'onChange' | 'by'; | ||
type ComboboxValueProps<TValue, TNullable extends boolean | undefined, TMultiple extends boolean | undefined, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> = Extract<({ | ||
value?: EnsureArray<TValue>; | ||
defaultValue?: EnsureArray<TValue>; | ||
nullable: true; | ||
multiple: true; | ||
onChange?(value: EnsureArray<TValue>): void; | ||
by?: ByComparator<TValue>; | ||
} & Props<TTag, ComboboxRenderPropArg<EnsureArray<TValue>, TValue>, O>) | ({ | ||
value?: TValue | null; | ||
defaultValue?: TValue | null; | ||
nullable: true; | ||
multiple?: false; | ||
onChange?(value: TValue | null): void; | ||
by?: ByComparator<TValue | null>; | ||
} & Expand<Props<TTag, ComboboxRenderPropArg<TValue | null>, O>>) | ({ | ||
value?: EnsureArray<TValue>; | ||
defaultValue?: EnsureArray<TValue>; | ||
nullable?: false; | ||
multiple: true; | ||
onChange?(value: EnsureArray<TValue>): void; | ||
by?: ByComparator<TValue extends Array<infer U> ? U : TValue>; | ||
} & Expand<Props<TTag, ComboboxRenderPropArg<EnsureArray<TValue>, TValue>, O>>) | ({ | ||
value?: TValue; | ||
nullable?: false; | ||
multiple?: false; | ||
defaultValue?: TValue; | ||
onChange?(value: TValue): void; | ||
by?: ByComparator<TValue>; | ||
} & Props<TTag, ComboboxRenderPropArg<TValue>, O>), { | ||
nullable?: TNullable; | ||
export type ComboboxProps<TValue, TMultiple extends boolean | undefined, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> = Props<TTag, ComboboxRenderPropArg<NoInfer<TValue>>, 'value' | 'defaultValue' | 'multiple' | 'onChange' | 'by', { | ||
value?: TMultiple extends true ? EnsureArray<TValue> : TValue; | ||
defaultValue?: TMultiple extends true ? EnsureArray<NoInfer<TValue>> : NoInfer<TValue>; | ||
onChange?(value: TMultiple extends true ? EnsureArray<NoInfer<TValue>> : NoInfer<TValue> | null): void; | ||
by?: ByComparator<TMultiple extends true ? EnsureArray<NoInfer<TValue>>[number] : NoInfer<TValue>>; | ||
/** @deprecated The `<Combobox />` is now nullable default */ | ||
nullable?: boolean; | ||
multiple?: TMultiple; | ||
}>; | ||
export type ComboboxProps<TValue, TNullable extends boolean | undefined, TMultiple extends boolean | undefined, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> = ComboboxValueProps<TValue, TNullable, TMultiple, TTag> & { | ||
disabled?: boolean; | ||
__demoMode?: boolean; | ||
form?: string; | ||
@@ -58,10 +31,9 @@ name?: string; | ||
virtual?: { | ||
options: TValue[]; | ||
disabled?: (value: TValue) => boolean; | ||
options: NoInfer<TValue>[]; | ||
disabled?: (value: NoInfer<TValue>) => boolean; | ||
} | null; | ||
}; | ||
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, true, true, TTag>, ref: Ref<HTMLElement>): JSX.Element; | ||
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, true, false, TTag>, ref: Ref<HTMLElement>): JSX.Element; | ||
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, false, false, TTag>, ref: Ref<HTMLElement>): JSX.Element; | ||
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, false, true, TTag>, ref: Ref<HTMLElement>): JSX.Element; | ||
onClose?(): void; | ||
__demoMode?: boolean; | ||
}>; | ||
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, boolean | undefined, TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
declare let DEFAULT_INPUT_TAG: "input"; | ||
@@ -78,2 +50,3 @@ type InputRenderPropArg = { | ||
defaultValue?: TType; | ||
disabled?: boolean; | ||
displayValue?(item: TType): string; | ||
@@ -96,5 +69,6 @@ onChange?(event: React.ChangeEvent<HTMLInputElement>): void; | ||
autoFocus?: boolean; | ||
disabled?: boolean; | ||
}>; | ||
declare function ButtonFn<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(props: ComboboxButtonProps<TTag>, ref: Ref<HTMLButtonElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare let DEFAULT_OPTIONS_TAG: "ul"; | ||
declare let DEFAULT_OPTIONS_TAG: "div"; | ||
type OptionsRenderPropArg = { | ||
@@ -109,5 +83,7 @@ open: boolean; | ||
anchor?: AnchorProps; | ||
portal?: boolean; | ||
modal?: boolean; | ||
}>; | ||
declare function OptionsFn<TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG>(props: ComboboxOptionsProps<TTag>, ref: Ref<HTMLUListElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare let DEFAULT_OPTION_TAG: "li"; | ||
declare function OptionsFn<TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG>(props: ComboboxOptionsProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
declare let DEFAULT_OPTION_TAG: "div"; | ||
type OptionRenderPropArg = { | ||
@@ -126,8 +102,5 @@ focus: boolean; | ||
}>; | ||
declare function OptionFn<TTag extends ElementType = typeof DEFAULT_OPTION_TAG, TType = Parameters<typeof ComboboxRoot>[0]['value']>(props: ComboboxOptionProps<TTag, TType>, ref: Ref<HTMLLIElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare function OptionFn<TTag extends ElementType = typeof DEFAULT_OPTION_TAG, TType = Parameters<typeof ComboboxRoot>[0]['value']>(props: ComboboxOptionProps<TTag, TType>, ref: Ref<HTMLElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
export interface _internal_ComponentCombobox extends HasDisplayName { | ||
<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, true, true, TTag> & RefProp<typeof ComboboxFn>): JSX.Element; | ||
<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, true, false, TTag> & RefProp<typeof ComboboxFn>): JSX.Element; | ||
<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, false, true, TTag> & RefProp<typeof ComboboxFn>): JSX.Element; | ||
<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, false, false, TTag> & RefProp<typeof ComboboxFn>): JSX.Element; | ||
<TValue, TMultiple extends boolean | undefined = false, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, TMultiple, TTag> & RefProp<typeof ComboboxFn>): JSX.Element; | ||
} | ||
@@ -156,9 +129,13 @@ export interface _internal_ComponentComboboxButton extends HasDisplayName { | ||
export declare let Combobox: _internal_ComponentCombobox & { | ||
/** @deprecated use `<ComboboxInput>` instead of `<Combobox.Input>` */ | ||
Input: _internal_ComponentComboboxInput; | ||
/** @deprecated use `<ComboboxButton>` instead of `<Combobox.Button>` */ | ||
Button: _internal_ComponentComboboxButton; | ||
/** @deprecated use `<Label>` instead of `<Combobox.Label>` */ | ||
Label: _internal_ComponentComboboxLabel; | ||
/** @deprecated use `<ComboboxOptions>` instead of `<Combobox.Options>` */ | ||
Options: _internal_ComponentComboboxOptions; | ||
/** @deprecated use `<ComboboxOption>` instead of `<Combobox.Option>` */ | ||
Option: _internal_ComponentComboboxOption; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as ge}from"@react-aria/focus";import{useHover as ve}from"@react-aria/interactions";import{useVirtualizer as Fe}from"@tanstack/react-virtual";import w,{Fragment as Oe,createContext as se,createRef as _e,useCallback as Ce,useContext as de,useMemo as j,useReducer as Ve,useRef as H,useState as De}from"react";import{useActivePress as he}from'../../hooks/use-active-press.js';import{useByComparator as Me}from'../../hooks/use-by-comparator.js';import{useControllable as Le}from'../../hooks/use-controllable.js';import{useDisposables as ye}from'../../hooks/use-disposables.js';import{useEvent as x}from'../../hooks/use-event.js';import{useId as re}from'../../hooks/use-id.js';import{useIsoMorphicEffect as K}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Be}from'../../hooks/use-latest-value.js';import{useOutsideClick as we}from'../../hooks/use-outside-click.js';import{useOwnerDocument as Ue}from'../../hooks/use-owner.js';import{useResolveButtonType as ke}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as ae}from'../../hooks/use-sync-refs.js';import{useTrackedPointer as Ne}from'../../hooks/use-tracked-pointer.js';import{useTreeWalker as Ge}from'../../hooks/use-tree-walker.js';import{useWatch as Re}from'../../hooks/use-watch.js';import{useDisabled as He}from'../../internal/disabled.js';import{FloatingProvider as Xe,useFloatingPanel as je,useFloatingPanelProps as Ke,useFloatingReference as Je}from'../../internal/floating.js';import{FormFields as We}from'../../internal/form-fields.js';import{useProvidedId as $e}from'../../internal/id.js';import{OpenClosedProvider as ze,State as ie,useOpenClosed as qe}from'../../internal/open-closed.js';import{history as Ae}from'../../utils/active-element-history.js';import{isDisabledReactIssue7711 as Ye}from'../../utils/bugs.js';import{Focus as S,calculateActiveIndex as Pe}from'../../utils/calculate-active-index.js';import{disposables as Se}from'../../utils/disposables.js';import{sortByDomNode as Qe}from'../../utils/focus-management.js';import{match as $}from'../../utils/match.js';import{isMobile as Ze}from'../../utils/platform.js';import{RenderFeatures as Ee,forwardRefWithAs as q,mergeProps as be,render as Y}from'../../utils/render.js';import{useDescribedBy as eo}from'../description/description.js';import{Keys as M}from'../keyboard.js';import{Label as oo,useLabelledBy as ce,useLabels as to}from'../label/label.js';var no=(t=>(t[t.Open=0]="Open",t[t.Closed=1]="Closed",t))(no||{}),ro=(t=>(t[t.Single=0]="Single",t[t.Multi=1]="Multi",t))(ro||{}),ao=(l=>(l[l.Pointer=0]="Pointer",l[l.Focus=1]="Focus",l[l.Other=2]="Other",l))(ao||{}),io=(a=>(a[a.OpenCombobox=0]="OpenCombobox",a[a.CloseCombobox=1]="CloseCombobox",a[a.GoToOption=2]="GoToOption",a[a.RegisterOption=3]="RegisterOption",a[a.UnregisterOption=4]="UnregisterOption",a[a.SetActivationTrigger=5]="SetActivationTrigger",a[a.UpdateVirtualOptions=6]="UpdateVirtualOptions",a))(io||{});function fe(e,n=t=>t){let t=e.activeOptionIndex!==null?e.options[e.activeOptionIndex]:null,l=n(e.options.slice()),p=l.length>0&&l[0].dataRef.current.order!==null?l.sort((f,a)=>f.dataRef.current.order-a.dataRef.current.order):Qe(l,f=>f.dataRef.current.domRef.current),d=t?p.indexOf(t):null;return d===-1&&(d=null),{options:p,activeOptionIndex:d}}let lo={[1](e){var n;return(n=e.dataRef.current)!=null&&n.disabled||e.comboboxState===1?e:{...e,activeOptionIndex:null,comboboxState:1}},[0](e){var n,t;if((n=e.dataRef.current)!=null&&n.disabled||e.comboboxState===0)return e;if((t=e.dataRef.current)!=null&&t.value){let l=e.dataRef.current.calculateIndex(e.dataRef.current.value);if(l!==-1)return{...e,activeOptionIndex:l,comboboxState:0}}return{...e,comboboxState:0}},[2](e,n){var d,f,a,r,o;if((d=e.dataRef.current)!=null&&d.disabled||(f=e.dataRef.current)!=null&&f.optionsRef.current&&!((a=e.dataRef.current)!=null&&a.optionsPropsRef.current.static)&&e.comboboxState===1)return e;if(e.virtual){let i=n.focus===S.Specific?n.idx:Pe(n,{resolveItems:()=>e.virtual.options,resolveActiveIndex:()=>{var v,m;return(m=(v=e.activeOptionIndex)!=null?v:e.virtual.options.findIndex(b=>!e.virtual.disabled(b)))!=null?m:null},resolveDisabled:e.virtual.disabled,resolveId(){throw new Error("Function not implemented.")}}),E=(r=n.trigger)!=null?r:2;return e.activeOptionIndex===i&&e.activationTrigger===E?e:{...e,activeOptionIndex:i,activationTrigger:E}}let t=fe(e);if(t.activeOptionIndex===null){let i=t.options.findIndex(E=>!E.dataRef.current.disabled);i!==-1&&(t.activeOptionIndex=i)}let l=n.focus===S.Specific?n.idx:Pe(n,{resolveItems:()=>t.options,resolveActiveIndex:()=>t.activeOptionIndex,resolveId:i=>i.id,resolveDisabled:i=>i.dataRef.current.disabled}),p=(o=n.trigger)!=null?o:2;return e.activeOptionIndex===l&&e.activationTrigger===p?e:{...e,...t,activeOptionIndex:l,activationTrigger:p}},[3]:(e,n)=>{var d,f,a;if((d=e.dataRef.current)!=null&&d.virtual)return{...e,options:[...e.options,n.payload]};let t=n.payload,l=fe(e,r=>(r.push(t),r));e.activeOptionIndex===null&&(f=e.dataRef.current)!=null&&f.isSelected(n.payload.dataRef.current.value)&&(l.activeOptionIndex=l.options.indexOf(t));let p={...e,...l,activationTrigger:2};return(a=e.dataRef.current)!=null&&a.__demoMode&&e.dataRef.current.value===void 0&&(p.activeOptionIndex=0),p},[4]:(e,n)=>{var l;if((l=e.dataRef.current)!=null&&l.virtual)return{...e,options:e.options.filter(p=>p.id!==n.id)};let t=fe(e,p=>{let d=p.findIndex(f=>f.id===n.id);return d!==-1&&p.splice(d,1),p});return{...e,...t,activationTrigger:2}},[5]:(e,n)=>e.activationTrigger===n.trigger?e:{...e,activationTrigger:n.trigger},[6]:(e,n)=>{var l;if(((l=e.virtual)==null?void 0:l.options)===n.options)return e;let t=e.activeOptionIndex;if(e.activeOptionIndex!==null){let p=n.options.indexOf(e.virtual.options[e.activeOptionIndex]);p!==-1?t=p:t=null}return{...e,activeOptionIndex:t,virtual:Object.assign({},e.virtual,{options:n.options})}}},me=se(null);me.displayName="ComboboxActionsContext";function le(e){let n=de(me);if(n===null){let t=new Error(`<${e} /> is missing a parent <Combobox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,le),t}return n}let Ie=se(null);function uo(e){var a;let n=z("VirtualProvider"),[t,l]=j(()=>{let r=n.optionsRef.current;if(!r)return[0,0];let o=window.getComputedStyle(r);return[parseFloat(o.paddingBlockStart||o.paddingTop),parseFloat(o.paddingBlockEnd||o.paddingBottom)]},[n.optionsRef.current]),p=Fe({scrollPaddingStart:t,scrollPaddingEnd:l,count:n.virtual.options.length,estimateSize(){return 40},getScrollElement(){var r;return(r=n.optionsRef.current)!=null?r:null},overscan:12}),[d,f]=De(0);return K(()=>{f(r=>r+1)},[(a=n.virtual)==null?void 0:a.options]),w.createElement(Ie.Provider,{value:p},w.createElement("div",{style:{position:"relative",width:"100%",height:`${p.getTotalSize()}px`},ref:r=>{if(r){if(typeof process!="undefined"&&process.env.JEST_WORKER_ID!==void 0||n.activationTrigger===0)return;n.activeOptionIndex!==null&&n.virtual.options.length>n.activeOptionIndex&&p.scrollToIndex(n.activeOptionIndex)}}},p.getVirtualItems().map(r=>{var o;return w.createElement(Oe,{key:r.key},w.cloneElement((o=e.children)==null?void 0:o.call(e,{option:n.virtual.options[r.index],open:n.comboboxState===0}),{key:`${d}-${r.key}`,"data-index":r.index,"aria-setsize":n.virtual.options.length,"aria-posinset":r.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${r.start}px)`,overflowAnchor:"none"}}))})))}let Te=se(null);Te.displayName="ComboboxDataContext";function z(e){let n=de(Te);if(n===null){let t=new Error(`<${e} /> is missing a parent <Combobox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,z),t}return n}function po(e,n){return $(n.type,lo,e,n)}let so=Oe;function bo(e,n){var y,h;let t=He(),{value:l,defaultValue:p,onChange:d,form:f,name:a,by:r,disabled:o=t||!1,__demoMode:i=!1,nullable:E=!1,multiple:v=!1,immediate:m=!1,virtual:b=null,...L}=e,[P=v?[]:void 0,O]=Le(l,d,p),[T,_]=Ve(po,{dataRef:_e(),comboboxState:i?0:1,options:[],virtual:b?{options:b.options,disabled:(y=b.disabled)!=null?y:()=>!1}:null,activeOptionIndex:null,activationTrigger:2}),V=H(!1),k=H({static:!1,hold:!1}),N=H(null),G=H(null),I=H(null),C=Me(r),X=x(c=>b?r===null?b.options.indexOf(c):b.options.findIndex(g=>C(g,c)):T.options.findIndex(g=>C(g.dataRef.current.value,c))),A=Ce(c=>$(s.mode,{[1]:()=>P.some(g=>C(g,c)),[0]:()=>C(P,c)}),[P]),R=x(c=>T.activeOptionIndex===X(c)),s=j(()=>({...T,immediate:m,optionsPropsRef:k,inputRef:N,buttonRef:G,optionsRef:I,value:P,defaultValue:p,disabled:o,mode:v?1:0,virtual:T.virtual,get activeOptionIndex(){if(V.current&&T.activeOptionIndex===null&&(b?b.options.length>0:T.options.length>0)){if(b){let g=b.options.findIndex(U=>{var ne,xe;return!((xe=(ne=b==null?void 0:b.disabled)==null?void 0:ne.call(b,U))!=null&&xe)});if(g!==-1)return g}let c=T.options.findIndex(g=>!g.dataRef.current.disabled);if(c!==-1)return c}return T.activeOptionIndex},calculateIndex:X,compare:C,isSelected:A,isActive:R,nullable:E,__demoMode:i}),[P,p,o,v,E,i,T,b]);K(()=>{b&&_({type:6,options:b.options})},[b,b==null?void 0:b.options]),K(()=>{T.dataRef.current=s},[s]),we([s.buttonRef,s.inputRef,s.optionsRef],()=>W.closeCombobox(),s.comboboxState===0);let ue=j(()=>{var c,g,U;return{open:s.comboboxState===0,disabled:o,activeIndex:s.activeOptionIndex,activeOption:s.activeOptionIndex===null?null:s.virtual?s.virtual.options[(c=s.activeOptionIndex)!=null?c:0]:(U=(g=s.options[s.activeOptionIndex])==null?void 0:g.dataRef.current.value)!=null?U:null,value:P}},[s,o,P]),pe=x(()=>{if(s.activeOptionIndex!==null){if(s.virtual)J(s.virtual.options[s.activeOptionIndex]);else{let{dataRef:c}=s.options[s.activeOptionIndex];J(c.current.value)}W.goToOption(S.Specific,s.activeOptionIndex)}}),Q=x(()=>{_({type:0}),V.current=!0}),Z=x(()=>{_({type:1}),V.current=!1}),ee=x((c,g,U)=>(V.current=!1,c===S.Specific?_({type:2,focus:S.Specific,idx:g,trigger:U}):_({type:2,focus:c,trigger:U}))),oe=x((c,g)=>(_({type:3,payload:{id:c,dataRef:g}}),()=>{s.isActive(g.current.value)&&(V.current=!0),_({type:4,id:c})})),J=x(c=>$(s.mode,{[0](){return O==null?void 0:O(c)},[1](){let g=s.value.slice(),U=g.findIndex(ne=>C(ne,c));return U===-1?g.push(c):g.splice(U,1),O==null?void 0:O(g)}})),te=x(c=>{_({type:5,trigger:c})}),W=j(()=>({onChange:J,registerOption:oe,goToOption:ee,closeCombobox:Z,openCombobox:Q,setActivationTrigger:te,selectActiveOption:pe}),[]),[u,D]=to(),F=n===null?{}:{ref:n},B=Ce(()=>O==null?void 0:O(p),[O]);return w.createElement(D,{value:u,props:{htmlFor:(h=s.inputRef.current)==null?void 0:h.id},slot:{open:s.comboboxState===0,disabled:o}},w.createElement(Xe,null,w.createElement(me.Provider,{value:W},w.createElement(Te.Provider,{value:s},w.createElement(ze,{value:$(s.comboboxState,{[0]:ie.Open,[1]:ie.Closed})},a!=null&&w.createElement(We,{data:P!=null?{[a]:P}:{},form:f,onReset:B}),Y({ourProps:F,theirProps:L,slot:ue,defaultTag:so,name:"Combobox"}))))))}let co="input";function fo(e,n){var Q,Z,ee,oe,J,te,W;let t=re(),l=$e(),{id:p=l||`headlessui-combobox-input-${t}`,onChange:d,displayValue:f,type:a="text",...r}=e,o=z("Combobox.Input"),i=le("Combobox.Input"),E=ae(o.inputRef,n,Je()),v=Ue(o.inputRef),m=H(!1),b=ye(),L=x(()=>{i.onChange(null),o.optionsRef.current&&(o.optionsRef.current.scrollTop=0),i.goToOption(S.Nothing)}),P=function(){var u;return typeof f=="function"&&o.value!==void 0?(u=f(o.value))!=null?u:"":typeof o.value=="string"?o.value:""}();Re(([u,D],[F,B])=>{if(m.current)return;let y=o.inputRef.current;y&&((B===0&&D===1||u!==F)&&(y.value=u),requestAnimationFrame(()=>{if(m.current||!y||(v==null?void 0:v.activeElement)!==y)return;let{selectionStart:h,selectionEnd:c}=y;Math.abs((c!=null?c:0)-(h!=null?h:0))===0&&h===0&&y.setSelectionRange(y.value.length,y.value.length)}))},[P,o.comboboxState,v]),Re(([u],[D])=>{if(u===0&&D===1){if(m.current)return;let F=o.inputRef.current;if(!F)return;let B=F.value,{selectionStart:y,selectionEnd:h,selectionDirection:c}=F;F.value="",F.value=B,c!==null?F.setSelectionRange(y,h,c):F.setSelectionRange(y,h)}},[o.comboboxState]);let O=H(!1),T=x(()=>{O.current=!0}),_=x(()=>{b.nextFrame(()=>{O.current=!1})}),V=x(u=>{switch(m.current=!0,u.key){case M.Enter:if(m.current=!1,o.comboboxState!==0||O.current)return;if(u.preventDefault(),u.stopPropagation(),o.activeOptionIndex===null){i.closeCombobox();return}i.selectActiveOption(),o.mode===0&&i.closeCombobox();break;case M.ArrowDown:return m.current=!1,u.preventDefault(),u.stopPropagation(),$(o.comboboxState,{[0]:()=>i.goToOption(S.Next),[1]:()=>i.openCombobox()});case M.ArrowUp:return m.current=!1,u.preventDefault(),u.stopPropagation(),$(o.comboboxState,{[0]:()=>i.goToOption(S.Previous),[1]:()=>{i.openCombobox(),b.nextFrame(()=>{o.value||i.goToOption(S.Last)})}});case M.Home:if(u.shiftKey)break;return m.current=!1,u.preventDefault(),u.stopPropagation(),i.goToOption(S.First);case M.PageUp:return m.current=!1,u.preventDefault(),u.stopPropagation(),i.goToOption(S.First);case M.End:if(u.shiftKey)break;return m.current=!1,u.preventDefault(),u.stopPropagation(),i.goToOption(S.Last);case M.PageDown:return m.current=!1,u.preventDefault(),u.stopPropagation(),i.goToOption(S.Last);case M.Escape:return m.current=!1,o.comboboxState!==0?void 0:(u.preventDefault(),o.optionsRef.current&&!o.optionsPropsRef.current.static&&u.stopPropagation(),o.nullable&&o.mode===0&&o.value===null&&L(),i.closeCombobox());case M.Tab:if(m.current=!1,o.comboboxState!==0)return;o.mode===0&&o.activationTrigger!==1&&i.selectActiveOption(),i.closeCombobox();break}}),k=x(u=>{d==null||d(u),o.nullable&&o.mode===0&&u.target.value===""&&L(),i.openCombobox()}),N=x(u=>{var F,B,y;let D=(F=u.relatedTarget)!=null?F:Ae.find(h=>h!==u.currentTarget);if(m.current=!1,!((B=o.optionsRef.current)!=null&&B.contains(D))&&!((y=o.buttonRef.current)!=null&&y.contains(D))&&o.comboboxState===0)return u.preventDefault(),o.mode===0&&(o.nullable&&o.value===null?L():o.activationTrigger!==1&&i.selectActiveOption()),i.closeCombobox()}),G=x(u=>{var F,B,y;let D=(F=u.relatedTarget)!=null?F:Ae.find(h=>h!==u.currentTarget);(B=o.buttonRef.current)!=null&&B.contains(D)||(y=o.optionsRef.current)!=null&&y.contains(D)||o.disabled||o.immediate&&o.comboboxState!==0&&(i.openCombobox(),b.nextFrame(()=>{i.setActivationTrigger(1)}))}),I=ce(),C=eo(),{isFocusVisible:X,focusProps:A}=ge({isTextInput:!0,autoFocus:(Q=e.autoFocus)!=null?Q:!1}),{isHovered:R,hoverProps:s}=ve({isDisabled:(Z=o.disabled)!=null?Z:!1}),ue=j(()=>{var u;return{open:o.comboboxState===0,disabled:o.disabled,hover:R,focus:X,autofocus:(u=e.autoFocus)!=null?u:!1}},[o,R,X,e.autoFocus]),pe=be({ref:E,id:p,role:"combobox",type:a,"aria-controls":(ee=o.optionsRef.current)==null?void 0:ee.id,"aria-expanded":o.comboboxState===0,"aria-activedescendant":o.activeOptionIndex===null?void 0:o.virtual?(oe=o.options.find(u=>{var D;return!((D=o.virtual)!=null&&D.disabled(u.dataRef.current.value))&&o.compare(u.dataRef.current.value,o.virtual.options[o.activeOptionIndex])}))==null?void 0:oe.id:(J=o.options[o.activeOptionIndex])==null?void 0:J.id,"aria-labelledby":I,"aria-describedby":C,"aria-autocomplete":"list",defaultValue:(W=(te=e.defaultValue)!=null?te:o.defaultValue!==void 0?f==null?void 0:f(o.defaultValue):null)!=null?W:o.defaultValue,disabled:o.disabled,onCompositionStart:T,onCompositionEnd:_,onKeyDown:V,onChange:k,onFocus:G,onBlur:N},A,s);return Y({ourProps:pe,theirProps:r,slot:ue,defaultTag:co,name:"Combobox.Input"})}let mo="button";function To(e,n){var V,k,N,G;let t=z("Combobox.Button"),l=le("Combobox.Button"),p=ae(t.buttonRef,n),d=re(),{id:f=`headlessui-combobox-button-${d}`,...a}=e,r=ye(),o=x(I=>{switch(I.key){case M.ArrowDown:return I.preventDefault(),I.stopPropagation(),t.comboboxState===1&&l.openCombobox(),r.nextFrame(()=>{var C;return(C=t.inputRef.current)==null?void 0:C.focus({preventScroll:!0})});case M.ArrowUp:return I.preventDefault(),I.stopPropagation(),t.comboboxState===1&&(l.openCombobox(),r.nextFrame(()=>{t.value||l.goToOption(S.Last)})),r.nextFrame(()=>{var C;return(C=t.inputRef.current)==null?void 0:C.focus({preventScroll:!0})});case M.Escape:return t.comboboxState!==0?void 0:(I.preventDefault(),t.optionsRef.current&&!t.optionsPropsRef.current.static&&I.stopPropagation(),l.closeCombobox(),r.nextFrame(()=>{var C;return(C=t.inputRef.current)==null?void 0:C.focus({preventScroll:!0})}));default:return}}),i=x(I=>{if(Ye(I.currentTarget))return I.preventDefault();t.comboboxState===0?l.closeCombobox():(I.preventDefault(),l.openCombobox()),r.nextFrame(()=>{var C;return(C=t.inputRef.current)==null?void 0:C.focus({preventScroll:!0})})}),E=ce([f]),{isFocusVisible:v,focusProps:m}=ge({isTextInput:!0,autoFocus:(V=e.autoFocus)!=null?V:!1}),{isHovered:b,hoverProps:L}=ve({isDisabled:(k=t.disabled)!=null?k:!1}),{pressed:P,pressProps:O}=he({disabled:(N=t.disabled)!=null?N:!1}),T=j(()=>({open:t.comboboxState===0,active:P||t.comboboxState===0,disabled:t.disabled,value:t.value,hover:b,focus:v}),[t,b,v,P]),_=be({ref:p,id:f,type:ke(e,t.buttonRef),tabIndex:-1,"aria-haspopup":"listbox","aria-controls":(G=t.optionsRef.current)==null?void 0:G.id,"aria-expanded":t.comboboxState===0,"aria-labelledby":E,disabled:t.disabled,onClick:i,onKeyDown:o},m,L,O);return Y({ourProps:_,theirProps:a,slot:T,defaultTag:mo,name:"Combobox.Button"})}let xo="ul",go=Ee.RenderStrategy|Ee.Static;function vo(e,n){var O;let t=re(),{id:l=`headlessui-combobox-options-${t}`,hold:p=!1,anchor:d,...f}=e,a=z("Combobox.Options"),[r,o]=je(d),i=Ke(),E=ae(a.optionsRef,n,d?r:null),v=qe(),m=(()=>v!==null?(v&ie.Open)===ie.Open:a.comboboxState===0)();K(()=>{var T;a.optionsPropsRef.current.static=(T=e.static)!=null?T:!1},[a.optionsPropsRef,e.static]),K(()=>{a.optionsPropsRef.current.hold=p},[a.optionsPropsRef,p]),Ge({container:a.optionsRef.current,enabled:a.comboboxState===0,accept(T){return T.getAttribute("role")==="option"?NodeFilter.FILTER_REJECT:T.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(T){T.setAttribute("role","none")}});let b=ce([(O=a.buttonRef.current)==null?void 0:O.id]),L=j(()=>({open:a.comboboxState===0,option:void 0}),[a]),P=be(d?i():{},{"aria-labelledby":b,role:"listbox","aria-multiselectable":a.mode===1?!0:void 0,id:l,ref:E,...o?{style:o}:{}});return a.virtual&&a.comboboxState===0&&Object.assign(f,{children:w.createElement(uo,null,f.children)}),Y({ourProps:P,theirProps:f,slot:L,defaultTag:xo,features:go,visible:m,name:"Combobox.Options"})}let Oo="li";function Co(e,n){var X;let t=re(),{id:l=`headlessui-combobox-option-${t}`,disabled:p=!1,value:d,order:f=null,...a}=e,r=z("Combobox.Option"),o=le("Combobox.Option"),i=r.virtual?r.activeOptionIndex===r.calculateIndex(d):r.activeOptionIndex===null?!1:((X=r.options[r.activeOptionIndex])==null?void 0:X.id)===l,E=r.isSelected(d),v=H(null),m=Be({disabled:p,value:d,domRef:v,order:f}),b=de(Ie),L=ae(n,v,b?b.measureElement:null),P=x(()=>o.onChange(d));K(()=>o.registerOption(l,m),[m,l]);let O=H(!(r.virtual||r.__demoMode));K(()=>{if(!r.virtual||!r.__demoMode)return;let A=Se();return A.requestAnimationFrame(()=>{O.current=!0}),A.dispose},[r.virtual,r.__demoMode]),K(()=>{if(!O.current||r.comboboxState!==0||!i||r.activationTrigger===0)return;let A=Se();return A.requestAnimationFrame(()=>{var R,s;(s=(R=v.current)==null?void 0:R.scrollIntoView)==null||s.call(R,{block:"nearest"})}),A.dispose},[v,i,r.comboboxState,r.activationTrigger,r.activeOptionIndex]);let T=x(A=>{var R;if(p||(R=r.virtual)!=null&&R.disabled(d))return A.preventDefault();P(),Ze()||requestAnimationFrame(()=>{var s;return(s=r.inputRef.current)==null?void 0:s.focus({preventScroll:!0})}),r.mode===0&&requestAnimationFrame(()=>o.closeCombobox())}),_=x(()=>{var R;if(p||(R=r.virtual)!=null&&R.disabled(d))return o.goToOption(S.Nothing);let A=r.calculateIndex(d);o.goToOption(S.Specific,A)}),V=Ne(),k=x(A=>V.update(A)),N=x(A=>{var s;if(!V.wasMoved(A)||p||(s=r.virtual)!=null&&s.disabled(d)||i)return;let R=r.calculateIndex(d);o.goToOption(S.Specific,R,0)}),G=x(A=>{var R;V.wasMoved(A)&&(p||(R=r.virtual)!=null&&R.disabled(d)||i&&(r.optionsPropsRef.current.hold||o.goToOption(S.Nothing)))}),I=j(()=>({active:i,focus:i,selected:E,disabled:p}),[i,E,p]);return Y({ourProps:{id:l,ref:L,role:"option",tabIndex:p===!0?void 0:-1,"aria-disabled":p===!0?!0:void 0,"aria-selected":E,disabled:void 0,onClick:T,onFocus:_,onPointerEnter:k,onMouseEnter:k,onPointerMove:N,onMouseMove:N,onPointerLeave:G,onMouseLeave:G},theirProps:a,slot:I,defaultTag:Oo,name:"Combobox.Option"})}let yo=q(bo),Ro=q(To),Ao=q(fo),Po=oo,So=q(vo),Eo=q(Co),st=Object.assign(yo,{Input:Ao,Button:Ro,Label:Po,Options:So,Option:Eo});export{st as Combobox,Ro as ComboboxButton,Ao as ComboboxInput,Po as ComboboxLabel,Eo as ComboboxOption,So as ComboboxOptions}; | ||
"use client";import{useFocusRing as ye}from"@react-aria/focus";import{useHover as Ce}from"@react-aria/interactions";import{useVirtualizer as ke}from"@tanstack/react-virtual";import L,{Fragment as Re,createContext as be,createRef as Ne,useCallback as Se,useContext as fe,useMemo as G,useReducer as Ue,useRef as z,useState as Pe}from"react";import{flushSync as q}from"react-dom";import{useActivePress as He}from'../../hooks/use-active-press.js';import{useByComparator as Ge}from'../../hooks/use-by-comparator.js';import{useControllable as je}from'../../hooks/use-controllable.js';import{useDefaultValue as Ke}from'../../hooks/use-default-value.js';import{useDisposables as We}from'../../hooks/use-disposables.js';import{useElementSize as Ie}from'../../hooks/use-element-size.js';import{useEvent as m}from'../../hooks/use-event.js';import{useId as ue}from'../../hooks/use-id.js';import{useInertOthers as ze}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as $}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as $e}from'../../hooks/use-latest-value.js';import{useOnDisappear as Xe}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Je}from'../../hooks/use-outside-click.js';import{useOwnerDocument as Ae}from'../../hooks/use-owner.js';import{useRefocusableInput as Ee}from'../../hooks/use-refocusable-input.js';import{useResolveButtonType as qe}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as Ye}from'../../hooks/use-scroll-lock.js';import{useSyncRefs as pe}from'../../hooks/use-sync-refs.js';import{useTrackedPointer as Qe}from'../../hooks/use-tracked-pointer.js';import{useTreeWalker as Ze}from'../../hooks/use-tree-walker.js';import{useWatch as _e}from'../../hooks/use-watch.js';import{useDisabled as eo}from'../../internal/disabled.js';import{FloatingProvider as oo,useFloatingPanel as to,useFloatingPanelProps as no,useFloatingReference as ro,useResolvedAnchor as io}from'../../internal/floating.js';import{FormFields as ao}from'../../internal/form-fields.js';import{useProvidedId as lo}from'../../internal/id.js';import{OpenClosedProvider as uo,State as se,useOpenClosed as po}from'../../internal/open-closed.js';import{history as he}from'../../utils/active-element-history.js';import{isDisabledReactIssue7711 as so}from'../../utils/bugs.js';import{Focus as R,calculateActiveIndex as Me}from'../../utils/calculate-active-index.js';import{disposables as De}from'../../utils/disposables.js';import{sortByDomNode as bo}from'../../utils/focus-management.js';import{match as Y}from'../../utils/match.js';import{isMobile as fo}from'../../utils/platform.js';import{RenderFeatures as Fe,forwardRefWithAs as Z,mergeProps as ce,render as ee}from'../../utils/render.js';import{useDescribedBy as co}from'../description/description.js';import{Keys as F}from'../keyboard.js';import{Label as mo,useLabelledBy as me,useLabels as To}from'../label/label.js';import{MouseButton as Ve}from'../mouse.js';import{Portal as xo}from'../portal/portal.js';var go=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(go||{}),vo=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(vo||{}),Oo=(t=>(t[t.Pointer=0]="Pointer",t[t.Focus=1]="Focus",t[t.Other=2]="Other",t))(Oo||{}),yo=(a=>(a[a.OpenCombobox=0]="OpenCombobox",a[a.CloseCombobox=1]="CloseCombobox",a[a.GoToOption=2]="GoToOption",a[a.SetTyping=3]="SetTyping",a[a.RegisterOption=4]="RegisterOption",a[a.UnregisterOption=5]="UnregisterOption",a[a.SetActivationTrigger=6]="SetActivationTrigger",a[a.UpdateVirtualConfiguration=7]="UpdateVirtualConfiguration",a))(yo||{});function Te(o,r=e=>e){let e=o.activeOptionIndex!==null?o.options[o.activeOptionIndex]:null,t=r(o.options.slice()),c=t.length>0&&t[0].dataRef.current.order!==null?t.sort((f,s)=>f.dataRef.current.order-s.dataRef.current.order):bo(t,f=>f.dataRef.current.domRef.current),d=e?c.indexOf(e):null;return d===-1&&(d=null),{options:c,activeOptionIndex:d}}let Co={[1](o){var r;return(r=o.dataRef.current)!=null&&r.disabled||o.comboboxState===1?o:{...o,activeOptionIndex:null,comboboxState:1,isTyping:!1,activationTrigger:2,__demoMode:!1}},[0](o){var r,e;if((r=o.dataRef.current)!=null&&r.disabled||o.comboboxState===0)return o;if((e=o.dataRef.current)!=null&&e.value){let t=o.dataRef.current.calculateIndex(o.dataRef.current.value);if(t!==-1)return{...o,activeOptionIndex:t,comboboxState:0,__demoMode:!1}}return{...o,comboboxState:0,__demoMode:!1}},[3](o,r){return o.isTyping===r.isTyping?o:{...o,isTyping:r.isTyping}},[2](o,r){var d,f,s,a,n;if((d=o.dataRef.current)!=null&&d.disabled||(f=o.dataRef.current)!=null&&f.optionsRef.current&&!((s=o.dataRef.current)!=null&&s.optionsPropsRef.current.static)&&o.comboboxState===1)return o;if(o.virtual){let{options:p,disabled:T}=o.virtual,A=r.focus===R.Specific?r.idx:Me(r,{resolveItems:()=>p,resolveActiveIndex:()=>{var u,w;return(w=(u=o.activeOptionIndex)!=null?u:p.findIndex(D=>!T(D)))!=null?w:null},resolveDisabled:T,resolveId(){throw new Error("Function not implemented.")}}),_=(a=r.trigger)!=null?a:2;return o.activeOptionIndex===A&&o.activationTrigger===_?o:{...o,activeOptionIndex:A,activationTrigger:_,isTyping:!1,__demoMode:!1}}let e=Te(o);if(e.activeOptionIndex===null){let p=e.options.findIndex(T=>!T.dataRef.current.disabled);p!==-1&&(e.activeOptionIndex=p)}let t=r.focus===R.Specific?r.idx:Me(r,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:p=>p.id,resolveDisabled:p=>p.dataRef.current.disabled}),c=(n=r.trigger)!=null?n:2;return o.activeOptionIndex===t&&o.activationTrigger===c?o:{...o,...e,isTyping:!1,activeOptionIndex:t,activationTrigger:c,__demoMode:!1}},[4]:(o,r)=>{var d,f,s;if((d=o.dataRef.current)!=null&&d.virtual)return{...o,options:[...o.options,r.payload]};let e=r.payload,t=Te(o,a=>(a.push(e),a));o.activeOptionIndex===null&&(f=o.dataRef.current)!=null&&f.isSelected(r.payload.dataRef.current.value)&&(t.activeOptionIndex=t.options.indexOf(e));let c={...o,...t,activationTrigger:2};return(s=o.dataRef.current)!=null&&s.__demoMode&&o.dataRef.current.value===void 0&&(c.activeOptionIndex=0),c},[5]:(o,r)=>{var t;if((t=o.dataRef.current)!=null&&t.virtual)return{...o,options:o.options.filter(c=>c.id!==r.id)};let e=Te(o,c=>{let d=c.findIndex(f=>f.id===r.id);return d!==-1&&c.splice(d,1),c});return{...o,...e,activationTrigger:2}},[6]:(o,r)=>o.activationTrigger===r.trigger?o:{...o,activationTrigger:r.trigger},[7]:(o,r)=>{var t,c;if(o.virtual===null)return{...o,virtual:{options:r.options,disabled:(t=r.disabled)!=null?t:()=>!1}};if(o.virtual.options===r.options&&o.virtual.disabled===r.disabled)return o;let e=o.activeOptionIndex;if(o.activeOptionIndex!==null){let d=r.options.indexOf(o.virtual.options[o.activeOptionIndex]);d!==-1?e=d:e=null}return{...o,activeOptionIndex:e,virtual:{options:r.options,disabled:(c=r.disabled)!=null?c:()=>!1}}}},xe=be(null);xe.displayName="ComboboxActionsContext";function oe(o){let r=fe(xe);if(r===null){let e=new Error(`<${o} /> is missing a parent <Combobox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,oe),e}return r}let Le=be(null);function Ro(o){let r=Q("VirtualProvider"),{options:e}=r.virtual,[t,c]=G(()=>{let n=r.optionsRef.current;if(!n)return[0,0];let p=window.getComputedStyle(n);return[parseFloat(p.paddingBlockStart||p.paddingTop),parseFloat(p.paddingBlockEnd||p.paddingBottom)]},[r.optionsRef.current]),d=ke({scrollPaddingStart:t,scrollPaddingEnd:c,count:e.length,estimateSize(){return 40},getScrollElement(){var n;return(n=r.optionsRef.current)!=null?n:null},overscan:12}),[f,s]=Pe(0);$(()=>{s(n=>n+1)},[e]);let a=d.getVirtualItems();return a.length===0?null:L.createElement(Le.Provider,{value:d},L.createElement("div",{style:{position:"relative",width:"100%",height:`${d.getTotalSize()}px`},ref:n=>{if(n){if(typeof process!="undefined"&&process.env.JEST_WORKER_ID!==void 0||r.activationTrigger===0)return;r.activeOptionIndex!==null&&e.length>r.activeOptionIndex&&d.scrollToIndex(r.activeOptionIndex)}}},a.map(n=>{var p;return L.createElement(Re,{key:n.key},L.cloneElement((p=o.children)==null?void 0:p.call(o,{option:e[n.index],open:r.comboboxState===0}),{key:`${f}-${n.key}`,"data-index":n.index,"aria-setsize":e.length,"aria-posinset":n.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${n.start}px)`,overflowAnchor:"none"}}))})))}let de=be(null);de.displayName="ComboboxDataContext";function Q(o){let r=fe(de);if(r===null){let e=new Error(`<${o} /> is missing a parent <Combobox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,Q),e}return r}function So(o,r){return Y(r.type,Co,o,r)}let Po=Re;function Io(o,r){var ge,ve;let e=eo(),{value:t,defaultValue:c,onChange:d,form:f,name:s,by:a,disabled:n=e||!1,onClose:p,__demoMode:T=!1,multiple:A=!1,immediate:_=!1,virtual:u=null,nullable:w,...D}=o,h=Ke(c),[x=A?[]:void 0,S]=je(t,d,h),[P,y]=Ue(So,{dataRef:Ne(),comboboxState:T?0:1,isTyping:!1,options:[],virtual:u?{options:u.options,disabled:(ge=u.disabled)!=null?ge:()=>!1}:null,activeOptionIndex:null,activationTrigger:2,__demoMode:T}),M=z(!1),O=z({static:!1,hold:!1}),j=z(null),X=z(null),J=z(null),E=Ge(a),H=m(b=>u?a===null?u.options.indexOf(b):u.options.findIndex(v=>E(v,b)):P.options.findIndex(v=>E(v.dataRef.current.value,b))),N=Se(b=>Y(i.mode,{[1]:()=>x.some(v=>E(v,b)),[0]:()=>E(x,b)}),[x]),I=m(b=>P.activeOptionIndex===H(b)),i=G(()=>({...P,immediate:_,optionsPropsRef:O,inputRef:j,buttonRef:X,optionsRef:J,value:x,defaultValue:h,disabled:n,mode:A?1:0,virtual:u?P.virtual:null,get activeOptionIndex(){if(M.current&&P.activeOptionIndex===null&&(u?u.options.length>0:P.options.length>0)){if(u){let v=u.options.findIndex(U=>{var le,Oe;return!((Oe=(le=u.disabled)==null?void 0:le.call(u,U))!=null&&Oe)});if(v!==-1)return v}let b=P.options.findIndex(v=>!v.dataRef.current.disabled);if(b!==-1)return b}return P.activeOptionIndex},calculateIndex:H,compare:E,isSelected:N,isActive:I}),[x,h,n,A,T,P,u]);$(()=>{var b;u&&y({type:7,options:u.options,disabled:(b=u.disabled)!=null?b:null})},[u,u==null?void 0:u.options,u==null?void 0:u.disabled]),$(()=>{P.dataRef.current=i},[i]);let K=i.comboboxState===0;Je(K,[i.buttonRef,i.inputRef,i.optionsRef],()=>g.closeCombobox());let te=G(()=>{var b,v,U;return{open:i.comboboxState===0,disabled:n,activeIndex:i.activeOptionIndex,activeOption:i.activeOptionIndex===null?null:i.virtual?i.virtual.options[(b=i.activeOptionIndex)!=null?b:0]:(U=(v=i.options[i.activeOptionIndex])==null?void 0:v.dataRef.current.value)!=null?U:null,value:x}},[i,n,x]),ne=m(()=>{if(i.activeOptionIndex!==null){if(g.setIsTyping(!1),i.virtual)C(i.virtual.options[i.activeOptionIndex]);else{let{dataRef:b}=i.options[i.activeOptionIndex];C(b.current.value)}g.goToOption(R.Specific,i.activeOptionIndex)}}),re=m(()=>{y({type:0}),M.current=!0}),ie=m(()=>{y({type:1}),M.current=!1,p==null||p()}),ae=m(b=>{y({type:3,isTyping:b})}),l=m((b,v,U)=>(M.current=!1,b===R.Specific?y({type:2,focus:R.Specific,idx:v,trigger:U}):y({type:2,focus:b,trigger:U}))),B=m((b,v)=>(y({type:4,payload:{id:b,dataRef:v}}),()=>{i.isActive(v.current.value)&&(M.current=!0),y({type:5,id:b})})),C=m(b=>Y(i.mode,{[0](){return S==null?void 0:S(b)},[1](){let v=i.value.slice(),U=v.findIndex(le=>E(le,b));return U===-1?v.push(b):v.splice(U,1),S==null?void 0:S(v)}})),k=m(b=>{y({type:6,trigger:b})}),g=G(()=>({onChange:C,registerOption:B,goToOption:l,setIsTyping:ae,closeCombobox:ie,openCombobox:re,setActivationTrigger:k,selectActiveOption:ne}),[]),[V,W]=To(),we=r===null?{}:{ref:r},Be=Se(()=>{if(h!==void 0)return S==null?void 0:S(h)},[S,h]);return L.createElement(W,{value:V,props:{htmlFor:(ve=i.inputRef.current)==null?void 0:ve.id},slot:{open:i.comboboxState===0,disabled:n}},L.createElement(oo,null,L.createElement(xe.Provider,{value:g},L.createElement(de.Provider,{value:i},L.createElement(uo,{value:Y(i.comboboxState,{[0]:se.Open,[1]:se.Closed})},s!=null&&L.createElement(ao,{disabled:n,data:x!=null?{[s]:x}:{},form:f,onReset:Be}),ee({ourProps:we,theirProps:D,slot:te,defaultTag:Po,name:"Combobox"}))))))}let Ao="input";function Eo(o,r){var te,ne,re,ie,ae;let e=Q("Combobox.Input"),t=oe("Combobox.Input"),c=ue(),d=lo(),{id:f=d||`headlessui-combobox-input-${c}`,onChange:s,displayValue:a,disabled:n=e.disabled||!1,autoFocus:p=!1,type:T="text",...A}=o,_=pe(e.inputRef,r,ro()),u=Ae(e.inputRef),w=We(),D=m(()=>{t.onChange(null),e.optionsRef.current&&(e.optionsRef.current.scrollTop=0),t.goToOption(R.Nothing)}),h=G(()=>{var l;return typeof a=="function"&&e.value!==void 0?(l=a(e.value))!=null?l:"":typeof e.value=="string"?e.value:""},[e.value,a]);_e(([l,B],[C,k])=>{if(e.isTyping)return;let g=e.inputRef.current;g&&((k===0&&B===1||l!==C)&&(g.value=l),requestAnimationFrame(()=>{if(e.isTyping||!g||(u==null?void 0:u.activeElement)!==g)return;let{selectionStart:V,selectionEnd:W}=g;Math.abs((W!=null?W:0)-(V!=null?V:0))===0&&V===0&&g.setSelectionRange(g.value.length,g.value.length)}))},[h,e.comboboxState,u,e.isTyping]),_e(([l],[B])=>{if(l===0&&B===1){if(e.isTyping)return;let C=e.inputRef.current;if(!C)return;let k=C.value,{selectionStart:g,selectionEnd:V,selectionDirection:W}=C;C.value="",C.value=k,W!==null?C.setSelectionRange(g,V,W):C.setSelectionRange(g,V)}},[e.comboboxState]);let x=z(!1),S=m(()=>{x.current=!0}),P=m(()=>{w.nextFrame(()=>{x.current=!1})}),y=m(l=>{switch(t.setIsTyping(!0),l.key){case F.Enter:if(e.comboboxState!==0||x.current)return;if(l.preventDefault(),l.stopPropagation(),e.activeOptionIndex===null){t.closeCombobox();return}t.selectActiveOption(),e.mode===0&&t.closeCombobox();break;case F.ArrowDown:return l.preventDefault(),l.stopPropagation(),Y(e.comboboxState,{[0]:()=>t.goToOption(R.Next),[1]:()=>t.openCombobox()});case F.ArrowUp:return l.preventDefault(),l.stopPropagation(),Y(e.comboboxState,{[0]:()=>t.goToOption(R.Previous),[1]:()=>{q(()=>t.openCombobox()),e.value||t.goToOption(R.Last)}});case F.Home:if(l.shiftKey)break;return l.preventDefault(),l.stopPropagation(),t.goToOption(R.First);case F.PageUp:return l.preventDefault(),l.stopPropagation(),t.goToOption(R.First);case F.End:if(l.shiftKey)break;return l.preventDefault(),l.stopPropagation(),t.goToOption(R.Last);case F.PageDown:return l.preventDefault(),l.stopPropagation(),t.goToOption(R.Last);case F.Escape:return e.comboboxState!==0?void 0:(l.preventDefault(),e.optionsRef.current&&!e.optionsPropsRef.current.static&&l.stopPropagation(),e.mode===0&&e.value===null&&D(),t.closeCombobox());case F.Tab:if(e.comboboxState!==0)return;e.mode===0&&e.activationTrigger!==1&&t.selectActiveOption(),t.closeCombobox();break}}),M=m(l=>{s==null||s(l),e.mode===0&&l.target.value===""&&D(),t.openCombobox()}),O=m(l=>{var C,k,g;let B=(C=l.relatedTarget)!=null?C:he.find(V=>V!==l.currentTarget);if(!((k=e.optionsRef.current)!=null&&k.contains(B))&&!((g=e.buttonRef.current)!=null&&g.contains(B))&&e.comboboxState===0)return l.preventDefault(),e.mode===0&&e.value===null&&D(),t.closeCombobox()}),j=m(l=>{var C,k,g;let B=(C=l.relatedTarget)!=null?C:he.find(V=>V!==l.currentTarget);(k=e.buttonRef.current)!=null&&k.contains(B)||(g=e.optionsRef.current)!=null&&g.contains(B)||e.disabled||e.immediate&&e.comboboxState!==0&&(q(()=>t.openCombobox()),t.setActivationTrigger(1))}),X=me(),J=co(),{isFocused:E,focusProps:H}=ye({autoFocus:p}),{isHovered:N,hoverProps:I}=Ce({isDisabled:n}),i=G(()=>({open:e.comboboxState===0,disabled:n,hover:N,focus:E,autofocus:p}),[e,N,E,p,n]),K=ce({ref:_,id:f,role:"combobox",type:T,"aria-controls":(te=e.optionsRef.current)==null?void 0:te.id,"aria-expanded":e.comboboxState===0,"aria-activedescendant":e.activeOptionIndex===null?void 0:e.virtual?(ne=e.options.find(l=>!l.dataRef.current.disabled&&e.compare(l.dataRef.current.value,e.virtual.options[e.activeOptionIndex])))==null?void 0:ne.id:(re=e.options[e.activeOptionIndex])==null?void 0:re.id,"aria-labelledby":X,"aria-describedby":J,"aria-autocomplete":"list",defaultValue:(ae=(ie=o.defaultValue)!=null?ie:e.defaultValue!==void 0?a==null?void 0:a(e.defaultValue):null)!=null?ae:e.defaultValue,disabled:n||void 0,autoFocus:p,onCompositionStart:S,onCompositionEnd:P,onKeyDown:y,onChange:M,onFocus:j,onBlur:O},H,I);return ee({ourProps:K,theirProps:A,slot:i,defaultTag:Ao,name:"Combobox.Input"})}let _o="button";function ho(o,r){var M;let e=Q("Combobox.Button"),t=oe("Combobox.Button"),c=pe(e.buttonRef,r),d=ue(),{id:f=`headlessui-combobox-button-${d}`,disabled:s=e.disabled||!1,autoFocus:a=!1,...n}=o,p=Ee(e.inputRef),T=m(O=>{switch(O.key){case F.Space:case F.Enter:O.preventDefault(),O.stopPropagation(),e.comboboxState===1&&q(()=>t.openCombobox()),p();return;case F.ArrowDown:O.preventDefault(),O.stopPropagation(),e.comboboxState===1&&(q(()=>t.openCombobox()),e.value||t.goToOption(R.First)),p();return;case F.ArrowUp:O.preventDefault(),O.stopPropagation(),e.comboboxState===1&&(q(()=>t.openCombobox()),e.value||t.goToOption(R.Last)),p();return;case F.Escape:if(e.comboboxState!==0)return;O.preventDefault(),e.optionsRef.current&&!e.optionsPropsRef.current.static&&O.stopPropagation(),q(()=>t.closeCombobox()),p();return;default:return}}),A=m(O=>{O.preventDefault(),!so(O.currentTarget)&&(O.button===Ve.Left&&(e.comboboxState===0?t.closeCombobox():t.openCombobox()),p())}),_=me([f]),{isFocusVisible:u,focusProps:w}=ye({autoFocus:a}),{isHovered:D,hoverProps:h}=Ce({isDisabled:s}),{pressed:x,pressProps:S}=He({disabled:s}),P=G(()=>({open:e.comboboxState===0,active:x||e.comboboxState===0,disabled:s,value:e.value,hover:D,focus:u}),[e,D,u,x,s]),y=ce({ref:c,id:f,type:qe(o,e.buttonRef),tabIndex:-1,"aria-haspopup":"listbox","aria-controls":(M=e.optionsRef.current)==null?void 0:M.id,"aria-expanded":e.comboboxState===0,"aria-labelledby":_,disabled:s||void 0,autoFocus:a,onMouseDown:A,onKeyDown:T},w,h,S);return ee({ourProps:y,theirProps:n,slot:P,defaultTag:_o,name:"Combobox.Button"})}let Mo="div",Do=Fe.RenderStrategy|Fe.Static;function Fo(o,r){var N;let e=ue(),{id:t=`headlessui-combobox-options-${e}`,hold:c=!1,anchor:d,portal:f=!1,modal:s=!0,...a}=o,n=Q("Combobox.Options"),p=oe("Combobox.Options"),T=io(d);T&&(f=!0);let[A,_]=to(T),u=no(),w=pe(n.optionsRef,r,T?A:null),D=Ae(n.optionsRef),h=po(),x=(()=>h!==null?(h&se.Open)===se.Open:n.comboboxState===0)();Xe(x,n.inputRef,p.closeCombobox);let S=n.__demoMode?!1:s&&n.comboboxState===0;Ye(S,D);let P=n.__demoMode?!1:s&&n.comboboxState===0;ze(P,{allowed:m(()=>[n.inputRef.current,n.buttonRef.current,n.optionsRef.current])}),$(()=>{var I;n.optionsPropsRef.current.static=(I=o.static)!=null?I:!1},[n.optionsPropsRef,o.static]),$(()=>{n.optionsPropsRef.current.hold=c},[n.optionsPropsRef,c]),Ze(n.comboboxState===0,{container:n.optionsRef.current,accept(I){return I.getAttribute("role")==="option"?NodeFilter.FILTER_REJECT:I.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(I){I.setAttribute("role","none")}});let y=me([(N=n.buttonRef.current)==null?void 0:N.id]),M=G(()=>({open:n.comboboxState===0,option:void 0}),[n]),O=m(()=>{p.setActivationTrigger(0)}),j=m(I=>{I.preventDefault(),p.setActivationTrigger(0)}),X=ce(T?u():{},{"aria-labelledby":y,role:"listbox","aria-multiselectable":n.mode===1?!0:void 0,id:t,ref:w,style:{...a.style,..._,"--input-width":Ie(n.inputRef,!0).width,"--button-width":Ie(n.buttonRef,!0).width},onWheel:n.activationTrigger===0?void 0:O,onMouseDown:j});n.virtual&&x&&Object.assign(a,{children:L.createElement(Ro,null,a.children)});let[J,E]=Pe(n.value);n.value!==J&&n.comboboxState===0&&n.mode!==1&&E(n.value);let H=m(I=>n.compare(J,I));return L.createElement(xo,{enabled:f?o.static||x:!1},L.createElement(de.Provider,{value:n.mode===1?n:{...n,isSelected:H}},ee({ourProps:X,theirProps:a,slot:M,defaultTag:Mo,features:Do,visible:x,name:"Combobox.Options"})))}let Vo="div";function Lo(o,r){var E,H,N,I;let e=Q("Combobox.Option"),t=oe("Combobox.Option"),c=ue(),{id:d=`headlessui-combobox-option-${c}`,value:f,disabled:s=(N=(H=(E=e.virtual)==null?void 0:E.disabled)==null?void 0:H.call(E,f))!=null?N:!1,order:a=null,...n}=o,p=Ee(e.inputRef),T=e.virtual?e.activeOptionIndex===e.calculateIndex(f):e.activeOptionIndex===null?!1:((I=e.options[e.activeOptionIndex])==null?void 0:I.id)===d,A=e.isSelected(f),_=z(null),u=$e({disabled:s,value:f,domRef:_,order:a}),w=fe(Le),D=pe(r,_,w?w.measureElement:null),h=m(()=>{t.setIsTyping(!1),t.onChange(f)});$(()=>t.registerOption(d,u),[u,d]);let x=z(!(e.virtual||e.__demoMode));$(()=>{if(!e.virtual&&!e.__demoMode)return De().requestAnimationFrame(()=>{x.current=!0})},[e.virtual,e.__demoMode]),$(()=>{if(x.current&&e.comboboxState===0&&T&&e.activationTrigger!==0)return De().requestAnimationFrame(()=>{var i,K;(K=(i=_.current)==null?void 0:i.scrollIntoView)==null||K.call(i,{block:"nearest"})})},[_,T,e.comboboxState,e.activationTrigger,e.activeOptionIndex]);let S=m(i=>{i.preventDefault(),i.button===Ve.Left&&(s||(h(),fo()||requestAnimationFrame(()=>p()),e.mode===0&&t.closeCombobox()))}),P=m(()=>{if(s)return t.goToOption(R.Nothing);let i=e.calculateIndex(f);t.goToOption(R.Specific,i)}),y=Qe(),M=m(i=>y.update(i)),O=m(i=>{if(!y.wasMoved(i)||s||T)return;let K=e.calculateIndex(f);t.goToOption(R.Specific,K,0)}),j=m(i=>{y.wasMoved(i)&&(s||T&&(e.optionsPropsRef.current.hold||t.goToOption(R.Nothing)))}),X=G(()=>({active:T,focus:T,selected:A,disabled:s}),[T,A,s]);return ee({ourProps:{id:d,ref:D,role:"option",tabIndex:s===!0?void 0:-1,"aria-disabled":s===!0?!0:void 0,"aria-selected":A,disabled:void 0,onMouseDown:S,onFocus:P,onPointerEnter:M,onMouseEnter:M,onPointerMove:O,onMouseMove:O,onPointerLeave:j,onMouseLeave:j},theirProps:n,slot:X,defaultTag:Vo,name:"Combobox.Option"})}let wo=Z(Io),Bo=Z(ho),ko=Z(Eo),No=mo,Uo=Z(Fo),Ho=Z(Lo),Ft=Object.assign(wo,{Input:ko,Button:Bo,Label:No,Options:Uo,Option:Ho});export{Ft as Combobox,Bo as ComboboxButton,ko as ComboboxInput,No as ComboboxLabel,Ho as ComboboxOption,Uo as ComboboxOptions}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as c}from"@react-aria/focus";import{useHover as A}from"@react-aria/interactions";import{Fragment as D,useMemo as f}from"react";import{useActivePress as v}from'../../hooks/use-active-press.js';import{forwardRefWithAs as I,mergeProps as y,render as P}from'../../utils/render.js';let E=D;function _(o,n){let{...s}=o,e=!1,{isFocusVisible:t,focusProps:p}=c(),{isHovered:r,hoverProps:i}=A({isDisabled:e}),{pressed:a,pressProps:T}=v({disabled:e}),l=y({ref:n},p,i,T),m=f(()=>({hover:r,focus:t,active:a}),[r,t,a]);return P({ourProps:l,theirProps:s,slot:m,defaultTag:E,name:"DataInteractive"})}let C=I(_);export{C as DataInteractive}; | ||
"use client";import{useFocusRing as c}from"@react-aria/focus";import{useHover as A}from"@react-aria/interactions";import{Fragment as D,useMemo as f}from"react";import{useActivePress as v}from'../../hooks/use-active-press.js';import{forwardRefWithAs as I,mergeProps as y,render as P}from'../../utils/render.js';let E=D;function _(o,n){let{...p}=o,e=!1,{isFocusVisible:t,focusProps:s}=c(),{isHovered:r,hoverProps:i}=A({isDisabled:e}),{pressed:a,pressProps:T}=v({disabled:e}),l=y({ref:n},s,i,T),m=f(()=>({hover:r,focus:t,active:a}),[r,t,a]);return P({ourProps:l,theirProps:p,slot:m,defaultTag:E,name:"DataInteractive"})}let C=I(_);export{C as DataInteractive}; |
@@ -20,3 +20,3 @@ import React, { type ElementType, type ReactNode, type Ref } from 'react'; | ||
export type DescriptionProps<TTag extends ElementType = typeof DEFAULT_DESCRIPTION_TAG> = Props<TTag>; | ||
declare function DescriptionFn<TTag extends ElementType = typeof DEFAULT_DESCRIPTION_TAG>(props: DescriptionProps<TTag>, ref: Ref<HTMLParagraphElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare function DescriptionFn<TTag extends ElementType = typeof DEFAULT_DESCRIPTION_TAG>(props: DescriptionProps<TTag>, ref: Ref<HTMLElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
export interface _internal_ComponentDescription extends HasDisplayName { | ||
@@ -23,0 +23,0 @@ <TTag extends ElementType = typeof DEFAULT_DESCRIPTION_TAG>(props: DescriptionProps<TTag> & RefProp<typeof DescriptionFn>): JSX.Element; |
@@ -1,1 +0,1 @@ | ||
"use client";import m,{createContext as T,useContext as u,useMemo as c,useState as P}from"react";import{useEvent as g}from'../../hooks/use-event.js';import{useId as x}from'../../hooks/use-id.js';import{useIsoMorphicEffect as y}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,render as I}from'../../utils/render.js';let a=T(null);a.displayName="DescriptionContext";function f(){let r=u(a);if(r===null){let e=new Error("You used a <Description /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function w(){var r,e;return(e=(r=u(a))==null?void 0:r.value)!=null?e:void 0}function G(){let[r,e]=P([]);return[r.length>0?r.join(" "):void 0,c(()=>function(t){let i=g(n=>(e(s=>[...s,n]),()=>e(s=>{let o=s.slice(),p=o.indexOf(n);return p!==-1&&o.splice(p,1),o}))),l=c(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let S="p";function h(r,e){let d=x(),t=v(),{id:i=`headlessui-description-${d}`,...l}=r,n=f(),s=E(e);y(()=>n.register(i),[i,n.register]);let o=t||!1,p=c(()=>({...n.slot,disabled:o}),[n.slot,o]),D={ref:s,...n.props,id:i};return I({ourProps:D,theirProps:l,slot:p,defaultTag:S,name:n.name||"Description"})}let C=R(h),U=Object.assign(C,{});export{U as Description,w as useDescribedBy,G as useDescriptions}; | ||
"use client";import m,{createContext as T,useContext as u,useMemo as c,useState as P}from"react";import{useEvent as g}from'../../hooks/use-event.js';import{useId as x}from'../../hooks/use-id.js';import{useIsoMorphicEffect as y}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,render as I}from'../../utils/render.js';let a=T(null);a.displayName="DescriptionContext";function f(){let r=u(a);if(r===null){let e=new Error("You used a <Description /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function G(){var r,e;return(e=(r=u(a))==null?void 0:r.value)!=null?e:void 0}function U(){let[r,e]=P([]);return[r.length>0?r.join(" "):void 0,c(()=>function(t){let i=g(n=>(e(s=>[...s,n]),()=>e(s=>{let o=s.slice(),p=o.indexOf(n);return p!==-1&&o.splice(p,1),o}))),l=c(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let S="p";function C(r,e){let d=x(),t=v(),{id:i=`headlessui-description-${d}`,...l}=r,n=f(),s=E(e);y(()=>n.register(i),[i,n.register]);let o=t||!1,p=c(()=>({...n.slot,disabled:o}),[n.slot,o]),D={ref:s,...n.props,id:i};return I({ourProps:D,theirProps:l,slot:p,defaultTag:S,name:n.name||"Description"})}let _=R(C),w=Object.assign(_,{});export{w as Description,G as useDescribedBy,U as useDescriptions}; |
@@ -19,17 +19,3 @@ import React, { type ElementType, type MutableRefObject, type Ref } from 'react'; | ||
}>; | ||
declare function DialogFn<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG>(props: DialogProps<TTag>, ref: Ref<HTMLDivElement>): React.JSX.Element; | ||
declare let DEFAULT_OVERLAY_TAG: "div"; | ||
type OverlayRenderPropArg = { | ||
open: boolean; | ||
}; | ||
type OverlayPropsWeControl = 'aria-hidden'; | ||
export type DialogOverlayProps<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG> = Props<TTag, OverlayRenderPropArg, OverlayPropsWeControl>; | ||
declare function OverlayFn<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(props: DialogOverlayProps<TTag>, ref: Ref<HTMLDivElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare let DEFAULT_BACKDROP_TAG: "div"; | ||
type BackdropRenderPropArg = { | ||
open: boolean; | ||
}; | ||
type BackdropPropsWeControl = 'aria-hidden'; | ||
export type DialogBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = Props<TTag, BackdropRenderPropArg, BackdropPropsWeControl>; | ||
declare function BackdropFn<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(props: DialogBackdropProps<TTag>, ref: Ref<HTMLDivElement>): React.JSX.Element; | ||
declare function DialogFn<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG>(props: DialogProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
declare let DEFAULT_PANEL_TAG: "div"; | ||
@@ -40,3 +26,3 @@ type PanelRenderPropArg = { | ||
export type DialogPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = Props<TTag, PanelRenderPropArg>; | ||
declare function PanelFn<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: DialogPanelProps<TTag>, ref: Ref<HTMLDivElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare function PanelFn<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: DialogPanelProps<TTag>, ref: Ref<HTMLElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare let DEFAULT_TITLE_TAG: "h2"; | ||
@@ -47,15 +33,9 @@ type TitleRenderPropArg = { | ||
export type DialogTitleProps<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = Props<TTag, TitleRenderPropArg>; | ||
declare function TitleFn<TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(props: DialogTitleProps<TTag>, ref: Ref<HTMLHeadingElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare function TitleFn<TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(props: DialogTitleProps<TTag>, ref: Ref<HTMLElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
export interface _internal_ComponentDialog extends HasDisplayName { | ||
<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG>(props: DialogProps<TTag> & RefProp<typeof DialogFn>): JSX.Element; | ||
} | ||
export interface _internal_ComponentDialogBackdrop extends HasDisplayName { | ||
<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(props: DialogBackdropProps<TTag> & RefProp<typeof BackdropFn>): JSX.Element; | ||
} | ||
export interface _internal_ComponentDialogPanel extends HasDisplayName { | ||
<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: DialogPanelProps<TTag> & RefProp<typeof PanelFn>): JSX.Element; | ||
} | ||
export interface _internal_ComponentDialogOverlay extends HasDisplayName { | ||
<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(props: DialogOverlayProps<TTag> & RefProp<typeof OverlayFn>): JSX.Element; | ||
} | ||
export interface _internal_ComponentDialogTitle extends HasDisplayName { | ||
@@ -66,5 +46,3 @@ <TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(props: DialogTitleProps<TTag> & RefProp<typeof TitleFn>): JSX.Element; | ||
} | ||
export declare let DialogBackdrop: _internal_ComponentDialogBackdrop; | ||
export declare let DialogPanel: _internal_ComponentDialogPanel; | ||
export declare let DialogOverlay: _internal_ComponentDialogOverlay; | ||
export declare let DialogTitle: _internal_ComponentDialogTitle; | ||
@@ -74,5 +52,5 @@ /** @deprecated use `<Description>` instead of `<DialogDescription>` */ | ||
export declare let Dialog: _internal_ComponentDialog & { | ||
Backdrop: _internal_ComponentDialogBackdrop; | ||
/** @deprecated use `<DialogPanel>` instead of `<Dialog.Panel>` */ | ||
Panel: _internal_ComponentDialogPanel; | ||
Overlay: _internal_ComponentDialogOverlay; | ||
/** @deprecated use `<DialogTitle>` instead of `<Dialog.Title>` */ | ||
Title: _internal_ComponentDialogTitle; | ||
@@ -79,0 +57,0 @@ /** @deprecated use `<Description>` instead of `<Dialog.Description>` */ |
@@ -1,1 +0,1 @@ | ||
"use client";import s,{createContext as _e,createRef as Re,useCallback as q,useContext as z,useEffect as H,useMemo as P,useReducer as Ce,useRef as Q,useState as Oe}from"react";import{useDocumentOverflowLockedEffect as ve}from'../../hooks/document-overflow/use-document-overflow.js';import{useEvent as _}from'../../hooks/use-event.js';import{useEventListener as Fe}from'../../hooks/use-event-listener.js';import{useId as R}from'../../hooks/use-id.js';import{useInert as Z}from'../../hooks/use-inert.js';import{useIsTouchDevice as be}from'../../hooks/use-is-touch-device.js';import{useOutsideClick as Le}from'../../hooks/use-outside-click.js';import{useOwnerDocument as xe}from'../../hooks/use-owner.js';import{useRootContainers as he}from'../../hooks/use-root-containers.js';import{useServerHandoffComplete as Se}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as C}from'../../hooks/use-sync-refs.js';import{HoistFormFields as ke}from'../../internal/form-fields.js';import{State as k,useOpenClosed as Ie}from'../../internal/open-closed.js';import{ForcePortalRoot as B}from'../../internal/portal-force-root.js';import{StackMessage as ee,StackProvider as Me}from'../../internal/stack-context.js';import{isDisabledReactIssue7711 as Ge}from'../../utils/bugs.js';import{match as U}from'../../utils/match.js';import{RenderFeatures as te,forwardRefWithAs as O,render as v}from'../../utils/render.js';import{Description as oe,useDescriptions as we}from'../description/description.js';import{FocusTrap as He,FocusTrapFeatures as E}from'../focus-trap/focus-trap.js';import{Keys as Be}from'../keyboard.js';import{Portal as N,useNestedPortals as Ue}from'../portal/portal.js';var Ne=(r=>(r[r.Open=0]="Open",r[r.Closed=1]="Closed",r))(Ne||{}),We=(e=>(e[e.SetTitleId=0]="SetTitleId",e))(We||{});let Ye={[0](t,e){return t.titleId===e.id?t:{...t,titleId:e.id}}},I=_e(null);I.displayName="DialogContext";function F(t){let e=z(I);if(e===null){let r=new Error(`<${t} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,F),r}return e}function $e(t,e,r=()=>[document.body]){ve(t,e,i=>{var n;return{containers:[...(n=i.containers)!=null?n:[],r]}})}function je(t,e){return U(e.type,Ye,t,e)}let Je="div",Ke=te.RenderStrategy|te.Static;function Ve(t,e){let r=R(),{id:i=`headlessui-dialog-${r}`,open:n,onClose:l,initialFocus:p,role:a="dialog",autoFocus:T=!0,__demoMode:m=!1,...M}=t,[f,W]=Oe(0),Y=Q(!1);a=function(){return a==="dialog"||a==="alertdialog"?a:(Y.current||(Y.current=!0,console.warn(`Invalid role [${a}] passed to <Dialog />. Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`)),"dialog")}();let A=Ie();n===void 0&&A!==null&&(n=(A&k.Open)===k.Open);let c=Q(null),re=C(c,e),g=xe(c),$=t.hasOwnProperty("open")||A!==null,j=t.hasOwnProperty("onClose");if(!$&&!j)throw new Error("You have to provide an `open` and an `onClose` prop to the `Dialog` component.");if(!$)throw new Error("You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.");if(!j)throw new Error("You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.");if(typeof n!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${n}`);if(typeof l!="function")throw new Error(`You provided an \`onClose\` prop to the \`Dialog\`, but the value is not a function. Received: ${l}`);let d=n?0:1,[b,ne]=Ce(je,{titleId:null,descriptionId:null,panelRef:Re()}),y=_(()=>l(!1)),J=_(o=>ne({type:0,id:o})),L=Se()?m?!1:d===0:!1,x=f>1,K=z(I)!==null,[le,ae]=Ue(),ie={get current(){var o;return(o=b.panelRef.current)!=null?o:c.current}},{resolveContainers:G,mainTreeNodeRef:h,MainTreeNode:se}=he({portals:le,defaultContainers:[ie]}),pe=x?"parent":"leaf",V=A!==null?(A&k.Closing)===k.Closing:!1,de=(()=>K||V?!1:L)(),ue=q(()=>{var o,D;return(D=Array.from((o=g==null?void 0:g.querySelectorAll("body > *"))!=null?o:[]).find(u=>u.id==="headlessui-portal-root"?!1:u.contains(h.current)&&u instanceof HTMLElement))!=null?D:null},[h]);Z(ue,de);let fe=(()=>x?!0:L)(),ge=q(()=>{var o,D;return(D=Array.from((o=g==null?void 0:g.querySelectorAll("[data-headlessui-portal]"))!=null?o:[]).find(u=>u.contains(h.current)&&u instanceof HTMLElement))!=null?D:null},[h]);Z(ge,fe);let Te=(()=>!(!L||x))();Le(G,y,Te);let ce=(()=>!(x||d!==0))();Fe(g==null?void 0:g.defaultView,"keydown",o=>{ce&&(o.defaultPrevented||o.key===Be.Escape&&(o.preventDefault(),o.stopPropagation(),y()))});let De=(()=>!(V||d!==0||K))();$e(g,De,G),H(()=>{if(d!==0||!c.current)return;let o=new ResizeObserver(D=>{for(let u of D){let S=u.target.getBoundingClientRect();S.x===0&&S.y===0&&S.width===0&&S.height===0&&y()}});return o.observe(c.current),()=>o.disconnect()},[d,c,y]);let[me,ye]=we(),Pe=P(()=>[{dialogState:d,close:y,setTitleId:J},b],[d,b,y,J]),X=P(()=>({open:d===0}),[d]),Ee={ref:re,id:i,role:a,tabIndex:-1,"aria-modal":d===0?!0:void 0,"aria-labelledby":b.titleId,"aria-describedby":me},Ae=!be(),w=L?U(pe,{parent:E.RestoreFocus,leaf:E.All&~E.FocusLock}):E.None;return T&&(w|=E.AutoFocus),Ae||(w&=~E.InitialFocus),s.createElement(Me,{type:"Dialog",enabled:d===0,element:c,onUpdate:_((o,D)=>{D==="Dialog"&&U(o,{[ee.Add]:()=>W(u=>u+1),[ee.Remove]:()=>W(u=>u-1)})})},s.createElement(B,{force:!0},s.createElement(N,null,s.createElement(I.Provider,{value:Pe},s.createElement(N.Group,{target:c},s.createElement(B,{force:!1},s.createElement(ye,{slot:X,name:"Dialog.Description"},s.createElement(ae,null,s.createElement(He,{initialFocus:p,initialFocusFallback:c,containers:G,features:w},v({ourProps:Ee,theirProps:M,slot:X,defaultTag:Je,features:Ke,visible:d===0,name:"Dialog"}))))))))),s.createElement(ke,null,s.createElement(se,null)))}let Xe="div";function qe(t,e){let r=R(),{id:i=`headlessui-dialog-overlay-${r}`,...n}=t,[{dialogState:l,close:p}]=F("Dialog.Overlay"),a=C(e),T=_(f=>{if(f.target===f.currentTarget){if(Ge(f.currentTarget))return f.preventDefault();f.preventDefault(),f.stopPropagation(),p()}}),m=P(()=>({open:l===0}),[l]);return v({ourProps:{ref:a,id:i,"aria-hidden":!0,onClick:T},theirProps:n,slot:m,defaultTag:Xe,name:"Dialog.Overlay"})}let ze="div";function Qe(t,e){let r=R(),{id:i=`headlessui-dialog-backdrop-${r}`,...n}=t,[{dialogState:l},p]=F("Dialog.Backdrop"),a=C(e);H(()=>{if(p.panelRef.current===null)throw new Error("A <Dialog.Backdrop /> component is being used, but a <Dialog.Panel /> component is missing.")},[p.panelRef]);let T=P(()=>({open:l===0}),[l]);return s.createElement(B,{force:!0},s.createElement(N,null,v({ourProps:{ref:a,id:i,"aria-hidden":!0},theirProps:n,slot:T,defaultTag:ze,name:"Dialog.Backdrop"})))}let Ze="div";function et(t,e){let r=R(),{id:i=`headlessui-dialog-panel-${r}`,...n}=t,[{dialogState:l},p]=F("Dialog.Panel"),a=C(e,p.panelRef),T=P(()=>({open:l===0}),[l]),m=_(f=>{f.stopPropagation()});return v({ourProps:{ref:a,id:i,onClick:m},theirProps:n,slot:T,defaultTag:Ze,name:"Dialog.Panel"})}let tt="h2";function ot(t,e){let r=R(),{id:i=`headlessui-dialog-title-${r}`,...n}=t,[{dialogState:l,setTitleId:p}]=F("Dialog.Title"),a=C(e);H(()=>(p(i),()=>p(null)),[i,p]);let T=P(()=>({open:l===0}),[l]);return v({ourProps:{ref:a,id:i},theirProps:n,slot:T,defaultTag:tt,name:"Dialog.Title"})}let rt=O(Ve),nt=O(Qe),lt=O(et),at=O(qe),it=O(ot),St=oe,kt=Object.assign(rt,{Backdrop:nt,Panel:lt,Overlay:at,Title:it,Description:oe});export{kt as Dialog,nt as DialogBackdrop,St as DialogDescription,at as DialogOverlay,lt as DialogPanel,it as DialogTitle}; | ||
"use client";import n,{createContext as te,createRef as oe,useContext as le,useEffect as ne,useMemo as F,useReducer as re,useRef as U}from"react";import{useEscape as ae}from'../../hooks/use-escape.js';import{useEvent as y}from'../../hooks/use-event.js';import{useId as v}from'../../hooks/use-id.js';import{useInertOthers as ie}from'../../hooks/use-inert-others.js';import{useIsTouchDevice as se}from'../../hooks/use-is-touch-device.js';import{useOnDisappear as pe}from'../../hooks/use-on-disappear.js';import{useOutsideClick as de}from'../../hooks/use-outside-click.js';import{useOwnerDocument as ue}from'../../hooks/use-owner.js';import{useRootContainers as fe}from'../../hooks/use-root-containers.js';import{useScrollLock as Te}from'../../hooks/use-scroll-lock.js';import{useServerHandoffComplete as ge}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as x}from'../../hooks/use-sync-refs.js';import{CloseProvider as ce}from'../../internal/close-provider.js';import{HoistFormFields as me}from'../../internal/form-fields.js';import{State as b,useOpenClosed as De}from'../../internal/open-closed.js';import{ForcePortalRoot as k}from'../../internal/portal-force-root.js';import{match as Pe}from'../../utils/match.js';import{RenderFeatures as $,forwardRefWithAs as L,render as h}from'../../utils/render.js';import{Description as j,useDescriptions as ye}from'../description/description.js';import{FocusTrap as Ee,FocusTrapFeatures as E}from'../focus-trap/focus-trap.js';import{Portal as _e,PortalGroup as Ae,useNestedPortals as Ce}from'../portal/portal.js';var Fe=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(Fe||{}),be=(e=>(e[e.SetTitleId=0]="SetTitleId",e))(be||{});let Re={[0](t,e){return t.titleId===e.id?t:{...t,titleId:e.id}}},O=te(null);O.displayName="DialogContext";function I(t){let e=le(O);if(e===null){let l=new Error(`<${t} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,I),l}return e}function ve(t,e){return Pe(e.type,Re,t,e)}let xe="div",Le=$.RenderStrategy|$.Static;function he(t,e){let l=v(),{id:s=`headlessui-dialog-${l}`,open:a,onClose:i,initialFocus:p,role:r="dialog",autoFocus:c=!0,__demoMode:d=!1,...S}=t,_=U(!1);r=function(){return r==="dialog"||r==="alertdialog"?r:(_.current||(_.current=!0,console.warn(`Invalid role [${r}] passed to <Dialog />. Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`)),"dialog")}();let m=De();a===void 0&&m!==null&&(a=(m&b.Open)===b.Open);let u=U(null),W=x(u,e),A=ue(u),M=t.hasOwnProperty("open")||m!==null,w=t.hasOwnProperty("onClose");if(!M&&!w)throw new Error("You have to provide an `open` and an `onClose` prop to the `Dialog` component.");if(!M)throw new Error("You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.");if(!w)throw new Error("You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.");if(typeof a!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${a}`);if(typeof i!="function")throw new Error(`You provided an \`onClose\` prop to the \`Dialog\`, but the value is not a function. Received: ${i}`);let f=a?0:1,[C,Y]=re(ve,{titleId:null,descriptionId:null,panelRef:oe()}),T=y(()=>i(!1)),G=y(o=>Y({type:0,id:o})),g=ge()?f===0:!1,[J,X]=Ce(),B={get current(){var o;return(o=C.panelRef.current)!=null?o:u.current}},{resolveContainers:R,mainTreeNodeRef:V,MainTreeNode:q}=fe({portals:J,defaultContainers:[B]}),H=m!==null?(m&b.Closing)===b.Closing:!1;ie(d||H?!1:g,{allowed:y(()=>{var o,P;return[(P=(o=u.current)==null?void 0:o.closest("[data-headlessui-portal]"))!=null?P:null]}),disallowed:y(()=>{var o,P;return[(P=(o=V.current)==null?void 0:o.closest("body > *:not(#headlessui-portal-root)"))!=null?P:null]})}),de(g,R,o=>{o.preventDefault(),T()}),ae(g,A==null?void 0:A.defaultView,o=>{o.preventDefault(),o.stopPropagation(),document.activeElement&&"blur"in document.activeElement&&typeof document.activeElement.blur=="function"&&document.activeElement.blur(),T()}),Te(d||H?!1:g,A,R),pe(g,u,T);let[z,K]=ye(),Q=F(()=>[{dialogState:f,close:T,setTitleId:G},C],[f,C,T,G]),N=F(()=>({open:f===0}),[f]),Z={ref:W,id:s,role:r,tabIndex:-1,"aria-modal":d?void 0:f===0?!0:void 0,"aria-labelledby":C.titleId,"aria-describedby":z},ee=!se(),D=E.None;return g&&!d&&(D|=E.RestoreFocus,D|=E.TabLock,c&&(D|=E.AutoFocus),ee&&(D|=E.InitialFocus)),n.createElement(n.Fragment,null,n.createElement(k,{force:!0},n.createElement(_e,null,n.createElement(O.Provider,{value:Q},n.createElement(Ae,{target:u},n.createElement(k,{force:!1},n.createElement(K,{slot:N},n.createElement(X,null,n.createElement(Ee,{initialFocus:p,initialFocusFallback:u,containers:R,features:D},n.createElement(ce,{value:T},h({ourProps:Z,theirProps:S,slot:N,defaultTag:xe,features:Le,visible:f===0,name:"Dialog"})))))))))),n.createElement(me,null,n.createElement(q,null)))}let Oe="div";function Ie(t,e){let l=v(),{id:s=`headlessui-dialog-panel-${l}`,...a}=t,[{dialogState:i},p]=I("Dialog.Panel"),r=x(e,p.panelRef),c=F(()=>({open:i===0}),[i]),d=y(_=>{_.stopPropagation()});return h({ourProps:{ref:r,id:s,onClick:d},theirProps:a,slot:c,defaultTag:Oe,name:"Dialog.Panel"})}let Se="h2";function Me(t,e){let l=v(),{id:s=`headlessui-dialog-title-${l}`,...a}=t,[{dialogState:i,setTitleId:p}]=I("Dialog.Title"),r=x(e);ne(()=>(p(s),()=>p(null)),[s,p]);let c=F(()=>({open:i===0}),[i]);return h({ourProps:{ref:r,id:s},theirProps:a,slot:c,defaultTag:Se,name:"Dialog.Title"})}let we=L(he),Ge=L(Ie),He=L(Me),pt=j,dt=Object.assign(we,{Panel:Ge,Title:He,Description:j});export{dt as Dialog,pt as DialogDescription,Ge as DialogPanel,He as DialogTitle}; |
@@ -21,2 +21,3 @@ import React, { type ElementType, type MutableRefObject, type Ref } from 'react'; | ||
active: boolean; | ||
disabled: boolean; | ||
focus: boolean; | ||
@@ -39,3 +40,3 @@ autofocus: boolean; | ||
export type DisclosurePanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = Props<TTag, PanelRenderPropArg, DisclosurePanelPropsWeControl, PropsForFeatures<typeof PanelRenderFeatures>>; | ||
declare function PanelFn<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: DisclosurePanelProps<TTag>, ref: Ref<HTMLDivElement>): React.JSX.Element; | ||
declare function PanelFn<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: DisclosurePanelProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
export interface _internal_ComponentDisclosure extends HasDisplayName { | ||
@@ -53,5 +54,7 @@ <TTag extends ElementType = typeof DEFAULT_DISCLOSURE_TAG>(props: DisclosureProps<TTag> & RefProp<typeof DisclosureFn>): JSX.Element; | ||
export declare let Disclosure: _internal_ComponentDisclosure & { | ||
/** @deprecated use `<DisclosureButton>` instead of `<Disclosure.Button>` */ | ||
Button: _internal_ComponentDisclosureButton; | ||
/** @deprecated use `<DisclosurePanel>` instead of `<Disclosure.Panel>` */ | ||
Panel: _internal_ComponentDisclosurePanel; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as Y}from"@react-aria/focus";import{useHover as Z}from"@react-aria/interactions";import R,{Fragment as j,createContext as x,useContext as L,useEffect as W,useMemo as b,useReducer as ee,useRef as A}from"react";import{useActivePress as te}from'../../hooks/use-active-press.js';import{useEvent as C}from'../../hooks/use-event.js';import{useId as $}from'../../hooks/use-id.js';import{useResolveButtonType as ne}from'../../hooks/use-resolve-button-type.js';import{optionalRef as oe,useSyncRefs as O}from'../../hooks/use-sync-refs.js';import{OpenClosedProvider as le,State as I,useOpenClosed as se}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as re}from'../../utils/bugs.js';import{match as _}from'../../utils/match.js';import{getOwnerDocument as ue}from'../../utils/owner.js';import{RenderFeatures as J,forwardRefWithAs as v,mergeProps as X,render as B,useMergeRefsFn as V}from'../../utils/render.js';import{startTransition as ie}from'../../utils/start-transition.js';import{Keys as g}from'../keyboard.js';var ae=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(ae||{}),pe=(t=>(t[t.ToggleDisclosure=0]="ToggleDisclosure",t[t.CloseDisclosure=1]="CloseDisclosure",t[t.SetButtonId=2]="SetButtonId",t[t.SetPanelId=3]="SetPanelId",t[t.LinkPanel=4]="LinkPanel",t[t.UnlinkPanel=5]="UnlinkPanel",t))(pe||{});let ce={[0]:e=>({...e,disclosureState:_(e.disclosureState,{[0]:1,[1]:0})}),[1]:e=>e.disclosureState===1?e:{...e,disclosureState:1},[4](e){return e.linkedPanel===!0?e:{...e,linkedPanel:!0}},[5](e){return e.linkedPanel===!1?e:{...e,linkedPanel:!1}},[2](e,n){return e.buttonId===n.buttonId?e:{...e,buttonId:n.buttonId}},[3](e,n){return e.panelId===n.panelId?e:{...e,panelId:n.panelId}}},F=x(null);F.displayName="DisclosureContext";function k(e){let n=L(F);if(n===null){let l=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,k),l}return n}let M=x(null);M.displayName="DisclosureAPIContext";function q(e){let n=L(M);if(n===null){let l=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,q),l}return n}let H=x(null);H.displayName="DisclosurePanelContext";function de(){return L(H)}function fe(e,n){return _(n.type,ce,e,n)}let Te=j;function De(e,n){let{defaultOpen:l=!1,...i}=e,f=A(null),o=O(n,oe(u=>{f.current=u},e.as===void 0||e.as===j)),t=A(null),d=A(null),r=ee(fe,{disclosureState:l?0:1,linkedPanel:!1,buttonRef:d,panelRef:t,buttonId:null,panelId:null}),[{disclosureState:c,buttonId:a},y]=r,p=C(u=>{y({type:1});let D=ue(f);if(!D||!a)return;let P=(()=>u?u instanceof HTMLElement?u:u.current instanceof HTMLElement?u.current:D.getElementById(a):D.getElementById(a))();P==null||P.focus()}),m=b(()=>({close:p}),[p]),T=b(()=>({open:c===0,close:p}),[c,p]),S={ref:o};return R.createElement(F.Provider,{value:r},R.createElement(M.Provider,{value:m},R.createElement(le,{value:_(c,{[0]:I.Open,[1]:I.Closed})},B({ourProps:S,theirProps:i,slot:T,defaultTag:Te,name:"Disclosure"}))))}let Pe="button";function ye(e,n){var N,G,K;let l=$(),{id:i=`headlessui-disclosure-button-${l}`,...f}=e,[o,t]=k("Disclosure.Button"),d=de(),r=d===null?!1:d===o.panelId,c=A(null),a=O(c,n,r?null:o.buttonRef),y=V();W(()=>{if(!r)return t({type:2,buttonId:i}),()=>{t({type:2,buttonId:null})}},[i,t,r]);let p=C(s=>{var E;if(r){if(o.disclosureState===1)return;switch(s.key){case g.Space:case g.Enter:s.preventDefault(),s.stopPropagation(),t({type:0}),(E=o.buttonRef.current)==null||E.focus();break}}else switch(s.key){case g.Space:case g.Enter:s.preventDefault(),s.stopPropagation(),t({type:0});break}}),m=C(s=>{switch(s.key){case g.Space:s.preventDefault();break}}),T=C(s=>{var E;re(s.currentTarget)||e.disabled||(r?(t({type:0}),(E=o.buttonRef.current)==null||E.focus()):t({type:0}))}),{isFocusVisible:S,focusProps:u}=Y({autoFocus:(N=e.autoFocus)!=null?N:!1}),{isHovered:D,hoverProps:P}=Z({isDisabled:(G=e.disabled)!=null?G:!1}),{pressed:U,pressProps:h}=te({disabled:(K=e.disabled)!=null?K:!1}),z=b(()=>{var s;return{open:o.disclosureState===0,hover:D,active:U,focus:S,autofocus:(s=e.autoFocus)!=null?s:!1}},[o,D,U,S,e.autoFocus]),w=ne(e,c),Q=r?X({ref:a,type:w,onKeyDown:p,onClick:T},u,P,h):X({ref:a,id:i,type:w,"aria-expanded":o.disclosureState===0,"aria-controls":o.linkedPanel?o.panelId:void 0,onKeyDown:p,onKeyUp:m,onClick:T},u,P,h);return B({mergeRefs:y,ourProps:Q,theirProps:f,slot:z,defaultTag:Pe,name:"Disclosure.Button"})}let me="div",Ee=J.RenderStrategy|J.Static;function ge(e,n){let l=$(),{id:i=`headlessui-disclosure-panel-${l}`,...f}=e,[o,t]=k("Disclosure.Panel"),{close:d}=q("Disclosure.Panel"),r=V(),c=O(n,o.panelRef,T=>{ie(()=>t({type:T?4:5}))});W(()=>(t({type:3,panelId:i}),()=>{t({type:3,panelId:null})}),[i,t]);let a=se(),y=(()=>a!==null?(a&I.Open)===I.Open:o.disclosureState===0)(),p=b(()=>({open:o.disclosureState===0,close:d}),[o,d]),m={ref:c,id:i};return R.createElement(H.Provider,{value:o.panelId},B({mergeRefs:r,ourProps:m,theirProps:f,slot:p,defaultTag:me,features:Ee,visible:y,name:"Disclosure.Panel"}))}let Se=v(De),Re=v(ye),be=v(ge),we=Object.assign(Se,{Button:Re,Panel:be});export{we as Disclosure,Re as DisclosureButton,be as DisclosurePanel}; | ||
"use client";import{useFocusRing as Q}from"@react-aria/focus";import{useHover as Y}from"@react-aria/interactions";import g,{Fragment as K,createContext as x,useContext as L,useEffect as j,useMemo as b,useReducer as Z,useRef as R}from"react";import{useActivePress as ee}from'../../hooks/use-active-press.js';import{useEvent as A}from'../../hooks/use-event.js';import{useId as W}from'../../hooks/use-id.js';import{useResolveButtonType as te}from'../../hooks/use-resolve-button-type.js';import{optionalRef as ne,useSyncRefs as v}from'../../hooks/use-sync-refs.js';import{CloseProvider as oe}from'../../internal/close-provider.js';import{OpenClosedProvider as le,State as C,useOpenClosed as re}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as se}from'../../utils/bugs.js';import{match as O}from'../../utils/match.js';import{getOwnerDocument as ue}from'../../utils/owner.js';import{RenderFeatures as $,forwardRefWithAs as _,mergeProps as J,render as B,useMergeRefsFn as X}from'../../utils/render.js';import{startTransition as ie}from'../../utils/start-transition.js';import{Keys as S}from'../keyboard.js';var ae=(o=>(o[o.Open=0]="Open",o[o.Closed=1]="Closed",o))(ae||{}),pe=(t=>(t[t.ToggleDisclosure=0]="ToggleDisclosure",t[t.CloseDisclosure=1]="CloseDisclosure",t[t.SetButtonId=2]="SetButtonId",t[t.SetPanelId=3]="SetPanelId",t[t.LinkPanel=4]="LinkPanel",t[t.UnlinkPanel=5]="UnlinkPanel",t))(pe||{});let ce={[0]:e=>({...e,disclosureState:O(e.disclosureState,{[0]:1,[1]:0})}),[1]:e=>e.disclosureState===1?e:{...e,disclosureState:1},[4](e){return e.linkedPanel===!0?e:{...e,linkedPanel:!0}},[5](e){return e.linkedPanel===!1?e:{...e,linkedPanel:!1}},[2](e,n){return e.buttonId===n.buttonId?e:{...e,buttonId:n.buttonId}},[3](e,n){return e.panelId===n.panelId?e:{...e,panelId:n.panelId}}},M=x(null);M.displayName="DisclosureContext";function F(e){let n=L(M);if(n===null){let o=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,F),o}return n}let k=x(null);k.displayName="DisclosureAPIContext";function V(e){let n=L(k);if(n===null){let o=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,V),o}return n}let H=x(null);H.displayName="DisclosurePanelContext";function de(){return L(H)}function fe(e,n){return O(n.type,ce,e,n)}let Te=K;function De(e,n){let{defaultOpen:o=!1,...d}=e,u=R(null),r=v(n,ne(c=>{u.current=c},e.as===void 0||e.as===K)),t=R(null),l=R(null),i=Z(fe,{disclosureState:o?0:1,linkedPanel:!1,buttonRef:l,panelRef:t,buttonId:null,panelId:null}),[{disclosureState:f,buttonId:s},T]=i,p=A(c=>{T({type:1});let P=ue(u);if(!P||!s)return;let y=(()=>c?c instanceof HTMLElement?c:c.current instanceof HTMLElement?c.current:P.getElementById(s):P.getElementById(s))();y==null||y.focus()}),m=b(()=>({close:p}),[p]),D=b(()=>({open:f===0,close:p}),[f,p]),I={ref:r};return g.createElement(M.Provider,{value:i},g.createElement(k.Provider,{value:m},g.createElement(oe,{value:p},g.createElement(le,{value:O(f,{[0]:C.Open,[1]:C.Closed})},B({ourProps:I,theirProps:d,slot:D,defaultTag:Te,name:"Disclosure"})))))}let Pe="button";function ye(e,n){let o=W(),{id:d=`headlessui-disclosure-button-${o}`,disabled:u=!1,autoFocus:r=!1,...t}=e,[l,i]=F("Disclosure.Button"),f=de(),s=f===null?!1:f===l.panelId,T=R(null),p=v(T,n,s?null:l.buttonRef),m=X();j(()=>{if(!s)return i({type:2,buttonId:d}),()=>{i({type:2,buttonId:null})}},[d,i,s]);let D=A(a=>{var E;if(s){if(l.disclosureState===1)return;switch(a.key){case S.Space:case S.Enter:a.preventDefault(),a.stopPropagation(),i({type:0}),(E=l.buttonRef.current)==null||E.focus();break}}else switch(a.key){case S.Space:case S.Enter:a.preventDefault(),a.stopPropagation(),i({type:0});break}}),I=A(a=>{switch(a.key){case S.Space:a.preventDefault();break}}),c=A(a=>{var E;se(a.currentTarget)||u||(s?(i({type:0}),(E=l.buttonRef.current)==null||E.focus()):i({type:0}))}),{isFocusVisible:P,focusProps:y}=Q({autoFocus:r}),{isHovered:U,hoverProps:h}=Y({isDisabled:u}),{pressed:N,pressProps:w}=ee({disabled:u}),q=b(()=>({open:l.disclosureState===0,hover:U,active:N,disabled:u,focus:P,autofocus:r}),[l,U,N,P,u,r]),G=te(e,T),z=s?J({ref:p,type:G,disabled:u||void 0,autoFocus:r,onKeyDown:D,onClick:c},y,h,w):J({ref:p,id:d,type:G,"aria-expanded":l.disclosureState===0,"aria-controls":l.linkedPanel?l.panelId:void 0,disabled:u||void 0,autoFocus:r,onKeyDown:D,onKeyUp:I,onClick:c},y,h,w);return B({mergeRefs:m,ourProps:z,theirProps:t,slot:q,defaultTag:Pe,name:"Disclosure.Button"})}let me="div",Ee=$.RenderStrategy|$.Static;function ge(e,n){let o=W(),{id:d=`headlessui-disclosure-panel-${o}`,...u}=e,[r,t]=F("Disclosure.Panel"),{close:l}=V("Disclosure.Panel"),i=X(),f=v(n,r.panelRef,D=>{ie(()=>t({type:D?4:5}))});j(()=>(t({type:3,panelId:d}),()=>{t({type:3,panelId:null})}),[d,t]);let s=re(),T=(()=>s!==null?(s&C.Open)===C.Open:r.disclosureState===0)(),p=b(()=>({open:r.disclosureState===0,close:l}),[r,l]),m={ref:f,id:d};return g.createElement(H.Provider,{value:r.panelId},B({mergeRefs:i,ourProps:m,theirProps:u,slot:p,defaultTag:me,features:Ee,visible:T,name:"Disclosure.Panel"}))}let Se=_(De),be=_(ye),Re=_(ge),we=Object.assign(Se,{Button:be,Panel:Re});export{we as Disclosure,be as DisclosureButton,Re as DisclosurePanel}; |
@@ -1,1 +0,1 @@ | ||
"use client";import r,{useMemo as F}from"react";import{useId as T}from'../../hooks/use-id.js';import{DisabledProvider as P,useDisabled as f}from'../../internal/disabled.js';import{FormFieldsProvider as y}from'../../internal/form-fields.js';import{IdProvider as u}from'../../internal/id.js';import{forwardRefWithAs as D,render as v}from'../../utils/render.js';import{useDescriptions as b}from'../description/description.js';import{useLabels as E}from'../label/label.js';let A="div";function L(i,d){let l=`headlessui-control-${T()}`,[t,s]=E(),[p,n]=b(),a=f(),{disabled:e=a||!1,...o}=i,m=F(()=>({disabled:e}),[e]);return r.createElement(P,{value:e},r.createElement(s,{value:t},r.createElement(n,{value:p},r.createElement(u,{id:l},v({ourProps:{ref:d,disabled:e,"aria-disabled":e||void 0},theirProps:{...o,children:r.createElement(y,null,o.children)},slot:m,defaultTag:A,name:"Field"})))))}let H=D(L);export{H as Field}; | ||
"use client";import r,{useMemo as F}from"react";import{useId as T}from'../../hooks/use-id.js';import{DisabledProvider as f,useDisabled as P}from'../../internal/disabled.js';import{FormFieldsProvider as y}from'../../internal/form-fields.js';import{IdProvider as u}from'../../internal/id.js';import{forwardRefWithAs as D,render as v}from'../../utils/render.js';import{useDescriptions as b}from'../description/description.js';import{useLabels as E}from'../label/label.js';let A="div";function L(d,l){let t=`headlessui-control-${T()}`,[s,p]=E(),[n,a]=b(),m=P(),{disabled:e=m||!1,...o}=d,i=F(()=>({disabled:e}),[e]);return r.createElement(f,{value:e},r.createElement(p,{value:s},r.createElement(a,{value:n},r.createElement(u,{id:t},v({ourProps:{ref:l,disabled:e||void 0,"aria-disabled":e||void 0},theirProps:{...o,children:r.createElement(y,null,typeof o.children=="function"?o.children(i):o.children)},slot:i,defaultTag:A,name:"Field"})))))}let H=D(L);export{H as Field}; |
import { type ElementType } from 'react'; | ||
import type { Props } from '../../types.js'; | ||
import { type HasDisplayName } from '../../utils/render.js'; | ||
declare let DEFAULT_FIELDSET_TAG: "div"; | ||
declare let DEFAULT_FIELDSET_TAG: "fieldset"; | ||
type FieldsetRenderPropArg = {}; | ||
type FieldsetPropsWeControl = 'aria-controls'; | ||
type FieldsetPropsWeControl = 'aria-labelledby' | 'aria-disabled' | 'role'; | ||
export type FieldsetProps<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG> = Props<TTag, FieldsetRenderPropArg, FieldsetPropsWeControl, { | ||
@@ -8,0 +8,0 @@ disabled?: boolean; |
@@ -1,1 +0,1 @@ | ||
"use client";import t,{useMemo as a}from"react";import{DisabledProvider as n,useDisabled as T}from'../../internal/disabled.js';import{forwardRefWithAs as m,render as F}from'../../utils/render.js';import{useLabels as y}from'../label/label.js';let f="div";function E(r,o){let l=T(),{disabled:e=l||!1,...s}=r,[i,d]=y(),p=a(()=>({disabled:e}),[e]);return t.createElement(n,{value:e},t.createElement(d,null,F({ourProps:{ref:o,role:"group","aria-labelledby":i,"aria-disabled":e||void 0},theirProps:s,slot:p,defaultTag:f,name:"Fieldset"})))}let L=m(E);export{L as Fieldset}; | ||
"use client";import o,{useMemo as y}from"react";import{useResolvedTag as F}from'../../hooks/use-resolved-tag.js';import{useSyncRefs as b}from'../../hooks/use-sync-refs.js';import{DisabledProvider as E,useDisabled as P}from'../../internal/disabled.js';import{forwardRefWithAs as u,render as g}from'../../utils/render.js';import{useLabels as D}from'../label/label.js';let d="fieldset";function A(t,i){var s;let a=P(),{disabled:e=a||!1,...p}=t,[n,T]=F((s=t.as)!=null?s:d),l=b(i,T),[r,f]=D(),m=y(()=>({disabled:e}),[e]);return o.createElement(E,{value:e},o.createElement(f,null,g({ourProps:n==="fieldset"?{ref:l,"aria-labelledby":r,disabled:e||void 0}:{ref:l,role:"group","aria-labelledby":r,"aria-disabled":e||void 0},theirProps:p,slot:m,defaultTag:d,name:"Fieldset"})))}let C=u(A);export{C as Fieldset}; |
@@ -8,15 +8,13 @@ import React, { type ElementType, type MutableRefObject, type Ref } from 'react'; | ||
/** No features enabled for the focus trap. */ | ||
None = 1, | ||
None = 0, | ||
/** Ensure that we move focus initially into the container. */ | ||
InitialFocus = 2, | ||
InitialFocus = 1, | ||
/** Ensure that pressing `Tab` and `Shift+Tab` is trapped within the container. */ | ||
TabLock = 4, | ||
TabLock = 2, | ||
/** Ensure that programmatically moving focus outside of the container is disallowed. */ | ||
FocusLock = 8, | ||
FocusLock = 4, | ||
/** Ensure that we restore the focus when unmounting the focus trap. */ | ||
RestoreFocus = 16, | ||
RestoreFocus = 8, | ||
/** Initial focus should look for the `data-autofocus` */ | ||
AutoFocus = 32, | ||
/** Enable all features. */ | ||
All = 30 | ||
AutoFocus = 16 | ||
} | ||
@@ -31,3 +29,3 @@ type FocusTrapRenderPropArg = {}; | ||
}>; | ||
declare function FocusTrapFn<TTag extends ElementType = typeof DEFAULT_FOCUS_TRAP_TAG>(props: FocusTrapProps<TTag>, ref: Ref<HTMLDivElement>): React.JSX.Element; | ||
declare function FocusTrapFn<TTag extends ElementType = typeof DEFAULT_FOCUS_TRAP_TAG>(props: FocusTrapProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
export interface _internal_ComponentFocusTrap extends HasDisplayName { | ||
@@ -37,4 +35,5 @@ <TTag extends ElementType = typeof DEFAULT_FOCUS_TRAP_TAG>(props: FocusTrapProps<TTag> & RefProp<typeof FocusTrapFn>): JSX.Element; | ||
export declare let FocusTrap: _internal_ComponentFocusTrap & { | ||
/** @deprecated use `FocusTrapFeatures` instead of `FocusTrap.features` */ | ||
features: typeof FocusTrapFeatures; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import d,{useRef as L}from"react";import{useDisposables as I}from'../../hooks/use-disposables.js';import{useEvent as A}from'../../hooks/use-event.js';import{useEventListener as k}from'../../hooks/use-event-listener.js';import{useIsMounted as g}from'../../hooks/use-is-mounted.js';import{useOnUnmount as G}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as W}from'../../hooks/use-owner.js';import{useServerHandoffComplete as K}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as V}from'../../hooks/use-sync-refs.js';import{Direction as M,useTabDirection as q}from'../../hooks/use-tab-direction.js';import{useWatch as y}from'../../hooks/use-watch.js';import{Hidden as F,HiddenFeatures as P}from'../../internal/hidden.js';import{history as R}from'../../utils/active-element-history.js';import{Focus as T,FocusResult as O,focusElement as f,focusIn as m}from'../../utils/focus-management.js';import{match as C}from'../../utils/match.js';import{microTask as _}from'../../utils/micro-task.js';import{forwardRefWithAs as J,render as X}from'../../utils/render.js';function S(t){if(!t)return new Set;if(typeof t=="function")return new Set(t());let o=new Set;for(let e of t.current)e.current instanceof HTMLElement&&o.add(e.current);return o}let z="div";var h=(r=>(r[r.None=1]="None",r[r.InitialFocus=2]="InitialFocus",r[r.TabLock=4]="TabLock",r[r.FocusLock=8]="FocusLock",r[r.RestoreFocus=16]="RestoreFocus",r[r.AutoFocus=32]="AutoFocus",r[r.All=30]="All",r))(h||{});function Q(t,o){let e=L(null),n=V(e,o),{initialFocus:c,initialFocusFallback:p,containers:u,features:r=30,...l}=t;K()||(r=1);let s=W(e);$({ownerDocument:s},!!(r&16));let U=D({ownerDocument:s,container:e,initialFocus:c,initialFocusFallback:p},r);w({ownerDocument:s,container:e,containers:u,previousActiveElement:U},!!(r&8));let b=q(),v=A(a=>{let i=e.current;if(!i)return;(N=>N())(()=>{C(b.current,{[M.Forwards]:()=>{m(i,T.First,{skipElements:[a.relatedTarget,p]})},[M.Backwards]:()=>{m(i,T.Last,{skipElements:[a.relatedTarget,p]})}})})}),B=I(),H=L(!1),x={ref:n,onKeyDown(a){a.key=="Tab"&&(H.current=!0,B.requestAnimationFrame(()=>{H.current=!1}))},onBlur(a){if(!(r&8))return;let i=S(u);e.current instanceof HTMLElement&&i.add(e.current);let E=a.relatedTarget;E instanceof HTMLElement&&E.dataset.headlessuiFocusGuard!=="true"&&(j(i,E)||(H.current?m(e.current,C(b.current,{[M.Forwards]:()=>T.Next,[M.Backwards]:()=>T.Previous})|T.WrapAround,{relativeTo:a.target}):a.target instanceof HTMLElement&&f(a.target)))}};return d.createElement(d.Fragment,null,!!(r&4)&&d.createElement(F,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:v,features:P.Focusable}),X({ourProps:x,theirProps:l,defaultTag:z,name:"FocusTrap"}),!!(r&4)&&d.createElement(F,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:v,features:P.Focusable}))}let Y=J(Q),Le=Object.assign(Y,{features:h});function Z(t=!0){let o=L(R.slice());return y(([e],[n])=>{n===!0&&e===!1&&_(()=>{o.current.splice(0)}),n===!1&&e===!0&&(o.current=R.slice())},[t,R,o]),A(()=>{var e;return(e=o.current.find(n=>n!=null&&n.isConnected))!=null?e:null})}function $({ownerDocument:t},o){let e=Z(o);y(()=>{o||(t==null?void 0:t.activeElement)===(t==null?void 0:t.body)&&f(e())},[o]),G(()=>{o&&f(e())})}function D({ownerDocument:t,container:o,initialFocus:e,initialFocusFallback:n},c){let p=!!(c&2),u=L(null),r=g();return y(()=>{if(!p){n!=null&&n.current&&f(n.current);return}let l=o.current;l&&_(()=>{if(!r.current)return;let s=t==null?void 0:t.activeElement;if(e!=null&&e.current){if((e==null?void 0:e.current)===s){u.current=s;return}}else if(l.contains(s)){u.current=s;return}if(e!=null&&e.current)f(e.current);else{if(c&32){if(m(l,T.First|T.AutoFocus)!==O.Error)return}else if(m(l,T.First)!==O.Error)return;if(n!=null&&n.current&&(f(n.current),(t==null?void 0:t.activeElement)===n.current))return;console.warn("There are no focusable elements inside the <FocusTrap />")}u.current=t==null?void 0:t.activeElement})},[n,p,c]),u}function w({ownerDocument:t,container:o,containers:e,previousActiveElement:n},c){let p=g();k(t==null?void 0:t.defaultView,"focus",u=>{if(!c||!p.current)return;let r=S(e);o.current instanceof HTMLElement&&r.add(o.current);let l=n.current;if(!l)return;let s=u.target;s&&s instanceof HTMLElement?j(r,s)?(n.current=s,f(s)):(u.preventDefault(),u.stopPropagation(),f(l)):f(n.current)},!0)}function j(t,o){for(let e of t)if(e.contains(o))return!0;return!1}export{Le as FocusTrap,h as FocusTrapFeatures}; | ||
"use client";import L,{useRef as M}from"react";import{useDisposables as G}from'../../hooks/use-disposables.js';import{useEvent as A}from'../../hooks/use-event.js';import{useEventListener as W}from'../../hooks/use-event-listener.js';import{useIsMounted as P}from'../../hooks/use-is-mounted.js';import{useIsTopLayer as O}from'../../hooks/use-is-top-layer.js';import{useOnUnmount as K}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as V}from'../../hooks/use-owner.js';import{useServerHandoffComplete as q}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as J}from'../../hooks/use-sync-refs.js';import{Direction as H,useTabDirection as X}from'../../hooks/use-tab-direction.js';import{useWatch as y}from'../../hooks/use-watch.js';import{Hidden as C,HiddenFeatures as _}from'../../internal/hidden.js';import{history as b}from'../../utils/active-element-history.js';import{Focus as T,FocusResult as S,focusElement as p,focusIn as E}from'../../utils/focus-management.js';import{match as h}from'../../utils/match.js';import{microTask as j}from'../../utils/micro-task.js';import{forwardRefWithAs as z,render as Q}from'../../utils/render.js';function U(o){if(!o)return new Set;if(typeof o=="function")return new Set(o());let e=new Set;for(let t of o.current)t.current instanceof HTMLElement&&e.add(t.current);return e}let Y="div";var x=(n=>(n[n.None=0]="None",n[n.InitialFocus=1]="InitialFocus",n[n.TabLock=2]="TabLock",n[n.FocusLock=4]="FocusLock",n[n.RestoreFocus=8]="RestoreFocus",n[n.AutoFocus=16]="AutoFocus",n))(x||{});function Z(o,e){let t=M(null),r=J(t,e),{initialFocus:s,initialFocusFallback:a,containers:n,features:u=15,...f}=o;q()||(u=0);let l=V(t);w(u,{ownerDocument:l});let i=ee(u,{ownerDocument:l,container:t,initialFocus:s,initialFocusFallback:a});te(u,{ownerDocument:l,container:t,containers:n,previousActiveElement:i});let R=X(),g=A(c=>{let m=t.current;if(!m)return;(B=>B())(()=>{h(R.current,{[H.Forwards]:()=>{E(m,T.First,{skipElements:[c.relatedTarget,a]})},[H.Backwards]:()=>{E(m,T.Last,{skipElements:[c.relatedTarget,a]})}})})}),v=O(!!(u&2),"focus-trap#tab-lock"),N=G(),F=M(!1),k={ref:r,onKeyDown(c){c.key=="Tab"&&(F.current=!0,N.requestAnimationFrame(()=>{F.current=!1}))},onBlur(c){if(!(u&4))return;let m=U(n);t.current instanceof HTMLElement&&m.add(t.current);let d=c.relatedTarget;d instanceof HTMLElement&&d.dataset.headlessuiFocusGuard!=="true"&&(I(m,d)||(F.current?E(t.current,h(R.current,{[H.Forwards]:()=>T.Next,[H.Backwards]:()=>T.Previous})|T.WrapAround,{relativeTo:c.target}):c.target instanceof HTMLElement&&p(c.target)))}};return L.createElement(L.Fragment,null,v&&L.createElement(C,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:g,features:_.Focusable}),Q({ourProps:k,theirProps:f,defaultTag:Y,name:"FocusTrap"}),v&&L.createElement(C,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:g,features:_.Focusable}))}let $=z(Z),Fe=Object.assign($,{features:x});function D(o=!0){let e=M(b.slice());return y(([t],[r])=>{r===!0&&t===!1&&j(()=>{e.current.splice(0)}),r===!1&&t===!0&&(e.current=b.slice())},[o,b,e]),A(()=>{var t;return(t=e.current.find(r=>r!=null&&r.isConnected))!=null?t:null})}function w(o,{ownerDocument:e}){let t=!!(o&8),r=D(t);y(()=>{t||(e==null?void 0:e.activeElement)===(e==null?void 0:e.body)&&p(r())},[t]),K(()=>{t&&p(r())})}function ee(o,{ownerDocument:e,container:t,initialFocus:r,initialFocusFallback:s}){let a=M(null),n=O(!!(o&1),"focus-trap#initial-focus"),u=P();return y(()=>{if(o===0)return;if(!n){s!=null&&s.current&&p(s.current);return}let f=t.current;f&&j(()=>{if(!u.current)return;let l=e==null?void 0:e.activeElement;if(r!=null&&r.current){if((r==null?void 0:r.current)===l){a.current=l;return}}else if(f.contains(l)){a.current=l;return}if(r!=null&&r.current)p(r.current);else{if(o&16){if(E(f,T.First|T.AutoFocus)!==S.Error)return}else if(E(f,T.First)!==S.Error)return;if(s!=null&&s.current&&(p(s.current),(e==null?void 0:e.activeElement)===s.current))return;console.warn("There are no focusable elements inside the <FocusTrap />")}a.current=e==null?void 0:e.activeElement})},[s,n,o]),a}function te(o,{ownerDocument:e,container:t,containers:r,previousActiveElement:s}){let a=P(),n=!!(o&4);W(e==null?void 0:e.defaultView,"focus",u=>{if(!n||!a.current)return;let f=U(r);t.current instanceof HTMLElement&&f.add(t.current);let l=s.current;if(!l)return;let i=u.target;i&&i instanceof HTMLElement?I(f,i)?(s.current=i,p(i)):(u.preventDefault(),u.stopPropagation(),p(l)):p(s.current)},!0)}function I(o,e){for(let t of o)if(t.contains(e))return!0;return!1}export{Fe as FocusTrap,x as FocusTrapFeatures}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as c}from"@react-aria/focus";import{useHover as F}from"@react-aria/interactions";import{useMemo as g}from"react";import{useId as v}from'../../hooks/use-id.js';import{useDisabled as A}from'../../internal/disabled.js';import{useProvidedId as _}from'../../internal/id.js';import{forwardRefWithAs as D,mergeProps as E,render as R}from'../../utils/render.js';import{useDescribedBy as x}from'../description/description.js';import{useLabelledBy as U}from'../label/label.js';let h="input";function L(o,p){var s;let l=v(),i=_(),u=A(),{id:d=i||`headlessui-input-${l}`,disabled:e=u||!1,invalid:t=!1,...f}=o,m=U(),T=x(),{isFocusVisible:r,focusProps:y}=c({isTextInput:!0,autoFocus:(s=o.autoFocus)!=null?s:!1}),{isHovered:n,hoverProps:b}=F({isDisabled:e!=null?e:!1}),I=E({ref:p,id:d,"aria-labelledby":m,"aria-describedby":T,"aria-invalid":t?"":void 0,disabled:e||void 0},y,b),P=g(()=>{var a;return{disabled:e,invalid:t,hover:n,focus:r,autofocus:(a=o.autoFocus)!=null?a:!1}},[e,t,n,r,o.autoFocus]);return R({ourProps:I,theirProps:f,slot:P,defaultTag:h,name:"Input"})}let J=D(L);export{J as Input}; | ||
"use client";import{useFocusRing as P}from"@react-aria/focus";import{useHover as c}from"@react-aria/interactions";import{useMemo as g}from"react";import{useId as v}from'../../hooks/use-id.js';import{useDisabled as A}from'../../internal/disabled.js';import{useProvidedId as _}from'../../internal/id.js';import{forwardRefWithAs as D,mergeProps as E,render as F}from'../../utils/render.js';import{useDescribedBy as R}from'../description/description.js';import{useLabelledBy as U}from'../label/label.js';let x="input";function h(n,s){let a=v(),l=_(),i=A(),{id:d=l||`headlessui-input-${a}`,disabled:e=i||!1,autoFocus:o=!1,invalid:t=!1,...u}=n,f=U(),m=R(),{isFocused:r,focusProps:T}=P({autoFocus:o}),{isHovered:p,hoverProps:b}=c({isDisabled:e}),y=E({ref:s,id:d,"aria-labelledby":f,"aria-describedby":m,"aria-invalid":t?"":void 0,disabled:e||void 0,autoFocus:o},T,b),I=g(()=>({disabled:e,invalid:t,hover:p,focus:r,autofocus:o}),[e,t,p,r,o]);return F({ourProps:y,theirProps:u,slot:I,defaultTag:x,name:"Input"})}let J=D(h);export{J as Input}; |
@@ -1,1 +0,1 @@ | ||
"use client";import k,{createContext as D,useContext as h,useMemo as T,useState as R}from"react";import{useEvent as v}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as A}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as S}from'../../internal/id.js';import{forwardRefWithAs as M,render as H}from'../../utils/render.js';let c=D(null);c.displayName="LabelContext";function P(){let r=h(c);if(r===null){let l=new Error("You used a <Label /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(l,P),l}return r}function I(r){var a,e,o;let l=(e=(a=h(c))==null?void 0:a.value)!=null?e:void 0;return((o=r==null?void 0:r.length)!=null?o:0)>0?[l,...r].filter(Boolean).join(" "):l}function w({inherit:r=!1}={}){let l=I(),[a,e]=R([]),o=r?[l,...a].filter(Boolean):a;return[o.length>0?o.join(" "):void 0,T(()=>function(t){let s=v(i=>(e(p=>[...p,i]),()=>e(p=>{let u=p.slice(),d=u.indexOf(i);return d!==-1&&u.splice(d,1),u}))),m=T(()=>({register:s,slot:t.slot,name:t.name,props:t.props,value:t.value}),[s,t.slot,t.name,t.props,t.value]);return k.createElement(c.Provider,{value:m},t.children)},[e])]}let N="label";function G(r,l){var y;let a=_(),e=P(),o=S(),g=F(),{id:t=`headlessui-label-${a}`,htmlFor:s=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:m=!1,...i}=r,p=B(l);A(()=>e.register(t),[t,e.register]);let u=v(L=>{let b=L.currentTarget;if(b instanceof HTMLLabelElement&&L.preventDefault(),e.props&&"onClick"in e.props&&typeof e.props.onClick=="function"&&e.props.onClick(L),b instanceof HTMLLabelElement){let n=document.getElementById(b.htmlFor);if(n){let E=n.getAttribute("disabled");if(E==="true"||E==="")return;let x=n.getAttribute("aria-disabled");if(x==="true"||x==="")return;(n instanceof HTMLInputElement&&(n.type==="radio"||n.type==="checkbox")||n.role==="radio"||n.role==="checkbox"||n.role==="switch")&&n.click(),n.focus({preventScroll:!0})}}}),d=g||!1,C=T(()=>({...e.slot,disabled:d}),[e.slot,d]),f={ref:p,...e.props,id:t,htmlFor:s,onClick:u};return m&&("onClick"in f&&(delete f.htmlFor,delete f.onClick),"onClick"in i&&delete i.onClick),H({ourProps:f,theirProps:i,slot:C,defaultTag:s?N:"div",name:e.name||"Label"})}let U=M(G),z=Object.assign(U,{});export{z as Label,P as useLabelContext,I as useLabelledBy,w as useLabels}; | ||
"use client";import k,{createContext as D,useContext as h,useMemo as T,useState as R}from"react";import{useEvent as v}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as A}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as S}from'../../internal/id.js';import{forwardRefWithAs as M,render as H}from'../../utils/render.js';let c=D(null);c.displayName="LabelContext";function P(){let r=h(c);if(r===null){let l=new Error("You used a <Label /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(l,P),l}return r}function I(r){var a,e,o;let l=(e=(a=h(c))==null?void 0:a.value)!=null?e:void 0;return((o=r==null?void 0:r.length)!=null?o:0)>0?[l,...r].filter(Boolean).join(" "):l}function z({inherit:r=!1}={}){let l=I(),[a,e]=R([]),o=r?[l,...a].filter(Boolean):a;return[o.length>0?o.join(" "):void 0,T(()=>function(t){let s=v(i=>(e(p=>[...p,i]),()=>e(p=>{let u=p.slice(),d=u.indexOf(i);return d!==-1&&u.splice(d,1),u}))),m=T(()=>({register:s,slot:t.slot,name:t.name,props:t.props,value:t.value}),[s,t.slot,t.name,t.props,t.value]);return k.createElement(c.Provider,{value:m},t.children)},[e])]}let N="label";function G(r,l){var y;let a=_(),e=P(),o=S(),g=F(),{id:t=`headlessui-label-${a}`,htmlFor:s=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:m=!1,...i}=r,p=B(l);A(()=>e.register(t),[t,e.register]);let u=v(L=>{let b=L.currentTarget;if(b instanceof HTMLLabelElement&&L.preventDefault(),e.props&&"onClick"in e.props&&typeof e.props.onClick=="function"&&e.props.onClick(L),b instanceof HTMLLabelElement){let n=document.getElementById(b.htmlFor);if(n){let E=n.getAttribute("disabled");if(E==="true"||E==="")return;let x=n.getAttribute("aria-disabled");if(x==="true"||x==="")return;(n instanceof HTMLInputElement&&(n.type==="radio"||n.type==="checkbox")||n.role==="radio"||n.role==="checkbox"||n.role==="switch")&&n.click(),n.focus({preventScroll:!0})}}}),d=g||!1,C=T(()=>({...e.slot,disabled:d}),[e.slot,d]),f={ref:p,...e.props,id:t,htmlFor:s,onClick:u};return m&&("onClick"in f&&(delete f.htmlFor,delete f.onClick),"onClick"in i&&delete i.onClick),H({ourProps:f,theirProps:i,slot:C,defaultTag:s?N:"div",name:e.name||"Label"})}let U=M(G),K=Object.assign(U,{});export{K as Label,P as useLabelContext,I as useLabelledBy,z as useLabels}; |
@@ -1,1 +0,1 @@ | ||
"use client";import p from"react";import{forwardRefWithAs as r}from'../../utils/render.js';import{Label as e}from'../label/label.js';let a=e;function o(n,t){return p.createElement(e,{as:"div",ref:t,...n})}let d=r(o);export{d as Legend}; | ||
"use client";import p from"react";import{forwardRefWithAs as r}from'../../utils/render.js';import{Label as e}from'../label/label.js';let a=e;function o(t,n){return p.createElement(e,{as:"div",ref:n,...t})}let d=r(o);export{d as Legend}; |
@@ -27,2 +27,3 @@ import React, { type ElementType, type Ref } from 'react'; | ||
multiple?: boolean; | ||
__demoMode?: boolean; | ||
}>; | ||
@@ -44,5 +45,6 @@ declare function ListboxFn<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType>(props: ListboxProps<TTag, TType, TActualType>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
autoFocus?: boolean; | ||
disabled?: boolean; | ||
}>; | ||
declare function ButtonFn<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(props: ListboxButtonProps<TTag>, ref: Ref<HTMLButtonElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare let DEFAULT_OPTIONS_TAG: "ul"; | ||
declare let DEFAULT_OPTIONS_TAG: "div"; | ||
type OptionsRenderPropArg = { | ||
@@ -55,6 +57,7 @@ open: boolean; | ||
anchor?: AnchorPropsWithSelection; | ||
portal?: boolean; | ||
modal?: boolean; | ||
} & PropsForFeatures<typeof OptionsRenderFeatures>>; | ||
declare function OptionsFn<TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG>(props: ListboxOptionsProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
declare let DEFAULT_OPTION_TAG: "li"; | ||
declare let DEFAULT_OPTION_TAG: "div"; | ||
type OptionRenderPropArg = { | ||
@@ -109,8 +112,13 @@ /** @deprecated use `focus` instead */ | ||
export declare let Listbox: _internal_ComponentListbox & { | ||
/** @deprecated use `<ListboxButton>` instead of `<Listbox.Button>` */ | ||
Button: _internal_ComponentListboxButton; | ||
/** @deprecated use `<Label>` instead of `<Listbox.Label>` */ | ||
Label: _internal_ComponentListboxLabel; | ||
/** @deprecated use `<ListboxOptions>` instead of `<Listbox.Options>` */ | ||
Options: _internal_ComponentListboxOptions; | ||
/** @deprecated use `<ListboxOption>` instead of `<Listbox.Option>` */ | ||
Option: _internal_ComponentListboxOption; | ||
/** @deprecated use `<ListboxSelectedOption>` instead of `<Listbox.SelectedOption>` */ | ||
SelectedOption: _internal_ComponentListboxSelectedOption; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as Se}from"@react-aria/focus";import{useHover as Re}from"@react-aria/interactions";import D,{Fragment as Z,createContext as ee,createRef as Pe,useCallback as pe,useContext as te,useEffect as ue,useMemo as N,useReducer as Ae,useRef as V,useState as Ee}from"react";import{useActivePress as he}from'../../hooks/use-active-press.js';import{useByComparator as De}from'../../hooks/use-by-comparator.js';import{useComputed as Ie}from'../../hooks/use-computed.js';import{useControllable as _e}from'../../hooks/use-controllable.js';import{useDidElementMove as Fe}from'../../hooks/use-did-element-move.js';import{useDisposables as X}from'../../hooks/use-disposables.js';import{useElementSize as Ce}from'../../hooks/use-element-size.js';import{useEvent as O}from'../../hooks/use-event.js';import{useId as oe}from'../../hooks/use-id.js';import{useIsoMorphicEffect as ne}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Me}from'../../hooks/use-latest-value.js';import{useOutsideClick as we}from'../../hooks/use-outside-click.js';import{useResolveButtonType as ke}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as j}from'../../hooks/use-sync-refs.js';import{useTextValue as Be}from'../../hooks/use-text-value.js';import{useTrackedPointer as Ue}from'../../hooks/use-tracked-pointer.js';import{useDisabled as Ne}from'../../internal/disabled.js';import{FloatingProvider as Ge,useFloatingPanel as Ve,useFloatingPanelProps as He,useFloatingReference as je,useFloatingReferenceProps as We}from'../../internal/floating.js';import{FormFields as ze}from'../../internal/form-fields.js';import{useProvidedId as Ke}from'../../internal/id.js';import{Modal as Qe}from'../../internal/modal.js';import{OpenClosedProvider as Xe,State as J,useOpenClosed as Je}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as $e}from'../../utils/bugs.js';import{Focus as y,calculateActiveIndex as ie}from'../../utils/calculate-active-index.js';import{disposables as re}from'../../utils/disposables.js';import{FocusableMode as qe,isFocusableElement as Ye,sortByDomNode as Ze}from'../../utils/focus-management.js';import{match as H}from'../../utils/match.js';import{getOwnerDocument as et}from'../../utils/owner.js';import{RenderFeatures as de,forwardRefWithAs as W,mergeProps as ce,render as z}from'../../utils/render.js';import{useDescribedBy as tt}from'../description/description.js';import{Keys as S}from'../keyboard.js';import{Label as ot,useLabelledBy as nt,useLabels as it}from'../label/label.js';import{Portal as rt}from'../portal/portal.js';var at=(o=>(o[o.Open=0]="Open",o[o.Closed=1]="Closed",o))(at||{}),lt=(o=>(o[o.Single=0]="Single",o[o.Multi=1]="Multi",o))(lt||{}),st=(o=>(o[o.Pointer=0]="Pointer",o[o.Other=1]="Other",o))(st||{}),pt=(t=>(t[t.OpenListbox=0]="OpenListbox",t[t.CloseListbox=1]="CloseListbox",t[t.GoToOption=2]="GoToOption",t[t.Search=3]="Search",t[t.ClearSearch=4]="ClearSearch",t[t.RegisterOption=5]="RegisterOption",t[t.UnregisterOption=6]="UnregisterOption",t))(pt||{});function ae(e,i=o=>o){let o=e.activeOptionIndex!==null?e.options[e.activeOptionIndex]:null,r=Ze(i(e.options.slice()),c=>c.dataRef.current.domRef.current),n=o?r.indexOf(o):null;return n===-1&&(n=null),{options:r,activeOptionIndex:n}}let ut={[1](e){return e.dataRef.current.disabled||e.listboxState===1?e:{...e,activeOptionIndex:null,listboxState:1}},[0](e){if(e.dataRef.current.disabled||e.listboxState===0)return e;let i=e.activeOptionIndex,{isSelected:o}=e.dataRef.current,r=e.options.findIndex(n=>o(n.dataRef.current.value));return r!==-1&&(i=r),{...e,listboxState:0,activeOptionIndex:i}},[2](e,i){var c,s,t,l,d;if(e.dataRef.current.disabled||e.listboxState===1)return e;let o={...e,searchQuery:"",activationTrigger:(c=i.trigger)!=null?c:1};if(i.focus===y.Nothing)return{...o,activeOptionIndex:null};if(i.focus===y.Specific)return{...o,activeOptionIndex:e.options.findIndex(p=>p.id===i.id)};if(i.focus===y.Previous){let p=e.activeOptionIndex;if(p!==null){let m=e.options[p].dataRef.current.domRef,T=ie(i,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:b=>b.id,resolveDisabled:b=>b.dataRef.current.disabled});if(T!==null){let b=e.options[T].dataRef.current.domRef;if(((s=m.current)==null?void 0:s.previousElementSibling)===b.current||((t=b.current)==null?void 0:t.previousElementSibling)===null)return{...o,activeOptionIndex:T}}}}else if(i.focus===y.Next){let p=e.activeOptionIndex;if(p!==null){let m=e.options[p].dataRef.current.domRef,T=ie(i,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:b=>b.id,resolveDisabled:b=>b.dataRef.current.disabled});if(T!==null){let b=e.options[T].dataRef.current.domRef;if(((l=m.current)==null?void 0:l.nextElementSibling)===b.current||((d=b.current)==null?void 0:d.nextElementSibling)===null)return{...o,activeOptionIndex:T}}}}let r=ae(e),n=ie(i,{resolveItems:()=>r.options,resolveActiveIndex:()=>r.activeOptionIndex,resolveId:p=>p.id,resolveDisabled:p=>p.dataRef.current.disabled});return{...o,...r,activeOptionIndex:n}},[3]:(e,i)=>{if(e.dataRef.current.disabled||e.listboxState===1)return e;let r=e.searchQuery!==""?0:1,n=e.searchQuery+i.value.toLowerCase(),s=(e.activeOptionIndex!==null?e.options.slice(e.activeOptionIndex+r).concat(e.options.slice(0,e.activeOptionIndex+r)):e.options).find(l=>{var d;return!l.dataRef.current.disabled&&((d=l.dataRef.current.textValue)==null?void 0:d.startsWith(n))}),t=s?e.options.indexOf(s):-1;return t===-1||t===e.activeOptionIndex?{...e,searchQuery:n}:{...e,searchQuery:n,activeOptionIndex:t,activationTrigger:1}},[4](e){return e.dataRef.current.disabled||e.listboxState===1||e.searchQuery===""?e:{...e,searchQuery:""}},[5]:(e,i)=>{let o={id:i.id,dataRef:i.dataRef},r=ae(e,n=>[...n,o]);return e.activeOptionIndex===null&&e.dataRef.current.isSelected(i.dataRef.current.value)&&(r.activeOptionIndex=r.options.indexOf(o)),{...e,...r}},[6]:(e,i)=>{let o=ae(e,r=>{let n=r.findIndex(c=>c.id===i.id);return n!==-1&&r.splice(n,1),r});return{...e,...o,activationTrigger:1}}},le=ee(null);le.displayName="ListboxActionsContext";function $(e){let i=te(le);if(i===null){let o=new Error(`<${e} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,$),o}return i}let q=ee(null);q.displayName="ListboxDataContext";function K(e){let i=te(q);if(i===null){let o=new Error(`<${e} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,K),o}return i}function dt(e,i){return H(i.type,ut,e,i)}let ct=Z;function ft(e,i){var se;let o=Ne(),{value:r,defaultValue:n,form:c,name:s,onChange:t,by:l,invalid:d=!1,disabled:p=o||!1,horizontal:m=!1,multiple:T=!1,...b}=e;const C=m?"horizontal":"vertical";let k=j(i),[R=T?[]:void 0,P]=_e(r,t,n),[h,v]=Ae(dt,{dataRef:Pe(),listboxState:1,options:[],searchQuery:"",activeOptionIndex:null,activationTrigger:1,optionsVisible:!1}),I=V({static:!1,hold:!1}),M=V(null),B=V(null),w=V(new Map),f=De(l),E=pe(x=>H(u.mode,{[1]:()=>R.some(L=>f(L,x)),[0]:()=>f(R,x)}),[R]),u=N(()=>({...h,value:R,disabled:p,invalid:d,mode:T?1:0,orientation:C,compare:f,isSelected:E,optionsPropsRef:I,buttonRef:M,optionsRef:B,listRef:w}),[R,p,d,T,h,w]);ne(()=>{h.dataRef.current=u},[u]),we([u.buttonRef,u.optionsRef],(x,L)=>{var _;v({type:1}),Ye(L,qe.Loose)||(x.preventDefault(),(_=u.buttonRef.current)==null||_.focus())},u.listboxState===0);let U=N(()=>({open:u.listboxState===0,disabled:p,invalid:d,value:R}),[u,p,R,d]),g=O(x=>{let L=u.options.find(_=>_.id===x);L&&Y(L.dataRef.current.value)}),G=O(()=>{if(u.activeOptionIndex!==null){let{dataRef:x,id:L}=u.options[u.activeOptionIndex];Y(x.current.value),v({type:2,focus:y.Specific,id:L})}}),Q=O(()=>v({type:0})),a=O(()=>v({type:1})),A=X(),F=O((x,L,_)=>{A.dispose(),A.microTask(()=>x===y.Specific?v({type:2,focus:y.Specific,id:L,trigger:_}):v({type:2,focus:x,trigger:_}))}),be=O((x,L)=>(v({type:5,id:x,dataRef:L}),()=>v({type:6,id:x}))),Y=O(x=>H(u.mode,{[0](){return P==null?void 0:P(x)},[1](){let L=u.value.slice(),_=L.findIndex(Le=>f(Le,x));return _===-1?L.push(x):L.splice(_,1),P==null?void 0:P(L)}})),Te=O(x=>v({type:3,value:x})),xe=O(()=>v({type:4})),me=N(()=>({onChange:Y,registerOption:be,goToOption:F,closeListbox:a,openListbox:Q,selectActiveOption:G,selectOption:g,search:Te,clearSearch:xe}),[]),[Oe,ye]=it({inherit:!0}),ve={ref:k},ge=pe(()=>P==null?void 0:P(n),[P]);return D.createElement(ye,{value:Oe,props:{htmlFor:(se=u.buttonRef.current)==null?void 0:se.id},slot:{open:u.listboxState===0,disabled:p}},D.createElement(Ge,null,D.createElement(le.Provider,{value:me},D.createElement(q.Provider,{value:u},D.createElement(Xe,{value:H(u.listboxState,{[0]:J.Open,[1]:J.Closed})},s!=null&&R!=null&&D.createElement(ze,{data:{[s]:R},form:c,onReset:ge}),z({ourProps:ve,theirProps:b,slot:U,defaultTag:ct,name:"Listbox"}))))))}let bt="button";function Tt(e,i){var f,E,u,U;let o=oe(),r=Ke(),{id:n=r||`headlessui-listbox-button-${o}`,...c}=e,s=K("Listbox.Button"),t=$("Listbox.Button"),l=j(s.buttonRef,i,je()),d=We(),p=X(),m=O(g=>{switch(g.key){case S.Space:case S.Enter:case S.ArrowDown:g.preventDefault(),t.openListbox(),p.nextFrame(()=>{s.value||t.goToOption(y.First)});break;case S.ArrowUp:g.preventDefault(),t.openListbox(),p.nextFrame(()=>{s.value||t.goToOption(y.Last)});break}}),T=O(g=>{switch(g.key){case S.Space:g.preventDefault();break}}),b=O(g=>{if($e(g.currentTarget))return g.preventDefault();s.listboxState===0?(t.closeListbox(),p.nextFrame(()=>{var G;return(G=s.buttonRef.current)==null?void 0:G.focus({preventScroll:!0})})):(g.preventDefault(),t.openListbox())}),C=nt([n]),k=tt(),{isFocusVisible:R,focusProps:P}=Se({autoFocus:(f=e.autoFocus)!=null?f:!1}),{isHovered:h,hoverProps:v}=Re({isDisabled:(E=s.disabled)!=null?E:!1}),{pressed:I,pressProps:M}=he({disabled:(u=s.disabled)!=null?u:!1}),B=N(()=>{var g;return{open:s.listboxState===0,active:I||s.listboxState===0,disabled:s.disabled,invalid:s.invalid,value:s.value,hover:h,focus:R,autofocus:(g=e.autoFocus)!=null?g:!1}},[s.listboxState,s.disabled,s.value,h,R,I,s.invalid,e.autoFocus]),w=ce(d(),{ref:l,id:n,type:ke(e,s.buttonRef),"aria-haspopup":"listbox","aria-controls":(U=s.optionsRef.current)==null?void 0:U.id,"aria-expanded":s.listboxState===0,"aria-labelledby":C,"aria-describedby":k,disabled:s.disabled,onKeyDown:m,onKeyUp:T,onClick:b},P,v,M);return z({ourProps:w,theirProps:c,slot:B,defaultTag:bt,name:"Listbox.Button"})}let fe=ee(!1),xt="ul",mt=de.RenderStrategy|de.Static;function Ot(e,i){var Q;let o=oe(),{id:r=`headlessui-listbox-options-${o}`,anchor:n,modal:c,...s}=e;n!=null&&c==null?c=!0:c==null&&(c=!1);let t=K("Listbox.Options"),l=$("Listbox.Options"),d=Je(),p=(()=>d!==null?(d&J.Open)===J.Open:t.listboxState===0)(),m=V(null);ue(()=>{var A;if(!((A=n==null?void 0:n.to)!=null&&A.includes("selection")))return;if(!p){m.current=null;return}let a=Array.from(t.listRef.current.values());m.current=a.findIndex(F=>(F==null?void 0:F.dataset.selected)===""),m.current===-1&&(m.current=a.findIndex(F=>(F==null?void 0:F.dataset.disabled)===void 0),l.goToOption(y.First))},[p,t.listRef]);let b=Fe(t.buttonRef,t.listboxState!==0)?!1:p,C=(()=>{if(n==null)return;if(t.listRef.current.size<=0)return{...n,inner:void 0};let a=Array.from(t.listRef.current.values());return{...n,inner:{listRef:{current:a},index:m.current}}})(),[k,R]=Ve(C),P=He(),h=j(t.optionsRef,i,n?k:null),v=X(),I=X();ue(()=>{var A;let a=t.optionsRef.current;a&&t.listboxState===0&&a!==((A=et(a))==null?void 0:A.activeElement)&&(a==null||a.focus({preventScroll:!0}))},[t.listboxState,t.optionsRef]);let M=O(a=>{switch(I.dispose(),a.key){case S.Space:if(t.searchQuery!=="")return a.preventDefault(),a.stopPropagation(),l.search(a.key);case S.Enter:if(a.preventDefault(),a.stopPropagation(),t.activeOptionIndex!==null){let{dataRef:A}=t.options[t.activeOptionIndex];l.onChange(A.current.value)}t.mode===0&&(l.closeListbox(),re().nextFrame(()=>{var A;return(A=t.buttonRef.current)==null?void 0:A.focus({preventScroll:!0})}));break;case H(t.orientation,{vertical:S.ArrowDown,horizontal:S.ArrowRight}):return a.preventDefault(),a.stopPropagation(),l.goToOption(y.Next);case H(t.orientation,{vertical:S.ArrowUp,horizontal:S.ArrowLeft}):return a.preventDefault(),a.stopPropagation(),l.goToOption(y.Previous);case S.Home:case S.PageUp:return a.preventDefault(),a.stopPropagation(),l.goToOption(y.First);case S.End:case S.PageDown:return a.preventDefault(),a.stopPropagation(),l.goToOption(y.Last);case S.Escape:return a.preventDefault(),a.stopPropagation(),l.closeListbox(),v.nextFrame(()=>{var A;return(A=t.buttonRef.current)==null?void 0:A.focus({preventScroll:!0})});case S.Tab:a.preventDefault(),a.stopPropagation();break;default:a.key.length===1&&(l.search(a.key),I.setTimeout(()=>l.clearSearch(),350));break}}),B=Ie(()=>{var a;return(a=t.buttonRef.current)==null?void 0:a.id},[t.buttonRef.current]),w=N(()=>({open:t.listboxState===0}),[t]),f=ce(n?P():{},{id:r,ref:h,"aria-activedescendant":t.activeOptionIndex===null||(Q=t.options[t.activeOptionIndex])==null?void 0:Q.id,"aria-multiselectable":t.mode===1?!0:void 0,"aria-labelledby":B,"aria-orientation":t.orientation,onKeyDown:M,role:"listbox",tabIndex:0,style:{...R,"--button-width":Ce(t.buttonRef,!0).width}}),E=c?Qe:n?rt:Z,u=c?{enabled:t.listboxState===0}:{},[U,g]=Ee(t.value);t.value!==U&&t.listboxState===0&&t.mode!==1&&g(t.value);let G=O(a=>t.compare(U,a));return D.createElement(E,{...u},D.createElement(q.Provider,{value:t.mode===1?t:{...t,isSelected:G}},z({ourProps:f,theirProps:s,slot:w,defaultTag:xt,features:mt,visible:b,name:"Listbox.Options"})))}let yt="li";function vt(e,i){let o=oe(),{id:r=`headlessui-listbox-option-${o}`,disabled:n=!1,value:c,...s}=e,t=te(fe)===!0,l=K("Listbox.Option"),d=$("Listbox.Option"),p=l.activeOptionIndex!==null?l.options[l.activeOptionIndex].id===r:!1,m=l.isSelected(c),T=V(null),b=Be(T),C=Me({disabled:n,value:c,domRef:T,get textValue(){return b()}}),k=j(i,T,f=>{f?l.listRef.current.set(r,f):l.listRef.current.delete(r)});ne(()=>{if(l.listboxState!==0||!p||l.activationTrigger===0)return;let f=re();return f.requestAnimationFrame(()=>{var E,u;(u=(E=T.current)==null?void 0:E.scrollIntoView)==null||u.call(E,{block:"nearest"})}),f.dispose},[T,p,l.listboxState,l.activationTrigger,l.activeOptionIndex]),ne(()=>{if(!t)return d.registerOption(r,C)},[C,r,t]);let R=O(f=>{if(n)return f.preventDefault();d.onChange(c),l.mode===0&&(d.closeListbox(),re().nextFrame(()=>{var E;return(E=l.buttonRef.current)==null?void 0:E.focus({preventScroll:!0})}))}),P=O(()=>{if(n)return d.goToOption(y.Nothing);d.goToOption(y.Specific,r)}),h=Ue(),v=O(f=>{h.update(f),!n&&(p||d.goToOption(y.Specific,r,0))}),I=O(f=>{h.wasMoved(f)&&(n||p||d.goToOption(y.Specific,r,0))}),M=O(f=>{h.wasMoved(f)&&(n||p&&d.goToOption(y.Nothing))}),B=N(()=>({active:p,focus:p,selected:m,disabled:n,selectedOption:m&&t}),[p,m,n,t]),w=t?{}:{id:r,ref:k,role:"option",tabIndex:n===!0?void 0:-1,"aria-disabled":n===!0?!0:void 0,"aria-selected":m,disabled:void 0,onClick:R,onFocus:P,onPointerEnter:v,onMouseEnter:v,onPointerMove:I,onMouseMove:I,onPointerLeave:M,onMouseLeave:M};return!m&&t?null:z({ourProps:w,theirProps:s,slot:B,defaultTag:yt,name:"Listbox.Option"})}let gt=Z;function Lt(e,i){let{options:o,placeholder:r,...n}=e,s={ref:j(i)},t=K("ListboxSelectedOption"),l=N(()=>({}),[]),d=t.value===void 0||t.value===null||t.mode===1&&Array.isArray(t.value)&&t.value.length===0;return D.createElement(fe.Provider,{value:!0},z({ourProps:s,theirProps:{...n,children:D.createElement(D.Fragment,null,r&&d?r:o)},slot:l,defaultTag:gt,name:"ListboxSelectedOption"}))}let St=W(ft),Rt=W(Tt),Pt=ot,At=W(Ot),Et=W(vt),uo=W(Lt),co=Object.assign(St,{Button:Rt,Label:Pt,Options:At,Option:Et});export{co as Listbox,Rt as ListboxButton,Pt as ListboxLabel,Et as ListboxOption,At as ListboxOptions,uo as ListboxSelectedOption}; | ||
"use client";import{useFocusRing as Ae}from"@react-aria/focus";import{useHover as Ee}from"@react-aria/interactions";import I,{Fragment as de,createContext as ne,createRef as he,useCallback as ce,useContext as ie,useEffect as fe,useMemo as N,useReducer as De,useRef as G,useState as _e}from"react";import{flushSync as V}from"react-dom";import{useActivePress as Ie}from'../../hooks/use-active-press.js';import{useByComparator as Ce}from'../../hooks/use-by-comparator.js';import{useComputed as Fe}from'../../hooks/use-computed.js';import{useControllable as Me}from'../../hooks/use-controllable.js';import{useDefaultValue as we}from'../../hooks/use-default-value.js';import{useDidElementMove as Be}from'../../hooks/use-did-element-move.js';import{useDisposables as be}from'../../hooks/use-disposables.js';import{useElementSize as ke}from'../../hooks/use-element-size.js';import{useEvent as b}from'../../hooks/use-event.js';import{useId as re}from'../../hooks/use-id.js';import{useInertOthers as Ue}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as le}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Ne}from'../../hooks/use-latest-value.js';import{useOnDisappear as Ge}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Ve}from'../../hooks/use-outside-click.js';import{useOwnerDocument as He}from'../../hooks/use-owner.js';import{useResolveButtonType as Ke}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as je}from'../../hooks/use-scroll-lock.js';import{useSyncRefs as K}from'../../hooks/use-sync-refs.js';import{useTextValue as ze}from'../../hooks/use-text-value.js';import{useTrackedPointer as We}from'../../hooks/use-tracked-pointer.js';import{useDisabled as Qe}from'../../internal/disabled.js';import{FloatingProvider as Xe,useFloatingPanel as Je,useFloatingPanelProps as $e,useFloatingReference as qe,useFloatingReferenceProps as Ye,useResolvedAnchor as Ze}from'../../internal/floating.js';import{FormFields as et}from'../../internal/form-fields.js';import{useProvidedId as tt}from'../../internal/id.js';import{OpenClosedProvider as ot,State as J,useOpenClosed as nt}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as it}from'../../utils/bugs.js';import{Focus as m,calculateActiveIndex as ae}from'../../utils/calculate-active-index.js';import{disposables as rt}from'../../utils/disposables.js';import{FocusableMode as lt,isFocusableElement as at,sortByDomNode as st}from'../../utils/focus-management.js';import{attemptSubmit as pt}from'../../utils/form.js';import{match as H}from'../../utils/match.js';import{getOwnerDocument as ut}from'../../utils/owner.js';import{RenderFeatures as Te,forwardRefWithAs as j,mergeProps as xe,render as z}from'../../utils/render.js';import{useDescribedBy as dt}from'../description/description.js';import{Keys as R}from'../keyboard.js';import{Label as ct,useLabelledBy as ft,useLabels as bt}from'../label/label.js';import{Portal as Tt}from'../portal/portal.js';var xt=(o=>(o[o.Open=0]="Open",o[o.Closed=1]="Closed",o))(xt||{}),mt=(o=>(o[o.Single=0]="Single",o[o.Multi=1]="Multi",o))(mt||{}),Ot=(o=>(o[o.Pointer=0]="Pointer",o[o.Other=1]="Other",o))(Ot||{}),yt=(n=>(n[n.OpenListbox=0]="OpenListbox",n[n.CloseListbox=1]="CloseListbox",n[n.GoToOption=2]="GoToOption",n[n.Search=3]="Search",n[n.ClearSearch=4]="ClearSearch",n[n.RegisterOption=5]="RegisterOption",n[n.UnregisterOption=6]="UnregisterOption",n))(yt||{});function se(e,l=o=>o){let o=e.activeOptionIndex!==null?e.options[e.activeOptionIndex]:null,i=st(l(e.options.slice()),x=>x.dataRef.current.domRef.current),p=o?i.indexOf(o):null;return p===-1&&(p=null),{options:i,activeOptionIndex:p}}let vt={[1](e){return e.dataRef.current.disabled||e.listboxState===1?e:{...e,activeOptionIndex:null,listboxState:1,__demoMode:!1}},[0](e){if(e.dataRef.current.disabled||e.listboxState===0)return e;let l=e.activeOptionIndex,{isSelected:o}=e.dataRef.current,i=e.options.findIndex(p=>o(p.dataRef.current.value));return i!==-1&&(l=i),{...e,listboxState:0,activeOptionIndex:l,__demoMode:!1}},[2](e,l){var x,O,n,a,t;if(e.dataRef.current.disabled||e.listboxState===1)return e;let o={...e,searchQuery:"",activationTrigger:(x=l.trigger)!=null?x:1,__demoMode:!1};if(l.focus===m.Nothing)return{...o,activeOptionIndex:null};if(l.focus===m.Specific)return{...o,activeOptionIndex:e.options.findIndex(r=>r.id===l.id)};if(l.focus===m.Previous){let r=e.activeOptionIndex;if(r!==null){let P=e.options[r].dataRef.current.domRef,c=ae(l,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});if(c!==null){let u=e.options[c].dataRef.current.domRef;if(((O=P.current)==null?void 0:O.previousElementSibling)===u.current||((n=u.current)==null?void 0:n.previousElementSibling)===null)return{...o,activeOptionIndex:c}}}}else if(l.focus===m.Next){let r=e.activeOptionIndex;if(r!==null){let P=e.options[r].dataRef.current.domRef,c=ae(l,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});if(c!==null){let u=e.options[c].dataRef.current.domRef;if(((a=P.current)==null?void 0:a.nextElementSibling)===u.current||((t=u.current)==null?void 0:t.nextElementSibling)===null)return{...o,activeOptionIndex:c}}}}let i=se(e),p=ae(l,{resolveItems:()=>i.options,resolveActiveIndex:()=>i.activeOptionIndex,resolveId:r=>r.id,resolveDisabled:r=>r.dataRef.current.disabled});return{...o,...i,activeOptionIndex:p}},[3]:(e,l)=>{if(e.dataRef.current.disabled||e.listboxState===1)return e;let i=e.searchQuery!==""?0:1,p=e.searchQuery+l.value.toLowerCase(),O=(e.activeOptionIndex!==null?e.options.slice(e.activeOptionIndex+i).concat(e.options.slice(0,e.activeOptionIndex+i)):e.options).find(a=>{var t;return!a.dataRef.current.disabled&&((t=a.dataRef.current.textValue)==null?void 0:t.startsWith(p))}),n=O?e.options.indexOf(O):-1;return n===-1||n===e.activeOptionIndex?{...e,searchQuery:p}:{...e,searchQuery:p,activeOptionIndex:n,activationTrigger:1}},[4](e){return e.dataRef.current.disabled||e.listboxState===1||e.searchQuery===""?e:{...e,searchQuery:""}},[5]:(e,l)=>{let o={id:l.id,dataRef:l.dataRef},i=se(e,p=>[...p,o]);return e.activeOptionIndex===null&&e.dataRef.current.isSelected(l.dataRef.current.value)&&(i.activeOptionIndex=i.options.indexOf(o)),{...e,...i}},[6]:(e,l)=>{let o=se(e,i=>{let p=i.findIndex(x=>x.id===l.id);return p!==-1&&i.splice(p,1),i});return{...e,...o,activationTrigger:1}}},pe=ne(null);pe.displayName="ListboxActionsContext";function $(e){let l=ie(pe);if(l===null){let o=new Error(`<${e} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,$),o}return l}let q=ne(null);q.displayName="ListboxDataContext";function W(e){let l=ie(q);if(l===null){let o=new Error(`<${e} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,W),o}return l}function gt(e,l){return H(l.type,vt,e,l)}let Lt=de;function St(e,l){var ue;let o=Qe(),{value:i,defaultValue:p,form:x,name:O,onChange:n,by:a,invalid:t=!1,disabled:r=o||!1,horizontal:P=!1,multiple:c=!1,__demoMode:u=!1,...w}=e;const k=P?"horizontal":"vertical";let h=K(l),C=we(p),[y=c?[]:void 0,v]=Me(i,n,C),[D,g]=De(gt,{dataRef:he(),listboxState:u?0:1,options:[],searchQuery:"",activeOptionIndex:null,activationTrigger:1,optionsVisible:!1,__demoMode:u}),B=G({static:!1,hold:!1}),U=G(null),f=G(null),A=G(new Map),M=Ce(a),L=ce(T=>H(d.mode,{[1]:()=>y.some(S=>M(S,T)),[0]:()=>M(y,T)}),[y]),d=N(()=>({...D,value:y,disabled:r,invalid:t,mode:c?1:0,orientation:k,compare:M,isSelected:L,optionsPropsRef:B,buttonRef:U,optionsRef:f,listRef:A}),[y,r,t,c,D,A]);le(()=>{D.dataRef.current=d},[d]);let Y=d.listboxState===0;Ve(Y,[d.buttonRef,d.optionsRef],(T,S)=>{var F;g({type:1}),at(S,lt.Loose)||(T.preventDefault(),(F=d.buttonRef.current)==null||F.focus())});let Q=N(()=>({open:d.listboxState===0,disabled:r,invalid:t,value:y}),[d,r,y,t]),Z=b(T=>{let S=d.options.find(F=>F.id===T);S&&oe(S.dataRef.current.value)}),ee=b(()=>{if(d.activeOptionIndex!==null){let{dataRef:T,id:S}=d.options[d.activeOptionIndex];oe(T.current.value),g({type:2,focus:m.Specific,id:S})}}),X=b(()=>g({type:0})),s=b(()=>g({type:1})),_=be(),E=b((T,S,F)=>{_.dispose(),_.microTask(()=>T===m.Specific?g({type:2,focus:m.Specific,id:S,trigger:F}):g({type:2,focus:T,trigger:F}))}),te=b((T,S)=>(g({type:5,id:T,dataRef:S}),()=>g({type:6,id:T}))),oe=b(T=>H(d.mode,{[0](){return v==null?void 0:v(T)},[1](){let S=d.value.slice(),F=S.findIndex(Pe=>M(Pe,T));return F===-1?S.push(T):S.splice(F,1),v==null?void 0:v(S)}})),Oe=b(T=>g({type:3,value:T})),ye=b(()=>g({type:4})),ve=N(()=>({onChange:oe,registerOption:te,goToOption:E,closeListbox:s,openListbox:X,selectActiveOption:ee,selectOption:Z,search:Oe,clearSearch:ye}),[]),[ge,Le]=bt({inherit:!0}),Se={ref:h},Re=ce(()=>{if(C!==void 0)return v==null?void 0:v(C)},[v,C]);return I.createElement(Le,{value:ge,props:{htmlFor:(ue=d.buttonRef.current)==null?void 0:ue.id},slot:{open:d.listboxState===0,disabled:r}},I.createElement(Xe,null,I.createElement(pe.Provider,{value:ve},I.createElement(q.Provider,{value:d},I.createElement(ot,{value:H(d.listboxState,{[0]:J.Open,[1]:J.Closed})},O!=null&&y!=null&&I.createElement(et,{disabled:r,data:{[O]:y},form:x,onReset:Re}),z({ourProps:Se,theirProps:w,slot:Q,defaultTag:Lt,name:"Listbox"}))))))}let Rt="button";function Pt(e,l){var M;let o=W("Listbox.Button"),i=$("Listbox.Button"),p=re(),x=tt(),{id:O=x||`headlessui-listbox-button-${p}`,disabled:n=o.disabled||!1,autoFocus:a=!1,...t}=e,r=K(o.buttonRef,l,qe()),P=Ye(),c=b(L=>{switch(L.key){case R.Enter:pt(L.currentTarget);break;case R.Space:case R.ArrowDown:L.preventDefault(),V(()=>i.openListbox()),o.value||i.goToOption(m.First);break;case R.ArrowUp:L.preventDefault(),V(()=>i.openListbox()),o.value||i.goToOption(m.Last);break}}),u=b(L=>{switch(L.key){case R.Space:L.preventDefault();break}}),w=b(L=>{var d;if(it(L.currentTarget))return L.preventDefault();o.listboxState===0?(V(()=>i.closeListbox()),(d=o.buttonRef.current)==null||d.focus({preventScroll:!0})):(L.preventDefault(),i.openListbox())}),k=b(L=>L.preventDefault()),h=ft([O]),C=dt(),{isFocusVisible:y,focusProps:v}=Ae({autoFocus:a}),{isHovered:D,hoverProps:g}=Ee({isDisabled:n}),{pressed:B,pressProps:U}=Ie({disabled:n}),f=N(()=>({open:o.listboxState===0,active:B||o.listboxState===0,disabled:n,invalid:o.invalid,value:o.value,hover:D,focus:y,autofocus:a}),[o.listboxState,o.value,n,D,y,B,o.invalid,a]),A=xe(P(),{ref:r,id:O,type:Ke(e,o.buttonRef),"aria-haspopup":"listbox","aria-controls":(M=o.optionsRef.current)==null?void 0:M.id,"aria-expanded":o.listboxState===0,"aria-labelledby":h,"aria-describedby":C,disabled:n||void 0,autoFocus:a,onKeyDown:c,onKeyUp:u,onKeyPress:k,onClick:w},v,g,U);return z({ourProps:A,theirProps:t,slot:f,defaultTag:Rt,name:"Listbox.Button"})}let me=ne(!1),At="div",Et=Te.RenderStrategy|Te.Static;function ht(e,l){var X;let o=re(),{id:i=`headlessui-listbox-options-${o}`,anchor:p,portal:x=!1,modal:O=!0,...n}=e,a=Ze(p);a&&(x=!0);let t=W("Listbox.Options"),r=$("Listbox.Options"),P=He(t.optionsRef),c=nt(),u=(()=>c!==null?(c&J.Open)===J.Open:t.listboxState===0)();Ge(u,t.buttonRef,r.closeListbox);let w=t.__demoMode?!1:O&&t.listboxState===0;je(w,P);let k=t.__demoMode?!1:O&&t.listboxState===0;Ue(k,{allowed:b(()=>[t.buttonRef.current,t.optionsRef.current])});let h=G(null);fe(()=>{var _;if(!((_=a==null?void 0:a.to)!=null&&_.includes("selection")))return;if(!u){h.current=null;return}let s=Array.from(t.listRef.current.values());h.current=s.findIndex(E=>(E==null?void 0:E.dataset.selected)===""),h.current===-1&&(h.current=s.findIndex(E=>(E==null?void 0:E.dataset.disabled)===void 0),r.goToOption(m.First))},[u,t.listRef]);let C=t.listboxState!==0,v=Be(C,t.buttonRef)?!1:u,D=(()=>{if(a==null)return;if(t.listRef.current.size<=0)return{...a,inner:void 0};let s=Array.from(t.listRef.current.values());return{...a,inner:{listRef:{current:s},index:h.current}}})(),[g,B]=Je(D),U=$e(),f=K(t.optionsRef,l,a?g:null),A=be();fe(()=>{var _;let s=t.optionsRef.current;s&&t.listboxState===0&&s!==((_=ut(s))==null?void 0:_.activeElement)&&(s==null||s.focus({preventScroll:!0}))},[t.listboxState,t.optionsRef,t.optionsRef.current]);let M=b(s=>{var _,E;switch(A.dispose(),s.key){case R.Space:if(t.searchQuery!=="")return s.preventDefault(),s.stopPropagation(),r.search(s.key);case R.Enter:if(s.preventDefault(),s.stopPropagation(),t.activeOptionIndex!==null){let{dataRef:te}=t.options[t.activeOptionIndex];r.onChange(te.current.value)}t.mode===0&&(V(()=>r.closeListbox()),(_=t.buttonRef.current)==null||_.focus({preventScroll:!0}));break;case H(t.orientation,{vertical:R.ArrowDown,horizontal:R.ArrowRight}):return s.preventDefault(),s.stopPropagation(),r.goToOption(m.Next);case H(t.orientation,{vertical:R.ArrowUp,horizontal:R.ArrowLeft}):return s.preventDefault(),s.stopPropagation(),r.goToOption(m.Previous);case R.Home:case R.PageUp:return s.preventDefault(),s.stopPropagation(),r.goToOption(m.First);case R.End:case R.PageDown:return s.preventDefault(),s.stopPropagation(),r.goToOption(m.Last);case R.Escape:s.preventDefault(),s.stopPropagation(),V(()=>r.closeListbox()),(E=t.buttonRef.current)==null||E.focus({preventScroll:!0});return;case R.Tab:s.preventDefault(),s.stopPropagation();break;default:s.key.length===1&&(r.search(s.key),A.setTimeout(()=>r.clearSearch(),350));break}}),L=Fe(()=>{var s;return(s=t.buttonRef.current)==null?void 0:s.id},[t.buttonRef.current]),d=N(()=>({open:t.listboxState===0}),[t]),Y=xe(a?U():{},{id:i,ref:f,"aria-activedescendant":t.activeOptionIndex===null||(X=t.options[t.activeOptionIndex])==null?void 0:X.id,"aria-multiselectable":t.mode===1?!0:void 0,"aria-labelledby":L,"aria-orientation":t.orientation,onKeyDown:M,role:"listbox",tabIndex:0,style:{...n.style,...B,"--button-width":ke(t.buttonRef,!0).width}}),[Q,Z]=_e(t.value);t.value!==Q&&t.listboxState===0&&t.mode!==1&&Z(t.value);let ee=b(s=>t.compare(Q,s));return I.createElement(Tt,{enabled:x?e.static||u:!1},I.createElement(q.Provider,{value:t.mode===1?t:{...t,isSelected:ee}},z({ourProps:Y,theirProps:n,slot:d,defaultTag:At,features:Et,visible:v,name:"Listbox.Options"})))}let Dt="div";function _t(e,l){let o=re(),{id:i=`headlessui-listbox-option-${o}`,disabled:p=!1,value:x,...O}=e,n=ie(me)===!0,a=W("Listbox.Option"),t=$("Listbox.Option"),r=a.activeOptionIndex!==null?a.options[a.activeOptionIndex].id===i:!1,P=a.isSelected(x),c=G(null),u=ze(c),w=Ne({disabled:p,value:x,domRef:c,get textValue(){return u()}}),k=K(l,c,f=>{f?a.listRef.current.set(i,f):a.listRef.current.delete(i)});le(()=>{if(!a.__demoMode&&a.listboxState===0&&r&&a.activationTrigger!==0)return rt().requestAnimationFrame(()=>{var f,A;(A=(f=c.current)==null?void 0:f.scrollIntoView)==null||A.call(f,{block:"nearest"})})},[c,r,a.__demoMode,a.listboxState,a.activationTrigger,a.activeOptionIndex]),le(()=>{if(!n)return t.registerOption(i,w)},[w,i,n]);let h=b(f=>{var A;if(p)return f.preventDefault();t.onChange(x),a.mode===0&&(V(()=>t.closeListbox()),(A=a.buttonRef.current)==null||A.focus({preventScroll:!0}))}),C=b(()=>{if(p)return t.goToOption(m.Nothing);t.goToOption(m.Specific,i)}),y=We(),v=b(f=>{y.update(f),!p&&(r||t.goToOption(m.Specific,i,0))}),D=b(f=>{y.wasMoved(f)&&(p||r||t.goToOption(m.Specific,i,0))}),g=b(f=>{y.wasMoved(f)&&(p||r&&t.goToOption(m.Nothing))}),B=N(()=>({active:r,focus:r,selected:P,disabled:p,selectedOption:P&&n}),[r,P,p,n]),U=n?{}:{id:i,ref:k,role:"option",tabIndex:p===!0?void 0:-1,"aria-disabled":p===!0?!0:void 0,"aria-selected":P,disabled:void 0,onClick:h,onFocus:C,onPointerEnter:v,onMouseEnter:v,onPointerMove:D,onMouseMove:D,onPointerLeave:g,onMouseLeave:g};return!P&&n?null:z({ourProps:U,theirProps:O,slot:B,defaultTag:Dt,name:"Listbox.Option"})}let It=de;function Ct(e,l){let{options:o,placeholder:i,...p}=e,O={ref:K(l)},n=W("ListboxSelectedOption"),a=N(()=>({}),[]),t=n.value===void 0||n.value===null||n.mode===1&&Array.isArray(n.value)&&n.value.length===0;return I.createElement(me.Provider,{value:!0},z({ourProps:O,theirProps:{...p,children:I.createElement(I.Fragment,null,i&&t?i:o)},slot:a,defaultTag:It,name:"ListboxSelectedOption"}))}let Ft=j(St),Mt=j(Pt),wt=ct,Bt=j(ht),kt=j(_t),Ut=j(Ct),ho=Object.assign(Ft,{Button:Mt,Label:wt,Options:Bt,Option:kt,SelectedOption:Ut});export{ho as Listbox,Mt as ListboxButton,wt as ListboxLabel,kt as ListboxOption,Bt as ListboxOptions,Ut as ListboxSelectedOption}; |
@@ -23,2 +23,3 @@ import React, { type ElementType, type Ref } from 'react'; | ||
focus: boolean; | ||
disabled: boolean; | ||
autofocus: boolean; | ||
@@ -39,2 +40,3 @@ }; | ||
anchor?: AnchorProps; | ||
portal?: boolean; | ||
modal?: boolean; | ||
@@ -44,3 +46,3 @@ static?: boolean; | ||
}>; | ||
declare function ItemsFn<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG>(props: MenuItemsProps<TTag>, ref: Ref<HTMLDivElement>): React.JSX.Element; | ||
declare function ItemsFn<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG>(props: MenuItemsProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
declare let DEFAULT_ITEM_TAG: React.ExoticComponent<{ | ||
@@ -104,9 +106,15 @@ children?: React.ReactNode; | ||
export declare let Menu: _internal_ComponentMenu & { | ||
/** @deprecated use `<MenuButton>` instead of `<Menu.Button>` */ | ||
Button: _internal_ComponentMenuButton; | ||
/** @deprecated use `<MenuItems>` instead of `<Menu.Items>` */ | ||
Items: _internal_ComponentMenuItems; | ||
/** @deprecated use `<MenuItem>` instead of `<Menu.Item>` */ | ||
Item: _internal_ComponentMenuItem; | ||
/** @deprecated use `<MenuSection>` instead of `<Menu.Section>` */ | ||
Section: _internal_ComponentMenuSection; | ||
/** @deprecated use `<MenuHeading>` instead of `<Menu.Heading>` */ | ||
Heading: _internal_ComponentMenuHeading; | ||
/** @deprecated use `<MenuSeparator>` instead of `<Menu.Separator>` */ | ||
Separator: _internal_ComponentMenuSeparator; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as re}from"@react-aria/focus";import{useHover as oe}from"@react-aria/interactions";import b,{Fragment as W,createContext as ae,createRef as X,useContext as ie,useEffect as se,useMemo as U,useReducer as le,useRef as $}from"react";import{useActivePress as ue}from'../../hooks/use-active-press.js';import{useDidElementMove as pe}from'../../hooks/use-did-element-move.js';import{useDisposables as q}from'../../hooks/use-disposables.js';import{useElementSize as de}from'../../hooks/use-element-size.js';import{useEvent as I}from'../../hooks/use-event.js';import{useId as H}from'../../hooks/use-id.js';import{useIsoMorphicEffect as k}from'../../hooks/use-iso-morphic-effect.js';import{useOutsideClick as me}from'../../hooks/use-outside-click.js';import{useOwnerDocument as ce}from'../../hooks/use-owner.js';import{useResolveButtonType as fe}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as N}from'../../hooks/use-sync-refs.js';import{useTextValue as Te}from'../../hooks/use-text-value.js';import{useTrackedPointer as ye}from'../../hooks/use-tracked-pointer.js';import{useTreeWalker as ge}from'../../hooks/use-tree-walker.js';import{FloatingProvider as Ie,useFloatingPanel as Me,useFloatingPanelProps as Pe,useFloatingReference as Ae,useFloatingReferenceProps as Se}from'../../internal/floating.js';import{Modal as be,ModalFeatures as Ee}from'../../internal/modal.js';import{OpenClosedProvider as Re,State as w,useOpenClosed as ve}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as xe}from'../../utils/bugs.js';import{Focus as g,calculateActiveIndex as K}from'../../utils/calculate-active-index.js';import{disposables as j}from'../../utils/disposables.js';import{Focus as z,FocusableMode as _e,focusFrom as De,isFocusableElement as Fe,restoreFocusIfNecessary as Y,sortByDomNode as he}from'../../utils/focus-management.js';import{match as Z}from'../../utils/match.js';import{RenderFeatures as ee,forwardRefWithAs as E,mergeProps as te,render as R}from'../../utils/render.js';import{useDescriptions as Ce}from'../description/description.js';import{Keys as y}from'../keyboard.js';import{useLabelContext as Oe,useLabels as ne}from'../label/label.js';import{Portal as Le}from'../portal/portal.js';var Ge=(n=>(n[n.Open=0]="Open",n[n.Closed=1]="Closed",n))(Ge||{}),Ue=(n=>(n[n.Pointer=0]="Pointer",n[n.Other=1]="Other",n))(Ue||{}),He=(t=>(t[t.OpenMenu=0]="OpenMenu",t[t.CloseMenu=1]="CloseMenu",t[t.GoToItem=2]="GoToItem",t[t.Search=3]="Search",t[t.ClearSearch=4]="ClearSearch",t[t.RegisterItem=5]="RegisterItem",t[t.UnregisterItem=6]="UnregisterItem",t))(He||{});function Q(e,o=n=>n){let n=e.activeItemIndex!==null?e.items[e.activeItemIndex]:null,i=he(o(e.items.slice()),s=>s.dataRef.current.domRef.current),r=n?i.indexOf(n):null;return r===-1&&(r=null),{items:i,activeItemIndex:r}}let ke={[1](e){return e.menuState===1?e:{...e,activeItemIndex:null,menuState:1}},[0](e){return e.menuState===0?e:{...e,__demoMode:!1,menuState:0}},[2]:(e,o)=>{var s,l,t,u,m;if(e.menuState===1)return e;let n={...e,searchQuery:"",activationTrigger:(s=o.trigger)!=null?s:1};if(o.focus===g.Nothing)return{...n,activeItemIndex:null};if(o.focus===g.Specific)return{...n,activeItemIndex:e.items.findIndex(d=>d.id===o.id)};if(o.focus===g.Previous){let d=e.activeItemIndex;if(d!==null){let M=e.items[d].dataRef.current.domRef,f=K(o,{resolveItems:()=>e.items,resolveActiveIndex:()=>e.activeItemIndex,resolveId:p=>p.id,resolveDisabled:p=>p.dataRef.current.disabled});if(f!==null){let p=e.items[f].dataRef.current.domRef;if(((l=M.current)==null?void 0:l.previousElementSibling)===p.current||((t=p.current)==null?void 0:t.previousElementSibling)===null)return{...n,activeItemIndex:f}}}}else if(o.focus===g.Next){let d=e.activeItemIndex;if(d!==null){let M=e.items[d].dataRef.current.domRef,f=K(o,{resolveItems:()=>e.items,resolveActiveIndex:()=>e.activeItemIndex,resolveId:p=>p.id,resolveDisabled:p=>p.dataRef.current.disabled});if(f!==null){let p=e.items[f].dataRef.current.domRef;if(((u=M.current)==null?void 0:u.nextElementSibling)===p.current||((m=p.current)==null?void 0:m.nextElementSibling)===null)return{...n,activeItemIndex:f}}}}let i=Q(e),r=K(o,{resolveItems:()=>i.items,resolveActiveIndex:()=>i.activeItemIndex,resolveId:d=>d.id,resolveDisabled:d=>d.dataRef.current.disabled});return{...n,...i,activeItemIndex:r}},[3]:(e,o)=>{let i=e.searchQuery!==""?0:1,r=e.searchQuery+o.value.toLowerCase(),l=(e.activeItemIndex!==null?e.items.slice(e.activeItemIndex+i).concat(e.items.slice(0,e.activeItemIndex+i)):e.items).find(u=>{var m;return((m=u.dataRef.current.textValue)==null?void 0:m.startsWith(r))&&!u.dataRef.current.disabled}),t=l?e.items.indexOf(l):-1;return t===-1||t===e.activeItemIndex?{...e,searchQuery:r}:{...e,searchQuery:r,activeItemIndex:t,activationTrigger:1}},[4](e){return e.searchQuery===""?e:{...e,searchQuery:"",searchActiveItemIndex:null}},[5]:(e,o)=>{let n=Q(e,i=>[...i,{id:o.id,dataRef:o.dataRef}]);return{...e,...n}},[6]:(e,o)=>{let n=Q(e,i=>{let r=i.findIndex(s=>s.id===o.id);return r!==-1&&i.splice(r,1),i});return{...e,...n,activationTrigger:1}}},J=ae(null);J.displayName="MenuContext";function B(e){let o=ie(J);if(o===null){let n=new Error(`<${e} /> is missing a parent <Menu /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,B),n}return o}function Ne(e,o){return Z(o.type,ke,e,o)}let we=W;function Be(e,o){let{__demoMode:n=!1,...i}=e,r=le(Ne,{__demoMode:n,menuState:n?0:1,buttonRef:X(),itemsRef:X(),items:[],searchQuery:"",activeItemIndex:null,activationTrigger:1}),[{menuState:s,itemsRef:l,buttonRef:t},u]=r,m=N(o);me([t,l],(p,A)=>{var P;u({type:1}),Fe(A,_e.Loose)||(p.preventDefault(),(P=t.current)==null||P.focus())},s===0);let d=I(()=>{u({type:1})}),M=U(()=>({open:s===0,close:d}),[s,d]),f={ref:m};return b.createElement(Ie,null,b.createElement(J.Provider,{value:r},b.createElement(Re,{value:Z(s,{[0]:w.Open,[1]:w.Closed})},R({ourProps:f,theirProps:i,slot:M,defaultTag:we,name:"Menu"}))))}let We="button";function Ke(e,o){var D,F,h,C;let n=H(),{id:i=`headlessui-menu-button-${n}`,...r}=e,[s,l]=B("Menu.Button"),t=Se(),u=N(s.buttonRef,o,Ae()),m=q(),d=I(c=>{switch(c.key){case y.Space:case y.Enter:case y.ArrowDown:c.preventDefault(),c.stopPropagation(),l({type:0}),m.nextFrame(()=>l({type:2,focus:g.First}));break;case y.ArrowUp:c.preventDefault(),c.stopPropagation(),l({type:0}),m.nextFrame(()=>l({type:2,focus:g.Last}));break}}),M=I(c=>{switch(c.key){case y.Space:c.preventDefault();break}}),f=I(c=>{if(xe(c.currentTarget))return c.preventDefault();e.disabled||(s.menuState===0?(l({type:1}),m.nextFrame(()=>{var T;return(T=s.buttonRef.current)==null?void 0:T.focus({preventScroll:!0})})):(c.preventDefault(),l({type:0})))}),{isFocusVisible:p,focusProps:A}=re({autoFocus:(D=e.autoFocus)!=null?D:!1}),{isHovered:P,hoverProps:S}=oe({isDisabled:(F=e.disabled)!=null?F:!1}),{pressed:v,pressProps:x}=ue({disabled:(h=e.disabled)!=null?h:!1}),_=U(()=>{var c;return{open:s.menuState===0,active:v||s.menuState===0,hover:P,focus:p,autofocus:(c=e.autoFocus)!=null?c:!1}},[s,P,p,v,e.autoFocus]),O=te(t(),{ref:u,id:i,type:fe(e,s.buttonRef),"aria-haspopup":"menu","aria-controls":(C=s.itemsRef.current)==null?void 0:C.id,"aria-expanded":s.menuState===0,onKeyDown:d,onKeyUp:M,onClick:f},A,S,x);return R({ourProps:O,theirProps:r,slot:_,defaultTag:We,name:"Menu.Button"})}let je="div",Qe=ee.RenderStrategy|ee.Static;function Je(e,o){var c,T;let n=H(),{id:i=`headlessui-menu-items-${n}`,anchor:r,modal:s,...l}=e,[t,u]=B("Menu.Items"),[m,d]=Me(r),M=Pe(),f=N(t.itemsRef,o,r?m:null),p=ce(t.itemsRef);r!=null&&s==null?s=!0:s==null&&(s=!1);let A=q(),P=ve(),S=(()=>P!==null?(P&w.Open)===w.Open:t.menuState===0)(),x=pe(t.buttonRef,t.menuState!==0)?!1:S;se(()=>{let a=t.itemsRef.current;a&&t.menuState===0&&a!==(p==null?void 0:p.activeElement)&&a.focus({preventScroll:!0})},[t.menuState,t.itemsRef,p]),ge({container:t.itemsRef.current,enabled:t.menuState===0,accept(a){return a.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:a.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(a){a.setAttribute("role","none")}});let _=I(a=>{var L,V;switch(A.dispose(),a.key){case y.Space:if(t.searchQuery!=="")return a.preventDefault(),a.stopPropagation(),u({type:3,value:a.key});case y.Enter:if(a.preventDefault(),a.stopPropagation(),u({type:1}),t.activeItemIndex!==null){let{dataRef:G}=t.items[t.activeItemIndex];(V=(L=G.current)==null?void 0:L.domRef.current)==null||V.click()}Y(t.buttonRef.current);break;case y.ArrowDown:return a.preventDefault(),a.stopPropagation(),u({type:2,focus:g.Next});case y.ArrowUp:return a.preventDefault(),a.stopPropagation(),u({type:2,focus:g.Previous});case y.Home:case y.PageUp:return a.preventDefault(),a.stopPropagation(),u({type:2,focus:g.First});case y.End:case y.PageDown:return a.preventDefault(),a.stopPropagation(),u({type:2,focus:g.Last});case y.Escape:a.preventDefault(),a.stopPropagation(),u({type:1}),j().nextFrame(()=>{var G;return(G=t.buttonRef.current)==null?void 0:G.focus({preventScroll:!0})});break;case y.Tab:a.preventDefault(),a.stopPropagation(),u({type:1}),j().microTask(()=>{De(t.buttonRef.current,a.shiftKey?z.Previous:z.Next)});break;default:a.key.length===1&&(u({type:3,value:a.key}),A.setTimeout(()=>u({type:4}),350));break}}),O=I(a=>{switch(a.key){case y.Space:a.preventDefault();break}}),D=U(()=>({open:t.menuState===0}),[t]),F=te(r?M():{},{"aria-activedescendant":t.activeItemIndex===null||(c=t.items[t.activeItemIndex])==null?void 0:c.id,"aria-labelledby":(T=t.buttonRef.current)==null?void 0:T.id,id:i,onKeyDown:_,onKeyUp:O,role:"menu",tabIndex:0,ref:f,style:{...d,"--button-width":de(t.buttonRef,!0).width}}),h=s?be:r?Le:W,C=s?{features:Ee.ScrollLock,enabled:t.menuState===0}:{};return b.createElement(h,{...C},R({ourProps:F,theirProps:l,slot:D,defaultTag:je,features:Qe,visible:x,name:"Menu.Items"}))}let Ve=W;function Xe(e,o){let n=H(),{id:i=`headlessui-menu-item-${n}`,disabled:r=!1,...s}=e,[l,t]=B("Menu.Item"),u=l.activeItemIndex!==null?l.items[l.activeItemIndex].id===i:!1,m=$(null),d=N(o,m);k(()=>{if(l.__demoMode||l.menuState!==0||!u||l.activationTrigger===0)return;let T=j();return T.requestAnimationFrame(()=>{var a,L;(L=(a=m.current)==null?void 0:a.scrollIntoView)==null||L.call(a,{block:"nearest"})}),T.dispose},[l.__demoMode,m,u,l.menuState,l.activationTrigger,l.activeItemIndex]);let M=Te(m),f=$({disabled:r,domRef:m,get textValue(){return M()}});k(()=>{f.current.disabled=r},[f,r]),k(()=>(t({type:5,id:i,dataRef:f}),()=>t({type:6,id:i})),[f,i]);let p=I(()=>{t({type:1})}),A=I(T=>{if(r)return T.preventDefault();t({type:1}),Y(l.buttonRef.current)}),P=I(()=>{if(r)return t({type:2,focus:g.Nothing});t({type:2,focus:g.Specific,id:i})}),S=ye(),v=I(T=>{S.update(T),!r&&(u||t({type:2,focus:g.Specific,id:i,trigger:0}))}),x=I(T=>{S.wasMoved(T)&&(r||u||t({type:2,focus:g.Specific,id:i,trigger:0}))}),_=I(T=>{S.wasMoved(T)&&(r||u&&t({type:2,focus:g.Nothing}))}),[O,D]=ne(),[F,h]=Ce(),C=U(()=>({active:u,focus:u,disabled:r,close:p}),[u,r,p]);return b.createElement(D,null,b.createElement(h,null,R({ourProps:{id:i,ref:d,role:"menuitem",tabIndex:r===!0?void 0:-1,"aria-disabled":r===!0?!0:void 0,"aria-labelledby":O,"aria-describedby":F,disabled:void 0,onClick:A,onFocus:P,onPointerEnter:v,onMouseEnter:v,onPointerMove:x,onMouseMove:x,onPointerLeave:_,onMouseLeave:_},theirProps:s,slot:C,defaultTag:Ve,name:"Menu.Item"})))}let $e="div";function qe(e,o){let[n,i]=ne();return b.createElement(i,null,R({ourProps:{ref:o,"aria-labelledby":n,role:"group"},theirProps:e,slot:{},defaultTag:$e,name:"Menu.Section"}))}let ze="header";function Ye(e,o){let n=H(),{id:i=`headlessui-menu-heading-${n}`,...r}=e,s=Oe();k(()=>s.register(i),[i,s.register]);let l={id:i,ref:o,role:"presentation",...s.props};return R({ourProps:l,theirProps:r,slot:{},defaultTag:ze,name:"Menu.Heading"})}let Ze="div";function et(e,o){return R({ourProps:{ref:o,role:"separator"},theirProps:e,slot:{},defaultTag:Ze,name:"Menu.Separator"})}let tt=E(Be),nt=E(Ke),rt=E(Je),ot=E(Xe),at=E(qe),it=E(Ye),st=E(et),kt=Object.assign(tt,{Button:nt,Items:rt,Item:ot,Section:at,Heading:it,Separator:st});export{kt as Menu,nt as MenuButton,it as MenuHeading,ot as MenuItem,rt as MenuItems,at as MenuSection,st as MenuSeparator}; | ||
"use client";import{useFocusRing as ie}from"@react-aria/focus";import{useHover as se}from"@react-aria/interactions";import R,{Fragment as q,createContext as le,createRef as z,useContext as ue,useEffect as pe,useMemo as G,useReducer as de,useRef as Y}from"react";import{flushSync as O}from"react-dom";import{useActivePress as me}from'../../hooks/use-active-press.js';import{useDidElementMove as ce}from'../../hooks/use-did-element-move.js';import{useDisposables as fe}from'../../hooks/use-disposables.js';import{useElementSize as Te}from'../../hooks/use-element-size.js';import{useEvent as I}from'../../hooks/use-event.js';import{useId as U}from'../../hooks/use-id.js';import{useInertOthers as ye}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as H}from'../../hooks/use-iso-morphic-effect.js';import{useOnDisappear as ge}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Ie}from'../../hooks/use-outside-click.js';import{useOwnerDocument as Me}from'../../hooks/use-owner.js';import{useResolveButtonType as Ae}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as Pe}from'../../hooks/use-scroll-lock.js';import{useSyncRefs as N}from'../../hooks/use-sync-refs.js';import{useTextValue as be}from'../../hooks/use-text-value.js';import{useTrackedPointer as Se}from'../../hooks/use-tracked-pointer.js';import{useTreeWalker as Ee}from'../../hooks/use-tree-walker.js';import{FloatingProvider as Re,useFloatingPanel as ve,useFloatingPanelProps as xe,useFloatingReference as _e,useFloatingReferenceProps as De,useResolvedAnchor as he}from'../../internal/floating.js';import{OpenClosedProvider as Ce,State as k,useOpenClosed as Fe}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as Oe}from'../../utils/bugs.js';import{Focus as y,calculateActiveIndex as w}from'../../utils/calculate-active-index.js';import{disposables as Le}from'../../utils/disposables.js';import{Focus as Z,FocusableMode as Ge,focusFrom as Ue,isFocusableElement as He,restoreFocusIfNecessary as ee,sortByDomNode as Ne}from'../../utils/focus-management.js';import{match as te}from'../../utils/match.js';import{RenderFeatures as ne,forwardRefWithAs as v,mergeProps as re,render as x}from'../../utils/render.js';import{useDescriptions as ke}from'../description/description.js';import{Keys as T}from'../keyboard.js';import{useLabelContext as Be,useLabels as oe}from'../label/label.js';import{Portal as we}from'../portal/portal.js';var Ke=(r=>(r[r.Open=0]="Open",r[r.Closed=1]="Closed",r))(Ke||{}),We=(r=>(r[r.Pointer=0]="Pointer",r[r.Other=1]="Other",r))(We||{}),je=(n=>(n[n.OpenMenu=0]="OpenMenu",n[n.CloseMenu=1]="CloseMenu",n[n.GoToItem=2]="GoToItem",n[n.Search=3]="Search",n[n.ClearSearch=4]="ClearSearch",n[n.RegisterItem=5]="RegisterItem",n[n.UnregisterItem=6]="UnregisterItem",n))(je||{});function K(e,a=r=>r){let r=e.activeItemIndex!==null?e.items[e.activeItemIndex]:null,i=Ne(a(e.items.slice()),p=>p.dataRef.current.domRef.current),o=r?i.indexOf(r):null;return o===-1&&(o=null),{items:i,activeItemIndex:o}}let Qe={[1](e){return e.menuState===1?e:{...e,activeItemIndex:null,menuState:1}},[0](e){return e.menuState===0?e:{...e,__demoMode:!1,menuState:0}},[2]:(e,a)=>{var p,d,n,l,t;if(e.menuState===1)return e;let r={...e,searchQuery:"",activationTrigger:(p=a.trigger)!=null?p:1,__demoMode:!1};if(a.focus===y.Nothing)return{...r,activeItemIndex:null};if(a.focus===y.Specific)return{...r,activeItemIndex:e.items.findIndex(u=>u.id===a.id)};if(a.focus===y.Previous){let u=e.activeItemIndex;if(u!==null){let M=e.items[u].dataRef.current.domRef,c=w(a,{resolveItems:()=>e.items,resolveActiveIndex:()=>e.activeItemIndex,resolveId:m=>m.id,resolveDisabled:m=>m.dataRef.current.disabled});if(c!==null){let m=e.items[c].dataRef.current.domRef;if(((d=M.current)==null?void 0:d.previousElementSibling)===m.current||((n=m.current)==null?void 0:n.previousElementSibling)===null)return{...r,activeItemIndex:c}}}}else if(a.focus===y.Next){let u=e.activeItemIndex;if(u!==null){let M=e.items[u].dataRef.current.domRef,c=w(a,{resolveItems:()=>e.items,resolveActiveIndex:()=>e.activeItemIndex,resolveId:m=>m.id,resolveDisabled:m=>m.dataRef.current.disabled});if(c!==null){let m=e.items[c].dataRef.current.domRef;if(((l=M.current)==null?void 0:l.nextElementSibling)===m.current||((t=m.current)==null?void 0:t.nextElementSibling)===null)return{...r,activeItemIndex:c}}}}let i=K(e),o=w(a,{resolveItems:()=>i.items,resolveActiveIndex:()=>i.activeItemIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});return{...r,...i,activeItemIndex:o}},[3]:(e,a)=>{let i=e.searchQuery!==""?0:1,o=e.searchQuery+a.value.toLowerCase(),d=(e.activeItemIndex!==null?e.items.slice(e.activeItemIndex+i).concat(e.items.slice(0,e.activeItemIndex+i)):e.items).find(l=>{var t;return((t=l.dataRef.current.textValue)==null?void 0:t.startsWith(o))&&!l.dataRef.current.disabled}),n=d?e.items.indexOf(d):-1;return n===-1||n===e.activeItemIndex?{...e,searchQuery:o}:{...e,searchQuery:o,activeItemIndex:n,activationTrigger:1}},[4](e){return e.searchQuery===""?e:{...e,searchQuery:"",searchActiveItemIndex:null}},[5]:(e,a)=>{let r=K(e,i=>[...i,{id:a.id,dataRef:a.dataRef}]);return{...e,...r}},[6]:(e,a)=>{let r=K(e,i=>{let o=i.findIndex(p=>p.id===a.id);return o!==-1&&i.splice(o,1),i});return{...e,...r,activationTrigger:1}}},W=le(null);W.displayName="MenuContext";function B(e){let a=ue(W);if(a===null){let r=new Error(`<${e} /> is missing a parent <Menu /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,B),r}return a}function Je(e,a){return te(a.type,Qe,e,a)}let Ve=q;function Xe(e,a){let{__demoMode:r=!1,...i}=e,o=de(Je,{__demoMode:r,menuState:r?0:1,buttonRef:z(),itemsRef:z(),items:[],searchQuery:"",activeItemIndex:null,activationTrigger:1}),[{menuState:p,itemsRef:d,buttonRef:n},l]=o,t=N(a);Ie(p===0,[n,d],(S,P)=>{var A;l({type:1}),He(P,Ge.Loose)||(S.preventDefault(),(A=n.current)==null||A.focus())});let M=I(()=>{l({type:1})}),c=G(()=>({open:p===0,close:M}),[p,M]),m={ref:t};return R.createElement(Re,null,R.createElement(W.Provider,{value:o},R.createElement(Ce,{value:te(p,{[0]:k.Open,[1]:k.Closed})},x({ourProps:m,theirProps:i,slot:c,defaultTag:Ve,name:"Menu"}))))}let $e="button";function qe(e,a){var F;let r=U(),{id:i=`headlessui-menu-button-${r}`,disabled:o=!1,autoFocus:p=!1,...d}=e,[n,l]=B("Menu.Button"),t=De(),u=N(n.buttonRef,a,_e()),M=I(f=>{switch(f.key){case T.Space:case T.Enter:case T.ArrowDown:f.preventDefault(),f.stopPropagation(),O(()=>l({type:0})),l({type:2,focus:y.First});break;case T.ArrowUp:f.preventDefault(),f.stopPropagation(),O(()=>l({type:0})),l({type:2,focus:y.Last});break}}),c=I(f=>{switch(f.key){case T.Space:f.preventDefault();break}}),m=I(f=>{var D;if(Oe(f.currentTarget))return f.preventDefault();o||(n.menuState===0?(O(()=>l({type:1})),(D=n.buttonRef.current)==null||D.focus({preventScroll:!0})):(f.preventDefault(),l({type:0})))}),{isFocusVisible:S,focusProps:P}=ie({autoFocus:p}),{isHovered:A,hoverProps:E}=se({isDisabled:o}),{pressed:b,pressProps:_}=me({disabled:o}),h=G(()=>({open:n.menuState===0,active:b||n.menuState===0,disabled:o,hover:A,focus:S,autofocus:p}),[n,A,S,b,o,p]),C=re(t(),{ref:u,id:i,type:Ae(e,n.buttonRef),"aria-haspopup":"menu","aria-controls":(F=n.itemsRef.current)==null?void 0:F.id,"aria-expanded":n.menuState===0,disabled:o||void 0,autoFocus:p,onKeyDown:M,onKeyUp:c,onClick:m},P,E,_);return x({ourProps:C,theirProps:d,slot:h,defaultTag:$e,name:"Menu.Button"})}let ze="div",Ye=ne.RenderStrategy|ne.Static;function Ze(e,a){var Q,J;let r=U(),{id:i=`headlessui-menu-items-${r}`,anchor:o,portal:p=!1,modal:d=!0,...n}=e,l=he(o),[t,u]=B("Menu.Items"),[M,c]=ve(l),m=xe(),S=N(t.itemsRef,a,l?M:null),P=Me(t.itemsRef);l&&(p=!0);let A=fe(),E=Fe(),b=(()=>E!==null?(E&k.Open)===k.Open:t.menuState===0)();ge(b,t.buttonRef,()=>{u({type:1})});let _=t.__demoMode?!1:d&&t.menuState===0;Pe(_,P);let h=t.__demoMode?!1:d&&t.menuState===0;ye(h,{allowed:I(()=>[t.buttonRef.current,t.itemsRef.current])});let C=t.menuState!==0,f=ce(C,t.buttonRef)?!1:b;pe(()=>{let s=t.itemsRef.current;s&&t.menuState===0&&s!==(P==null?void 0:P.activeElement)&&s.focus({preventScroll:!0})},[t.menuState,t.itemsRef,P,t.itemsRef.current]),Ee(t.menuState===0,{container:t.itemsRef.current,accept(s){return s.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:s.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(s){s.setAttribute("role","none")}});let D=I(s=>{var V,X,$;switch(A.dispose(),s.key){case T.Space:if(t.searchQuery!=="")return s.preventDefault(),s.stopPropagation(),u({type:3,value:s.key});case T.Enter:if(s.preventDefault(),s.stopPropagation(),u({type:1}),t.activeItemIndex!==null){let{dataRef:ae}=t.items[t.activeItemIndex];(X=(V=ae.current)==null?void 0:V.domRef.current)==null||X.click()}ee(t.buttonRef.current);break;case T.ArrowDown:return s.preventDefault(),s.stopPropagation(),u({type:2,focus:y.Next});case T.ArrowUp:return s.preventDefault(),s.stopPropagation(),u({type:2,focus:y.Previous});case T.Home:case T.PageUp:return s.preventDefault(),s.stopPropagation(),u({type:2,focus:y.First});case T.End:case T.PageDown:return s.preventDefault(),s.stopPropagation(),u({type:2,focus:y.Last});case T.Escape:s.preventDefault(),s.stopPropagation(),O(()=>u({type:1})),($=t.buttonRef.current)==null||$.focus({preventScroll:!0});break;case T.Tab:s.preventDefault(),s.stopPropagation(),O(()=>u({type:1})),Ue(t.buttonRef.current,s.shiftKey?Z.Previous:Z.Next);break;default:s.key.length===1&&(u({type:3,value:s.key}),A.setTimeout(()=>u({type:4}),350));break}}),j=I(s=>{switch(s.key){case T.Space:s.preventDefault();break}}),g=G(()=>({open:t.menuState===0}),[t]),L=re(l?m():{},{"aria-activedescendant":t.activeItemIndex===null||(Q=t.items[t.activeItemIndex])==null?void 0:Q.id,"aria-labelledby":(J=t.buttonRef.current)==null?void 0:J.id,id:i,onKeyDown:D,onKeyUp:j,role:"menu",tabIndex:0,ref:S,style:{...n.style,...c,"--button-width":Te(t.buttonRef,!0).width}});return R.createElement(we,{enabled:p?e.static||b:!1},x({ourProps:L,theirProps:n,slot:g,defaultTag:ze,features:Ye,visible:f,name:"Menu.Items"}))}let et=q;function tt(e,a){let r=U(),{id:i=`headlessui-menu-item-${r}`,disabled:o=!1,...p}=e,[d,n]=B("Menu.Item"),l=d.activeItemIndex!==null?d.items[d.activeItemIndex].id===i:!1,t=Y(null),u=N(a,t);H(()=>{if(!d.__demoMode&&d.menuState===0&&l&&d.activationTrigger!==0)return Le().requestAnimationFrame(()=>{var g,L;(L=(g=t.current)==null?void 0:g.scrollIntoView)==null||L.call(g,{block:"nearest"})})},[d.__demoMode,t,l,d.menuState,d.activationTrigger,d.activeItemIndex]);let M=be(t),c=Y({disabled:o,domRef:t,get textValue(){return M()}});H(()=>{c.current.disabled=o},[c,o]),H(()=>(n({type:5,id:i,dataRef:c}),()=>n({type:6,id:i})),[c,i]);let m=I(()=>{n({type:1})}),S=I(g=>{if(o)return g.preventDefault();n({type:1}),ee(d.buttonRef.current)}),P=I(()=>{if(o)return n({type:2,focus:y.Nothing});n({type:2,focus:y.Specific,id:i})}),A=Se(),E=I(g=>{A.update(g),!o&&(l||n({type:2,focus:y.Specific,id:i,trigger:0}))}),b=I(g=>{A.wasMoved(g)&&(o||l||n({type:2,focus:y.Specific,id:i,trigger:0}))}),_=I(g=>{A.wasMoved(g)&&(o||l&&n({type:2,focus:y.Nothing}))}),[h,C]=oe(),[F,f]=ke(),D=G(()=>({active:l,focus:l,disabled:o,close:m}),[l,o,m]);return R.createElement(C,null,R.createElement(f,null,x({ourProps:{id:i,ref:u,role:"menuitem",tabIndex:o===!0?void 0:-1,"aria-disabled":o===!0?!0:void 0,"aria-labelledby":h,"aria-describedby":F,disabled:void 0,onClick:S,onFocus:P,onPointerEnter:E,onMouseEnter:E,onPointerMove:b,onMouseMove:b,onPointerLeave:_,onMouseLeave:_},theirProps:p,slot:D,defaultTag:et,name:"Menu.Item"})))}let nt="div";function rt(e,a){let[r,i]=oe();return R.createElement(i,null,x({ourProps:{ref:a,"aria-labelledby":r,role:"group"},theirProps:e,slot:{},defaultTag:nt,name:"Menu.Section"}))}let ot="header";function at(e,a){let r=U(),{id:i=`headlessui-menu-heading-${r}`,...o}=e,p=Be();H(()=>p.register(i),[i,p.register]);let d={id:i,ref:a,role:"presentation",...p.props};return x({ourProps:d,theirProps:o,slot:{},defaultTag:ot,name:"Menu.Heading"})}let it="div";function st(e,a){return x({ourProps:{ref:a,role:"separator"},theirProps:e,slot:{},defaultTag:it,name:"Menu.Separator"})}let lt=v(Xe),ut=v(qe),pt=v(Ze),dt=v(tt),mt=v(rt),ct=v(at),ft=v(st),Xt=Object.assign(lt,{Button:ut,Items:pt,Item:dt,Section:mt,Heading:ct,Separator:ft});export{Xt as Menu,ut as MenuButton,ct as MenuHeading,dt as MenuItem,pt as MenuItems,mt as MenuSection,ft as MenuSeparator}; |
@@ -22,2 +22,3 @@ import React, { type ElementType, type MouseEventHandler, type MutableRefObject, type Ref } from 'react'; | ||
focus: boolean; | ||
disabled: boolean; | ||
autofocus: boolean; | ||
@@ -38,3 +39,3 @@ }; | ||
export type PopoverOverlayProps<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG> = Props<TTag, OverlayRenderPropArg, OverlayPropsWeControl, PropsForFeatures<typeof OverlayRenderFeatures>>; | ||
declare function OverlayFn<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(props: PopoverOverlayProps<TTag>, ref: Ref<HTMLDivElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare function OverlayFn<TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG>(props: PopoverOverlayProps<TTag>, ref: Ref<HTMLElement>): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null; | ||
declare let DEFAULT_PANEL_TAG: "div"; | ||
@@ -49,2 +50,3 @@ type PanelRenderPropArg = { | ||
anchor?: AnchorProps; | ||
portal?: boolean; | ||
modal?: boolean; | ||
@@ -54,3 +56,3 @@ static?: boolean; | ||
}>; | ||
declare function PanelFn<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: PopoverPanelProps<TTag>, ref: Ref<HTMLDivElement>): React.JSX.Element; | ||
declare function PanelFn<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(props: PopoverPanelProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
declare let DEFAULT_GROUP_TAG: "div"; | ||
@@ -81,7 +83,11 @@ type GroupRenderPropArg = {}; | ||
export declare let Popover: _internal_ComponentPopover & { | ||
/** @deprecated use `<PopoverButton>` instead of `<Popover.Button>` */ | ||
Button: _internal_ComponentPopoverButton; | ||
/** @deprecated use `<PopoverOverlay>` instead of `<Popover.Overlay>` */ | ||
Overlay: _internal_ComponentPopoverOverlay; | ||
/** @deprecated use `<PopoverPanel>` instead of `<Popover.Panel>` */ | ||
Panel: _internal_ComponentPopoverPanel; | ||
/** @deprecated use `<PopoverGroup>` instead of `<Popover.Group>` */ | ||
Group: _internal_ComponentPopoverGroup; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as Oe}from"@react-aria/focus";import{useHover as Ce}from"@react-aria/interactions";import y,{Fragment as Me,createContext as ee,createRef as me,useContext as te,useEffect as oe,useMemo as D,useReducer as xe,useRef as z,useState as ye}from"react";import{useActivePress as _e}from'../../hooks/use-active-press.js';import{useEvent as g}from'../../hooks/use-event.js';import{useEventListener as Le}from'../../hooks/use-event-listener.js';import{useId as re}from'../../hooks/use-id.js';import{useIsoMorphicEffect as Ie}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Ee}from'../../hooks/use-latest-value.js';import{useOutsideClick as Be}from'../../hooks/use-outside-click.js';import{useOwnerDocument as se}from'../../hooks/use-owner.js';import{useResolveButtonType as he}from'../../hooks/use-resolve-button-type.js';import{useMainTreeNode as De,useRootContainers as Ge}from'../../hooks/use-root-containers.js';import{optionalRef as He,useSyncRefs as Y}from'../../hooks/use-sync-refs.js';import{Direction as H,useTabDirection as be}from'../../hooks/use-tab-direction.js';import{FloatingProvider as Ne,useFloatingPanel as ke,useFloatingPanelProps as we,useFloatingReference as Ue}from'../../internal/floating.js';import{Hidden as ue,HiddenFeatures as ie}from'../../internal/hidden.js';import{Modal as ge,ModalFeatures as We}from'../../internal/modal.js';import{OpenClosedProvider as Ve,State as q,useOpenClosed as Se}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as Ae}from'../../utils/bugs.js';import{Focus as N,FocusResult as fe,FocusableMode as Ke,focusIn as W,getFocusableElements as Pe,isFocusableElement as je}from'../../utils/focus-management.js';import{match as V}from'../../utils/match.js';import'../../utils/micro-task.js';import{getOwnerDocument as $e}from'../../utils/owner.js';import{RenderFeatures as ne,forwardRefWithAs as Q,mergeProps as de,render as Z,useMergeRefsFn as Je}from'../../utils/render.js';import{FocusTrapFeatures as Xe}from'../focus-trap/focus-trap.js';import{Keys as K}from'../keyboard.js';import{Portal as Re,useNestedPortals as Ye}from'../portal/portal.js';var qe=(f=>(f[f.Open=0]="Open",f[f.Closed=1]="Closed",f))(qe||{}),ze=(n=>(n[n.TogglePopover=0]="TogglePopover",n[n.ClosePopover=1]="ClosePopover",n[n.SetButton=2]="SetButton",n[n.SetButtonId=3]="SetButtonId",n[n.SetPanel=4]="SetPanel",n[n.SetPanelId=5]="SetPanelId",n))(ze||{});let Qe={[0]:e=>{let a={...e,popoverState:V(e.popoverState,{[0]:1,[1]:0})};return a.popoverState===0&&(a.__demoMode=!1),a},[1](e){return e.popoverState===1?e:{...e,popoverState:1}},[2](e,a){return e.button===a.button?e:{...e,button:a.button}},[3](e,a){return e.buttonId===a.buttonId?e:{...e,buttonId:a.buttonId}},[4](e,a){return e.panel===a.panel?e:{...e,panel:a.panel}},[5](e,a){return e.panelId===a.panelId?e:{...e,panelId:a.panelId}}},ce=ee(null);ce.displayName="PopoverContext";function le(e){let a=te(ce);if(a===null){let f=new Error(`<${e} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(f,le),f}return a}let ae=ee(null);ae.displayName="PopoverAPIContext";function ve(e){let a=te(ae);if(a===null){let f=new Error(`<${e} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(f,ve),f}return a}let Te=ee(null);Te.displayName="PopoverGroupContext";function Fe(){return te(Te)}let pe=ee(null);pe.displayName="PopoverPanelContext";function Ze(){return te(pe)}function et(e,a){return V(a.type,Qe,e,a)}let tt="div";function ot(e,a){var P;let{__demoMode:f=!1,...F}=e,O=z(null),l=Y(a,He(o=>{O.current=o})),n=z([]),x=xe(et,{__demoMode:f,popoverState:f?0:1,buttons:n,button:null,buttonId:null,panel:null,panelId:null,beforePanelSentinel:me(),afterPanelSentinel:me()}),[{popoverState:t,button:p,buttonId:S,panel:s,panelId:k,beforePanelSentinel:m,afterPanelSentinel:T},d]=x,i=se((P=O.current)!=null?P:p),E=D(()=>{if(!p||!s)return!1;for(let v of document.querySelectorAll("body > *"))if(Number(v==null?void 0:v.contains(p))^Number(v==null?void 0:v.contains(s)))return!0;let o=Pe(),u=o.indexOf(p),c=(u+o.length-1)%o.length,R=(u+1)%o.length,M=o[c],r=o[R];return!s.contains(M)&&!s.contains(r)},[p,s]),C=Ee(S),b=Ee(k),L=D(()=>({buttonId:C,panelId:b,close:()=>d({type:1})}),[C,b,d]),A=Fe(),_=A==null?void 0:A.registerPopover,j=g(()=>{var o;return(o=A==null?void 0:A.isFocusWithinPopoverGroup())!=null?o:(i==null?void 0:i.activeElement)&&((p==null?void 0:p.contains(i.activeElement))||(s==null?void 0:s.contains(i.activeElement)))});oe(()=>_==null?void 0:_(L),[_,L]);let[$,J]=Ye(),B=Ge({mainTreeNodeRef:A==null?void 0:A.mainTreeNodeRef,portals:$,defaultContainers:[p,s]});Le(i==null?void 0:i.defaultView,"focus",o=>{var u,c,R,M;o.target!==window&&o.target instanceof HTMLElement&&t===0&&(j()||p&&s&&(B.contains(o.target)||(c=(u=m.current)==null?void 0:u.contains)!=null&&c.call(u,o.target)||(M=(R=T.current)==null?void 0:R.contains)!=null&&M.call(R,o.target)||d({type:1})))},!0),Be(B.resolveContainers,(o,u)=>{d({type:1}),je(u,Ke.Loose)||(o.preventDefault(),p==null||p.focus())},t===0);let h=g(o=>{d({type:1});let u=(()=>o?o instanceof HTMLElement?o:"current"in o&&o.current instanceof HTMLElement?o.current:p:p)();u==null||u.focus()}),G=D(()=>({close:h,isPortalled:E}),[h,E]),w=D(()=>({open:t===0,close:h}),[t,h]),X={ref:l};return y.createElement(Ne,null,y.createElement(pe.Provider,{value:null},y.createElement(ce.Provider,{value:x},y.createElement(ae.Provider,{value:G},y.createElement(Ve,{value:V(t,{[0]:q.Open,[1]:q.Closed})},y.createElement(J,null,Z({ourProps:X,theirProps:F,slot:w,defaultTag:tt,name:"Popover"}),y.createElement(B.MainTreeNode,null)))))))}let rt="button";function nt(e,a){var c,R,M;let f=re(),{id:F=`headlessui-popover-button-${f}`,...O}=e,[l,n]=le("Popover.Button"),{isPortalled:x}=ve("Popover.Button"),t=z(null),p=`headlessui-focus-sentinel-${re()}`,S=Fe(),s=S==null?void 0:S.closeOthers,m=Ze()!==null;oe(()=>{if(!m)return n({type:3,buttonId:F}),()=>{n({type:3,buttonId:null})}},[m,F,n]);let[T]=ye(()=>Symbol()),d=Y(t,a,Ue(),m?null:r=>{if(r)l.buttons.current.push(T);else{let v=l.buttons.current.indexOf(T);v!==-1&&l.buttons.current.splice(v,1)}l.buttons.current.length>1&&console.warn("You are already using a <Popover.Button /> but only 1 <Popover.Button /> is supported."),r&&n({type:2,button:r})}),i=Y(t,a),E=se(t),C=g(r=>{var v,I,U;if(m){if(l.popoverState===1)return;switch(r.key){case K.Space:case K.Enter:r.preventDefault(),(I=(v=r.target).click)==null||I.call(v),n({type:1}),(U=l.button)==null||U.focus();break}}else switch(r.key){case K.Space:case K.Enter:r.preventDefault(),r.stopPropagation(),l.popoverState===1&&(s==null||s(l.buttonId)),n({type:0});break;case K.Escape:if(l.popoverState!==0)return s==null?void 0:s(l.buttonId);if(!t.current||E!=null&&E.activeElement&&!t.current.contains(E.activeElement))return;r.preventDefault(),r.stopPropagation(),n({type:1});break}}),b=g(r=>{m||r.key===K.Space&&r.preventDefault()}),L=g(r=>{var v,I;Ae(r.currentTarget)||e.disabled||(m?(n({type:1}),(v=l.button)==null||v.focus()):(r.preventDefault(),r.stopPropagation(),l.popoverState===1&&(s==null||s(l.buttonId)),n({type:0}),(I=l.button)==null||I.focus()))}),A=g(r=>{r.preventDefault(),r.stopPropagation()}),{isFocusVisible:_,focusProps:j}=Oe({autoFocus:(c=e.autoFocus)!=null?c:!1}),{isHovered:$,hoverProps:J}=Ce({isDisabled:(R=e.disabled)!=null?R:!1}),{pressed:B,pressProps:h}=_e({disabled:(M=e.disabled)!=null?M:!1}),G=l.popoverState===0,w=D(()=>{var r;return{open:G,active:B||G,hover:$,focus:_,autofocus:(r=e.autoFocus)!=null?r:!1}},[G,$,_,B,e.autoFocus]),X=he(e,t),P=m?de({ref:i,type:X,onKeyDown:C,onClick:L},j,J,h):de({ref:d,id:l.buttonId,type:X,"aria-expanded":l.popoverState===0,"aria-controls":l.panel?l.panelId:void 0,onKeyDown:C,onKeyUp:b,onClick:L,onMouseDown:A},j,J,h),o=be(),u=g(()=>{let r=l.panel;if(!r)return;function v(){V(o.current,{[H.Forwards]:()=>W(r,N.First),[H.Backwards]:()=>W(r,N.Last)})===fe.Error&&W(Pe().filter(U=>U.dataset.headlessuiFocusGuard!=="true"),V(o.current,{[H.Forwards]:N.Next,[H.Backwards]:N.Previous}),{relativeTo:l.button})}v()});return y.createElement(y.Fragment,null,Z({ourProps:P,theirProps:O,slot:w,defaultTag:rt,name:"Popover.Button"}),G&&!m&&x&&y.createElement(ue,{id:p,features:ie.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:u}))}let lt="div",at=ne.RenderStrategy|ne.Static;function pt(e,a){let f=re(),{id:F=`headlessui-popover-overlay-${f}`,...O}=e,[{popoverState:l},n]=le("Popover.Overlay"),x=Y(a),t=Se(),p=(()=>t!==null?(t&q.Open)===q.Open:l===0)(),S=g(m=>{if(Ae(m.currentTarget))return m.preventDefault();n({type:1})}),s=D(()=>({open:l===0}),[l]);return Z({ourProps:{ref:x,id:F,"aria-hidden":!0,onClick:S},theirProps:O,slot:s,defaultTag:lt,features:at,visible:p,name:"Popover.Overlay"})}let st="div",ut=ne.RenderStrategy|ne.Static;function it(e,a){let f=re(),{id:F=`headlessui-popover-panel-${f}`,focus:O=!1,anchor:l,modal:n,...x}=e,[t,p]=le("Popover.Panel"),{close:S,isPortalled:s}=ve("Popover.Panel"),k=`headlessui-focus-sentinel-before-${f}`,m=`headlessui-focus-sentinel-after-${f}`,T=z(null),[d,i]=ke(l),E=we();l!=null&&n==null?n=!0:n==null&&(n=!1);let C=Y(T,a,l?d:null,P=>{p({type:4,panel:P})}),b=se(T),L=Je();Ie(()=>(p({type:5,panelId:F}),()=>{p({type:5,panelId:null})}),[F,p]);let A=Se(),_=(()=>A!==null?(A&q.Open)===q.Open:t.popoverState===0)(),j=g(P=>{var o;switch(P.key){case K.Escape:if(t.popoverState!==0||!T.current||b!=null&&b.activeElement&&!T.current.contains(b.activeElement))return;P.preventDefault(),P.stopPropagation(),p({type:1}),(o=t.button)==null||o.focus();break}});oe(()=>{var P;e.static||t.popoverState===1&&((P=e.unmount)==null||P)&&p({type:4,panel:null})},[t.popoverState,e.unmount,e.static,p]),oe(()=>{if(t.__demoMode||!O||t.popoverState!==0||!T.current)return;let P=b==null?void 0:b.activeElement;T.current.contains(P)||W(T.current,N.First)},[t.__demoMode,O,T,t.popoverState]);let $=D(()=>({open:t.popoverState===0,close:S}),[t,S]),J=de(l?E():{},{ref:C,id:F,onKeyDown:j,onBlur:O&&t.popoverState===0?P=>{var u,c,R,M,r;let o=P.relatedTarget;o&&T.current&&((u=T.current)!=null&&u.contains(o)||(p({type:1}),((R=(c=t.beforePanelSentinel.current)==null?void 0:c.contains)!=null&&R.call(c,o)||(r=(M=t.afterPanelSentinel.current)==null?void 0:M.contains)!=null&&r.call(M,o))&&o.focus({preventScroll:!0})))}:void 0,tabIndex:-1,...i?{style:i}:{}}),B=be(),h=g(()=>{let P=T.current;if(!P)return;function o(){V(B.current,{[H.Forwards]:()=>{var c;W(P,N.First)===fe.Error&&((c=t.afterPanelSentinel.current)==null||c.focus())},[H.Backwards]:()=>{var u;(u=t.button)==null||u.focus({preventScroll:!0})}})}o()}),G=g(()=>{let P=T.current;if(!P)return;function o(){V(B.current,{[H.Forwards]:()=>{var v;if(!t.button)return;let u=Pe(),c=u.indexOf(t.button),R=u.slice(0,c+1),r=[...u.slice(c+1),...R];for(let I of r.slice())if(I.dataset.headlessuiFocusGuard==="true"||(v=t.panel)!=null&&v.contains(I)){let U=r.indexOf(I);U!==-1&&r.splice(U,1)}W(r,N.First,{sorted:!1})},[H.Backwards]:()=>{var c;W(P,N.Previous)===fe.Error&&((c=t.button)==null||c.focus())}})}o()}),w=n?ge:l?Re:Me,X=n?{focusTrapFeatures:Xe.None,features:We.ScrollLock,enabled:t.popoverState===0}:{};return(w===Re||w===ge)&&(s=!0),y.createElement(pe.Provider,{value:F},y.createElement(ae.Provider,{value:{close:S,isPortalled:s}},y.createElement(w,{...X},_&&s&&y.createElement(ue,{id:k,ref:t.beforePanelSentinel,features:ie.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:h}),Z({mergeRefs:L,ourProps:J,theirProps:x,slot:$,defaultTag:st,features:ut,visible:_,name:"Popover.Panel"}),_&&s&&y.createElement(ue,{id:m,ref:t.afterPanelSentinel,features:ie.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:G}))))}let ft="div";function Pt(e,a){let f=z(null),F=Y(f,a),[O,l]=ye([]),n=De(),x=g(d=>{l(i=>{let E=i.indexOf(d);if(E!==-1){let C=i.slice();return C.splice(E,1),C}return i})}),t=g(d=>(l(i=>[...i,d]),()=>x(d))),p=g(()=>{var E;let d=$e(f);if(!d)return!1;let i=d.activeElement;return(E=f.current)!=null&&E.contains(i)?!0:O.some(C=>{var b,L;return((b=d.getElementById(C.buttonId.current))==null?void 0:b.contains(i))||((L=d.getElementById(C.panelId.current))==null?void 0:L.contains(i))})}),S=g(d=>{for(let i of O)i.buttonId.current!==d&&i.close()}),s=D(()=>({registerPopover:t,unregisterPopover:x,isFocusWithinPopoverGroup:p,closeOthers:S,mainTreeNodeRef:n.mainTreeNodeRef}),[t,x,p,S,n.mainTreeNodeRef]),k=D(()=>({}),[]),m=e,T={ref:F};return y.createElement(Te.Provider,{value:s},Z({ourProps:T,theirProps:m,slot:k,defaultTag:ft,name:"Popover.Group"}),y.createElement(n.MainTreeNode,null))}let dt=Q(ot),ct=Q(nt),vt=Q(pt),Tt=Q(it),mt=Q(Pt),Jt=Object.assign(dt,{Button:ct,Overlay:vt,Panel:Tt,Group:mt});export{Jt as Popover,ct as PopoverButton,mt as PopoverGroup,vt as PopoverOverlay,Tt as PopoverPanel}; | ||
"use client";import{useFocusRing as Oe}from"@react-aria/focus";import{useHover as Ce}from"@react-aria/interactions";import b,{createContext as ee,createRef as se,useContext as te,useEffect as oe,useMemo as G,useReducer as Fe,useRef as z,useState as Ee}from"react";import{useActivePress as Me}from'../../hooks/use-active-press.js';import{useElementSize as _e}from'../../hooks/use-element-size.js';import{useEvent as A}from'../../hooks/use-event.js';import{useEventListener as xe}from'../../hooks/use-event-listener.js';import{useId as re}from'../../hooks/use-id.js';import{useIsoMorphicEffect as Le}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as be}from'../../hooks/use-latest-value.js';import{useOnDisappear as Ie}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Be}from'../../hooks/use-outside-click.js';import{useOwnerDocument as ue}from'../../hooks/use-owner.js';import{useResolveButtonType as he}from'../../hooks/use-resolve-button-type.js';import{useMainTreeNode as De,useRootContainers as Ge}from'../../hooks/use-root-containers.js';import{useScrollLock as He}from'../../hooks/use-scroll-lock.js';import{optionalRef as Ne,useSyncRefs as J}from'../../hooks/use-sync-refs.js';import{Direction as k,useTabDirection as ge}from'../../hooks/use-tab-direction.js';import{CloseProvider as ke}from'../../internal/close-provider.js';import{FloatingProvider as Ue,useFloatingPanel as we,useFloatingPanelProps as We,useFloatingReference as Ve,useResolvedAnchor as je}from'../../internal/floating.js';import{Hidden as ie,HiddenFeatures as fe}from'../../internal/hidden.js';import{OpenClosedProvider as Ke,State as X,useOpenClosed as Se}from'../../internal/open-closed.js';import{isDisabledReactIssue7711 as Ae}from'../../utils/bugs.js';import{Focus as U,FocusResult as Pe,FocusableMode as $e,focusIn as w,getFocusableElements as de,isFocusableElement as Je}from'../../utils/focus-management.js';import{match as W}from'../../utils/match.js';import'../../utils/micro-task.js';import{getOwnerDocument as Xe}from'../../utils/owner.js';import{RenderFeatures as ne,forwardRefWithAs as Q,mergeProps as ce,render as Z,useMergeRefsFn as Ye}from'../../utils/render.js';import{Keys as V}from'../keyboard.js';import{Portal as qe,useNestedPortals as ze}from'../portal/portal.js';var Qe=(u=>(u[u.Open=0]="Open",u[u.Closed=1]="Closed",u))(Qe||{}),Ze=(i=>(i[i.TogglePopover=0]="TogglePopover",i[i.ClosePopover=1]="ClosePopover",i[i.SetButton=2]="SetButton",i[i.SetButtonId=3]="SetButtonId",i[i.SetPanel=4]="SetPanel",i[i.SetPanelId=5]="SetPanelId",i))(Ze||{});let et={[0]:t=>({...t,popoverState:W(t.popoverState,{[0]:1,[1]:0}),__demoMode:!1}),[1](t){return t.popoverState===1?t:{...t,popoverState:1,__demoMode:!1}},[2](t,a){return t.button===a.button?t:{...t,button:a.button}},[3](t,a){return t.buttonId===a.buttonId?t:{...t,buttonId:a.buttonId}},[4](t,a){return t.panel===a.panel?t:{...t,panel:a.panel}},[5](t,a){return t.panelId===a.panelId?t:{...t,panelId:a.panelId}}},ve=ee(null);ve.displayName="PopoverContext";function le(t){let a=te(ve);if(a===null){let u=new Error(`<${t} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(u,le),u}return a}let ae=ee(null);ae.displayName="PopoverAPIContext";function Te(t){let a=te(ae);if(a===null){let u=new Error(`<${t} /> is missing a parent <Popover /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(u,Te),u}return a}let me=ee(null);me.displayName="PopoverGroupContext";function Re(){return te(me)}let pe=ee(null);pe.displayName="PopoverPanelContext";function tt(){return te(pe)}function ot(t,a){return W(a.type,et,t,a)}let rt="div";function nt(t,a){var g;let{__demoMode:u=!1,...C}=t,T=z(null),S=J(a,Ne(o=>{T.current=o})),i=z([]),l=Fe(ot,{__demoMode:u,popoverState:u?0:1,buttons:i,button:null,buttonId:null,panel:null,panelId:null,beforePanelSentinel:se(),afterPanelSentinel:se(),afterButtonSentinel:se()}),[{popoverState:f,button:e,buttonId:P,panel:v,panelId:_,beforePanelSentinel:y,afterPanelSentinel:j,afterButtonSentinel:n},s]=l,E=ue((g=T.current)!=null?g:e),x=G(()=>{if(!e||!v)return!1;for(let M of document.querySelectorAll("body > *"))if(Number(M==null?void 0:M.contains(e))^Number(M==null?void 0:M.contains(v)))return!0;let o=de(),p=o.indexOf(e),r=(p+o.length-1)%o.length,c=(p+1)%o.length,m=o[r],O=o[c];return!v.contains(m)&&!v.contains(O)},[e,v]),L=be(P),h=be(_),F=G(()=>({buttonId:L,panelId:h,close:()=>s({type:1})}),[L,h,s]),R=Re(),D=R==null?void 0:R.registerPopover,I=A(()=>{var o;return(o=R==null?void 0:R.isFocusWithinPopoverGroup())!=null?o:(E==null?void 0:E.activeElement)&&((e==null?void 0:e.contains(E.activeElement))||(v==null?void 0:v.contains(E.activeElement)))});oe(()=>D==null?void 0:D(F),[D,F]);let[K,$]=ze(),H=Ge({mainTreeNodeRef:R==null?void 0:R.mainTreeNodeRef,portals:K,defaultContainers:[e,v]});xe(E==null?void 0:E.defaultView,"focus",o=>{var p,r,c,m,O,M;o.target!==window&&o.target instanceof HTMLElement&&f===0&&(I()||e&&v&&(H.contains(o.target)||(r=(p=y.current)==null?void 0:p.contains)!=null&&r.call(p,o.target)||(m=(c=j.current)==null?void 0:c.contains)!=null&&m.call(c,o.target)||(M=(O=n.current)==null?void 0:O.contains)!=null&&M.call(O,o.target)||s({type:1})))},!0),Be(f===0,H.resolveContainers,(o,p)=>{s({type:1}),Je(p,$e.Loose)||(o.preventDefault(),e==null||e.focus())});let B=A(o=>{s({type:1});let p=(()=>o?o instanceof HTMLElement?o:"current"in o&&o.current instanceof HTMLElement?o.current:e:e)();p==null||p.focus()}),N=G(()=>({close:B,isPortalled:x}),[B,x]),q=G(()=>({open:f===0,close:B}),[f,B]),d={ref:S};return b.createElement(Ue,null,b.createElement(pe.Provider,{value:null},b.createElement(ve.Provider,{value:l},b.createElement(ae.Provider,{value:N},b.createElement(ke,{value:B},b.createElement(Ke,{value:W(f,{[0]:X.Open,[1]:X.Closed})},b.createElement($,null,Z({ourProps:d,theirProps:C,slot:q,defaultTag:rt,name:"Popover"}),b.createElement(H.MainTreeNode,null))))))))}let lt="button";function at(t,a){let u=re(),{id:C=`headlessui-popover-button-${u}`,disabled:T=!1,autoFocus:S=!1,...i}=t,[l,f]=le("Popover.Button"),{isPortalled:e}=Te("Popover.Button"),P=z(null),v=`headlessui-focus-sentinel-${re()}`,_=Re(),y=_==null?void 0:_.closeOthers,n=tt()!==null;oe(()=>{if(!n)return f({type:3,buttonId:C}),()=>{f({type:3,buttonId:null})}},[n,C,f]);let[s]=Ee(()=>Symbol()),E=J(P,a,Ve(),n?null:r=>{if(r)l.buttons.current.push(s);else{let c=l.buttons.current.indexOf(s);c!==-1&&l.buttons.current.splice(c,1)}l.buttons.current.length>1&&console.warn("You are already using a <Popover.Button /> but only 1 <Popover.Button /> is supported."),r&&f({type:2,button:r})}),x=J(P,a),L=ue(P),h=A(r=>{var c,m,O;if(n){if(l.popoverState===1)return;switch(r.key){case V.Space:case V.Enter:r.preventDefault(),(m=(c=r.target).click)==null||m.call(c),f({type:1}),(O=l.button)==null||O.focus();break}}else switch(r.key){case V.Space:case V.Enter:r.preventDefault(),r.stopPropagation(),l.popoverState===1&&(y==null||y(l.buttonId)),f({type:0});break;case V.Escape:if(l.popoverState!==0)return y==null?void 0:y(l.buttonId);if(!P.current||L!=null&&L.activeElement&&!P.current.contains(L.activeElement))return;r.preventDefault(),r.stopPropagation(),f({type:1});break}}),F=A(r=>{n||r.key===V.Space&&r.preventDefault()}),R=A(r=>{var c,m;Ae(r.currentTarget)||T||(n?(f({type:1}),(c=l.button)==null||c.focus()):(r.preventDefault(),r.stopPropagation(),l.popoverState===1&&(y==null||y(l.buttonId)),f({type:0}),(m=l.button)==null||m.focus()))}),D=A(r=>{r.preventDefault(),r.stopPropagation()}),{isFocusVisible:I,focusProps:K}=Oe({autoFocus:S}),{isHovered:$,hoverProps:H}=Ce({isDisabled:T}),{pressed:Y,pressProps:B}=Me({disabled:T}),N=l.popoverState===0,q=G(()=>({open:N,active:Y||N,disabled:T,hover:$,focus:I,autofocus:S}),[N,$,I,Y,T,S]),d=he(t,P),g=n?ce({ref:x,type:d,onKeyDown:h,onClick:R,disabled:T||void 0,autoFocus:S},K,H,B):ce({ref:E,id:l.buttonId,type:d,"aria-expanded":l.popoverState===0,"aria-controls":l.panel?l.panelId:void 0,disabled:T||void 0,autoFocus:S,onKeyDown:h,onKeyUp:F,onClick:R,onMouseDown:D},K,H,B),o=ge(),p=A(()=>{let r=l.panel;if(!r)return;function c(){W(o.current,{[k.Forwards]:()=>w(r,U.First),[k.Backwards]:()=>w(r,U.Last)})===Pe.Error&&w(de().filter(O=>O.dataset.headlessuiFocusGuard!=="true"),W(o.current,{[k.Forwards]:U.Next,[k.Backwards]:U.Previous}),{relativeTo:l.button})}c()});return b.createElement(b.Fragment,null,Z({ourProps:g,theirProps:i,slot:q,defaultTag:lt,name:"Popover.Button"}),N&&!n&&e&&b.createElement(ie,{id:v,ref:l.afterButtonSentinel,features:fe.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:p}))}let pt="div",st=ne.RenderStrategy|ne.Static;function ut(t,a){let u=re(),{id:C=`headlessui-popover-overlay-${u}`,...T}=t,[{popoverState:S},i]=le("Popover.Overlay"),l=J(a),f=Se(),e=(()=>f!==null?(f&X.Open)===X.Open:S===0)(),P=A(y=>{if(Ae(y.currentTarget))return y.preventDefault();i({type:1})}),v=G(()=>({open:S===0}),[S]);return Z({ourProps:{ref:l,id:C,"aria-hidden":!0,onClick:P},theirProps:T,slot:v,defaultTag:pt,features:st,visible:e,name:"Popover.Overlay"})}let it="div",ft=ne.RenderStrategy|ne.Static;function Pt(t,a){let u=re(),{id:C=`headlessui-popover-panel-${u}`,focus:T=!1,anchor:S,portal:i=!1,modal:l=!1,...f}=t,[e,P]=le("Popover.Panel"),{close:v,isPortalled:_}=Te("Popover.Panel"),y=`headlessui-focus-sentinel-before-${u}`,j=`headlessui-focus-sentinel-after-${u}`,n=z(null),s=je(S),[E,x]=we(s),L=We();s&&(i=!0);let h=J(n,a,s?E:null,d=>{P({type:4,panel:d})}),F=ue(n),R=Ye();Le(()=>(P({type:5,panelId:C}),()=>{P({type:5,panelId:null})}),[C,P]);let D=Se(),I=(()=>D!==null?(D&X.Open)===X.Open:e.popoverState===0)();Ie(I,e.button,()=>{P({type:1})});let K=e.__demoMode?!1:l&&I;He(K,F);let $=A(d=>{var g;switch(d.key){case V.Escape:if(e.popoverState!==0||!n.current||F!=null&&F.activeElement&&!n.current.contains(F.activeElement))return;d.preventDefault(),d.stopPropagation(),P({type:1}),(g=e.button)==null||g.focus();break}});oe(()=>{var d;t.static||e.popoverState===1&&((d=t.unmount)==null||d)&&P({type:4,panel:null})},[e.popoverState,t.unmount,t.static,P]),oe(()=>{if(e.__demoMode||!T||e.popoverState!==0||!n.current)return;let d=F==null?void 0:F.activeElement;n.current.contains(d)||w(n.current,U.First)},[e.__demoMode,T,n,e.popoverState]);let H=G(()=>({open:e.popoverState===0,close:v}),[e,v]),Y=ce(s?L():{},{ref:h,id:C,onKeyDown:$,onBlur:T&&e.popoverState===0?d=>{var o,p,r,c,m;let g=d.relatedTarget;g&&n.current&&((o=n.current)!=null&&o.contains(g)||(P({type:1}),((r=(p=e.beforePanelSentinel.current)==null?void 0:p.contains)!=null&&r.call(p,g)||(m=(c=e.afterPanelSentinel.current)==null?void 0:c.contains)!=null&&m.call(c,g))&&g.focus({preventScroll:!0})))}:void 0,tabIndex:-1,style:{...f.style,...x,"--button-width":_e(e.button,!0).width}}),B=ge(),N=A(()=>{let d=n.current;if(!d)return;function g(){W(B.current,{[k.Forwards]:()=>{var p;w(d,U.First)===Pe.Error&&((p=e.afterPanelSentinel.current)==null||p.focus())},[k.Backwards]:()=>{var o;(o=e.button)==null||o.focus({preventScroll:!0})}})}g()}),q=A(()=>{let d=n.current;if(!d)return;function g(){W(B.current,{[k.Forwards]:()=>{var O;if(!e.button)return;let o=de(),p=o.indexOf(e.button),r=o.slice(0,p+1),m=[...o.slice(p+1),...r];for(let M of m.slice())if(M.dataset.headlessuiFocusGuard==="true"||(O=e.panel)!=null&&O.contains(M)){let ye=m.indexOf(M);ye!==-1&&m.splice(ye,1)}w(m,U.First,{sorted:!1})},[k.Backwards]:()=>{var p;w(d,U.Previous)===Pe.Error&&((p=e.button)==null||p.focus())}})}g()});return b.createElement(pe.Provider,{value:C},b.createElement(ae.Provider,{value:{close:v,isPortalled:_}},b.createElement(qe,{enabled:i?t.static||I:!1},I&&_&&b.createElement(ie,{id:y,ref:e.beforePanelSentinel,features:fe.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:N}),Z({mergeRefs:R,ourProps:Y,theirProps:f,slot:H,defaultTag:it,features:ft,visible:I,name:"Popover.Panel"}),I&&_&&b.createElement(ie,{id:j,ref:e.afterPanelSentinel,features:fe.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:q}))))}let dt="div";function ct(t,a){let u=z(null),C=J(u,a),[T,S]=Ee([]),i=De(),l=A(n=>{S(s=>{let E=s.indexOf(n);if(E!==-1){let x=s.slice();return x.splice(E,1),x}return s})}),f=A(n=>(S(s=>[...s,n]),()=>l(n))),e=A(()=>{var E;let n=Xe(u);if(!n)return!1;let s=n.activeElement;return(E=u.current)!=null&&E.contains(s)?!0:T.some(x=>{var L,h;return((L=n.getElementById(x.buttonId.current))==null?void 0:L.contains(s))||((h=n.getElementById(x.panelId.current))==null?void 0:h.contains(s))})}),P=A(n=>{for(let s of T)s.buttonId.current!==n&&s.close()}),v=G(()=>({registerPopover:f,unregisterPopover:l,isFocusWithinPopoverGroup:e,closeOthers:P,mainTreeNodeRef:i.mainTreeNodeRef}),[f,l,e,P,i.mainTreeNodeRef]),_=G(()=>({}),[]),y=t,j={ref:C};return b.createElement(me.Provider,{value:v},Z({ourProps:j,theirProps:y,slot:_,defaultTag:dt,name:"Popover.Group"}),b.createElement(i.MainTreeNode,null))}let vt=Q(nt),Tt=Q(at),mt=Q(ut),yt=Q(Pt),Et=Q(ct),zt=Object.assign(vt,{Button:Tt,Overlay:mt,Panel:yt,Group:Et});export{zt as Popover,Tt as PopoverButton,Et as PopoverGroup,mt as PopoverOverlay,yt as PopoverPanel}; |
@@ -9,4 +9,6 @@ import React, { type ElementType, type MutableRefObject, type Ref } from 'react'; | ||
type PortalPropsWeControl = never; | ||
export type PortalProps<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = Props<TTag, PortalRenderPropArg, PortalPropsWeControl>; | ||
declare function PortalFn<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(props: PortalProps<TTag>, ref: Ref<HTMLElement>): React.ReactPortal | null; | ||
export type PortalProps<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = Props<TTag, PortalRenderPropArg, PortalPropsWeControl, { | ||
enabled?: boolean; | ||
}>; | ||
declare function PortalFn<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(props: PortalProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element | null; | ||
declare let DEFAULT_GROUP_TAG: React.ExoticComponent<{ | ||
@@ -32,4 +34,5 @@ children?: React.ReactNode; | ||
export declare let Portal: _internal_ComponentPortal & { | ||
/** @deprecated use `<PortalGroup>` instead of `<Portal.Group>` */ | ||
Group: _internal_ComponentPortalGroup; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import P,{Fragment as T,createContext as m,useContext as s,useEffect as d,useMemo as y,useRef as g,useState as R}from"react";import{createPortal as M}from"react-dom";import{useEvent as E}from'../../hooks/use-event.js';import{useIsoMorphicEffect as c}from'../../hooks/use-iso-morphic-effect.js';import{useOnUnmount as H}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as G}from'../../hooks/use-owner.js';import{useServerHandoffComplete as O}from'../../hooks/use-server-handoff-complete.js';import{optionalRef as b,useSyncRefs as x}from'../../hooks/use-sync-refs.js';import{usePortalRoot as h}from'../../internal/portal-force-root.js';import{env as A}from'../../utils/env.js';import{forwardRefWithAs as L,render as _}from'../../utils/render.js';function F(a){let l=h(),n=s(C),e=G(a),[p,o]=R(()=>{if(!l&&n!==null||A.isServer)return null;let t=e==null?void 0:e.getElementById("headlessui-portal-root");if(t)return t;if(e===null)return null;let r=e.createElement("div");return r.setAttribute("id","headlessui-portal-root"),e.body.appendChild(r)});return d(()=>{p!==null&&(e!=null&&e.body.contains(p)||e==null||e.body.appendChild(p))},[p,e]),d(()=>{l||n!==null&&o(n.current)},[n,o,l]),p}let U=T;function D(a,l){let n=a,e=g(null),p=x(b(u=>{e.current=u}),l),o=G(e),t=F(e),[r]=R(()=>{var u;return A.isServer?null:(u=o==null?void 0:o.createElement("div"))!=null?u:null}),i=s(f),v=O();return c(()=>{!t||!r||t.contains(r)||(r.setAttribute("data-headlessui-portal",""),t.appendChild(r))},[t,r]),c(()=>{if(r&&i)return i.register(r)},[i,r]),H(()=>{var u;!t||!r||(r instanceof Node&&t.contains(r)&&t.removeChild(r),t.childNodes.length<=0&&((u=t.parentElement)==null||u.removeChild(t)))}),v?!t||!r?null:M(_({ourProps:{ref:p},theirProps:n,slot:{},defaultTag:U,name:"Portal"}),r):null}let N=T,C=m(null);function S(a,l){let{target:n,...e}=a,o={ref:x(l)};return P.createElement(C.Provider,{value:n},_({ourProps:o,theirProps:e,defaultTag:N,name:"Popover.Group"}))}let f=m(null);function $(){let a=s(f),l=g([]),n=E(o=>(l.current.push(o),a&&a.register(o),()=>e(o))),e=E(o=>{let t=l.current.indexOf(o);t!==-1&&l.current.splice(t,1),a&&a.unregister(o)}),p=y(()=>({register:n,unregister:e,portals:l}),[n,e,l]);return[l,y(()=>function({children:t}){return P.createElement(f.Provider,{value:p},t)},[p])]}let j=L(D),W=L(S),w=Object.assign(j,{Group:W});export{w as Portal,W as PortalGroup,$ as useNestedPortals}; | ||
"use client";import f,{Fragment as g,createContext as E,useContext as T,useEffect as R,useMemo as c,useRef as A,useState as G}from"react";import{createPortal as H}from"react-dom";import{useEvent as L}from'../../hooks/use-event.js';import{useIsoMorphicEffect as x}from'../../hooks/use-iso-morphic-effect.js';import{useOnUnmount as O}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as _}from'../../hooks/use-owner.js';import{useServerHandoffComplete as h}from'../../hooks/use-server-handoff-complete.js';import{optionalRef as F,useSyncRefs as P}from'../../hooks/use-sync-refs.js';import{usePortalRoot as U}from'../../internal/portal-force-root.js';import{env as C}from'../../utils/env.js';import{forwardRefWithAs as m,render as d}from'../../utils/render.js';function D(p){let r=U(),l=T(v),e=_(p),[o,n]=G(()=>{var t;if(!r&&l!==null)return(t=l.current)!=null?t:null;if(C.isServer)return null;let u=e==null?void 0:e.getElementById("headlessui-portal-root");if(u)return u;if(e===null)return null;let a=e.createElement("div");return a.setAttribute("id","headlessui-portal-root"),e.body.appendChild(a)});return R(()=>{o!==null&&(e!=null&&e.body.contains(o)||e==null||e.body.appendChild(o))},[o,e]),R(()=>{r||l!==null&&n(l.current)},[l,n,r]),o}let M=g,N=m(function(r,l){let e=r,o=A(null),n=P(F(i=>{o.current=i}),l),u=_(o),a=D(o),[t]=G(()=>{var i;return C.isServer?null:(i=u==null?void 0:u.createElement("div"))!=null?i:null}),s=T(y),b=h();return x(()=>{!a||!t||a.contains(t)||(t.setAttribute("data-headlessui-portal",""),a.appendChild(t))},[a,t]),x(()=>{if(t&&s)return s.register(t)},[s,t]),O(()=>{var i;!a||!t||(t instanceof Node&&a.contains(t)&&a.removeChild(t),a.childNodes.length<=0&&((i=a.parentElement)==null||i.removeChild(a)))}),b?!a||!t?null:H(d({ourProps:{ref:n},theirProps:e,slot:{},defaultTag:M,name:"Portal"}),t):null});function S(p,r){let l=P(r),{enabled:e=!0,...o}=p;return e?f.createElement(N,{...o,ref:l}):d({ourProps:{ref:l},theirProps:o,slot:{},defaultTag:M,name:"Portal"})}let j=g,v=E(null);function W(p,r){let{target:l,...e}=p,n={ref:P(r)};return f.createElement(v.Provider,{value:l},d({ourProps:n,theirProps:e,defaultTag:j,name:"Popover.Group"}))}let y=E(null);function ee(){let p=T(y),r=A([]),l=L(n=>(r.current.push(n),p&&p.register(n),()=>e(n))),e=L(n=>{let u=r.current.indexOf(n);u!==-1&&r.current.splice(u,1),p&&p.unregister(n)}),o=c(()=>({register:l,unregister:e,portals:r}),[l,e,r]);return[r,c(()=>function({children:u}){return f.createElement(y.Provider,{value:o},u)},[o])]}let I=m(S),J=m(W),te=Object.assign(I,{Group:J});export{te as Portal,J as PortalGroup,ee as useNestedPortals}; |
@@ -68,2 +68,3 @@ import React, { type ElementType, type Ref } from 'react'; | ||
declare let RadioGroupRoot: _internal_ComponentRadioGroup; | ||
/** @deprecated use `<Radio>` instead of `<RadioGroupOption>` */ | ||
export declare let RadioGroupOption: _internal_ComponentRadioOption; | ||
@@ -76,3 +77,6 @@ export declare let Radio: _internal_ComponentRadio; | ||
export declare let RadioGroup: _internal_ComponentRadioGroup & { | ||
/** @deprecated use `<Radio>` instead of `<RadioGroup.Option>` */ | ||
Option: _internal_ComponentRadioOption; | ||
/** @deprecated use `<Radio>` instead of `<RadioGroup.Radio>` */ | ||
Radio: _internal_ComponentRadio; | ||
/** @deprecated use `<Label>` instead of `<RadioGroup.Label>` */ | ||
@@ -79,0 +83,0 @@ Label: _internal_ComponentRadioLabel; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as Q}from"@react-aria/focus";import{useHover as Y}from"@react-aria/interactions";import G,{createContext as Z,useCallback as me,useContext as ee,useMemo as x,useReducer as ye,useRef as B}from"react";import{useByComparator as Re}from'../../hooks/use-by-comparator.js';import{useControllable as be}from'../../hooks/use-controllable.js';import{useEvent as S}from'../../hooks/use-event.js';import{useId as K}from'../../hooks/use-id.js';import{useIsoMorphicEffect as oe}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as te}from'../../hooks/use-latest-value.js';import{useSyncRefs as $}from'../../hooks/use-sync-refs.js';import{useDisabled as re}from'../../internal/disabled.js';import{FormFields as ge}from'../../internal/form-fields.js';import{useProvidedId as Oe}from'../../internal/id.js';import{isDisabledReactIssue7711 as ne}from'../../utils/bugs.js';import{Focus as N,FocusResult as ie,focusIn as ae,sortByDomNode as Pe}from'../../utils/focus-management.js';import{attemptSubmit as ve}from'../../utils/form.js';import{match as De}from'../../utils/match.js';import{getOwnerDocument as Ae}from'../../utils/owner.js';import{forwardRefWithAs as j,mergeProps as pe,render as V}from'../../utils/render.js';import{Description as _e,useDescribedBy as Ee,useDescriptions as le}from'../description/description.js';import{Keys as F}from'../keyboard.js';import{Label as Ge,useLabelledBy as xe,useLabels as se}from'../label/label.js';var Ce=(o=>(o[o.RegisterOption=0]="RegisterOption",o[o.UnregisterOption=1]="UnregisterOption",o))(Ce||{});let he={[0](e,t){let o=[...e.options,{id:t.id,element:t.element,propsRef:t.propsRef}];return{...e,options:Pe(o,a=>a.element.current)}},[1](e,t){let o=e.options.slice(),a=e.options.findIndex(y=>y.id===t.id);return a===-1?e:(o.splice(a,1),{...e,options:o})}},J=Z(null);J.displayName="RadioGroupDataContext";function X(e){let t=ee(J);if(t===null){let o=new Error(`<${e} /> is missing a parent <RadioGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,X),o}return t}let z=Z(null);z.displayName="RadioGroupActionsContext";function q(e){let t=ee(z);if(t===null){let o=new Error(`<${e} /> is missing a parent <RadioGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,q),o}return t}function Le(e,t){return De(t.type,he,e,t)}let ke="div";function Fe(e,t){let o=K(),a=re(),{id:y=`headlessui-radiogroup-${o}`,value:C,defaultValue:h,form:u,name:b,onChange:p,by:I,disabled:f=a||!1,...U}=e,T=Re(I),[c,R]=ye(Le,{options:[]}),l=c.options,[L,s]=se(),[g,w]=le(),D=B(null),O=$(D,t),[n,A]=be(C,p,h),_=x(()=>l.find(r=>!r.propsRef.current.disabled),[l]),P=x(()=>l.some(r=>T(r.propsRef.current.value,n)),[l,n]),i=S(r=>{var d;if(f||T(r,n))return!1;let k=(d=l.find(H=>T(H.propsRef.current.value,r)))==null?void 0:d.propsRef.current;return k!=null&&k.disabled?!1:(A==null||A(r),!0)}),m=S(r=>{let k=D.current;if(!k)return;let d=Ae(k),H=l.filter(v=>v.propsRef.current.disabled===!1).map(v=>v.element.current);switch(r.key){case F.Enter:ve(r.currentTarget);break;case F.ArrowLeft:case F.ArrowUp:if(r.preventDefault(),r.stopPropagation(),ae(H,N.Previous|N.WrapAround)===ie.Success){let E=l.find(W=>W.element.current===(d==null?void 0:d.activeElement));E&&i(E.propsRef.current.value)}break;case F.ArrowRight:case F.ArrowDown:if(r.preventDefault(),r.stopPropagation(),ae(H,N.Next|N.WrapAround)===ie.Success){let E=l.find(W=>W.element.current===(d==null?void 0:d.activeElement));E&&i(E.propsRef.current.value)}break;case F.Space:{r.preventDefault(),r.stopPropagation();let v=l.find(E=>E.element.current===(d==null?void 0:d.activeElement));v&&i(v.propsRef.current.value)}break}}),M=S(r=>(R({type:0,...r}),()=>R({type:1,id:r.id}))),de=x(()=>({value:n,firstOption:_,containsCheckedOption:P,disabled:f,compare:T,...c}),[n,_,P,f,T,c]),ue=x(()=>({registerOption:M,change:i}),[M,i]),ce={ref:O,id:y,role:"radiogroup","aria-labelledby":L,"aria-describedby":g,onKeyDown:m},fe=x(()=>({value:n}),[n]),Te=me(()=>i(h),[i]);return G.createElement(w,{name:"RadioGroup.Description"},G.createElement(s,{name:"RadioGroup.Label"},G.createElement(z.Provider,{value:ue},G.createElement(J.Provider,{value:de},b!=null&&G.createElement(ge,{data:n!=null?{[b]:n||"on"}:{},form:u,onReset:Te}),V({ourProps:ce,theirProps:U,slot:fe,defaultTag:ke,name:"RadioGroup"})))))}let Ie="div";function Ue(e,t){var P,i;let o=K(),{id:a=`headlessui-radiogroup-option-${o}`,value:y,disabled:C=!1,...h}=e,u=B(null),b=$(u,t),[p,I]=se(),[f,U]=le(),T=te({value:y,disabled:C}),c=X("RadioGroup.Option"),R=q("RadioGroup.Option");oe(()=>R.registerOption({id:a,element:u,propsRef:T}),[a,R,u,T]);let l=S(m=>{var M;if(ne(m.currentTarget))return m.preventDefault();R.change(y)&&((M=u.current)==null||M.focus())}),L=((P=c.firstOption)==null?void 0:P.id)===a,s=c.disabled||C,{isFocusVisible:g,focusProps:w}=Q({autoFocus:(i=e.autoFocus)!=null?i:!1}),{isHovered:D,hoverProps:O}=Y({isDisabled:s!=null?s:!1}),n=c.compare(c.value,y),A=pe({ref:b,id:a,role:"radio","aria-checked":n?"true":"false","aria-labelledby":p,"aria-describedby":f,"aria-disabled":s?!0:void 0,tabIndex:(()=>s?-1:n||!c.containsCheckedOption&&L?0:-1)(),onClick:s?void 0:l},w,O),_=x(()=>{var m;return{checked:n,disabled:s,active:g,hover:D,focus:g,autofocus:(m=e.autoFocus)!=null?m:!1}},[n,s,D,g,e.autoFocus]);return G.createElement(U,{name:"RadioGroup.Description"},G.createElement(I,{name:"RadioGroup.Label"},V({ourProps:A,theirProps:h,slot:_,defaultTag:Ie,name:"RadioGroup.Option"})))}let we="span";function Me(e,t){var _,P;let o=X("Radio"),a=q("Radio"),y=K(),C=Oe(),h=re(),{id:u=C||`headlessui-radio-${y}`,value:b,disabled:p=o.disabled||h||!1,...I}=e,f=B(null),U=$(f,t),T=xe(),c=Ee(),R=te({value:b,disabled:p});oe(()=>a.registerOption({id:u,element:f,propsRef:R}),[u,a,f,R]);let l=S(i=>{var m;if(ne(i.currentTarget))return i.preventDefault();a.change(b)&&((m=f.current)==null||m.focus())}),{isFocusVisible:L,focusProps:s}=Q({autoFocus:(_=e.autoFocus)!=null?_:!1}),{isHovered:g,hoverProps:w}=Y({isDisabled:p!=null?p:!1}),D=((P=o.firstOption)==null?void 0:P.id)===u,O=o.compare(o.value,b),n=pe({ref:U,id:u,role:"radio","aria-checked":O?"true":"false","aria-labelledby":T,"aria-describedby":c,"aria-disabled":p?!0:void 0,tabIndex:(()=>p?-1:O||!o.containsCheckedOption&&D?0:-1)(),onClick:p?void 0:l},s,w),A=x(()=>{var i;return{checked:O,disabled:p,hover:g,focus:L,autofocus:(i=e.autoFocus)!=null?i:!1}},[O,p,g,L,e.autoFocus]);return V({ourProps:n,theirProps:I,slot:A,defaultTag:we,name:"Radio"})}let Se=j(Fe),He=j(Ue),uo=j(Me),Ne=Ge,We=_e,co=Object.assign(Se,{Option:He,Label:Ne,Description:We});export{uo as Radio,co as RadioGroup,We as RadioGroupDescription,Ne as RadioGroupLabel,He as RadioGroupOption}; | ||
"use client";import{useFocusRing as Q}from"@react-aria/focus";import{useHover as Y}from"@react-aria/interactions";import G,{createContext as Z,useCallback as ye,useContext as ee,useMemo as x,useReducer as Re,useRef as W}from"react";import{useByComparator as be}from'../../hooks/use-by-comparator.js';import{useControllable as ge}from'../../hooks/use-controllable.js';import{useDefaultValue as Oe}from'../../hooks/use-default-value.js';import{useEvent as S}from'../../hooks/use-event.js';import{useId as B}from'../../hooks/use-id.js';import{useIsoMorphicEffect as te}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as oe}from'../../hooks/use-latest-value.js';import{useSyncRefs as V}from'../../hooks/use-sync-refs.js';import{useDisabled as re}from'../../internal/disabled.js';import{FormFields as Pe}from'../../internal/form-fields.js';import{useProvidedId as ve}from'../../internal/id.js';import{isDisabledReactIssue7711 as ie}from'../../utils/bugs.js';import{Focus as w,FocusResult as ne,focusIn as ae,sortByDomNode as De}from'../../utils/focus-management.js';import{attemptSubmit as Ae}from'../../utils/form.js';import{match as _e}from'../../utils/match.js';import{getOwnerDocument as Ee}from'../../utils/owner.js';import{forwardRefWithAs as K,mergeProps as pe,render as $}from'../../utils/render.js';import{Description as Ge,useDescribedBy as xe,useDescriptions as le}from'../description/description.js';import{Keys as F}from'../keyboard.js';import{Label as Ce,useLabelledBy as he,useLabels as se}from'../label/label.js';var Le=(e=>(e[e.RegisterOption=0]="RegisterOption",e[e.UnregisterOption=1]="UnregisterOption",e))(Le||{});let ke={[0](o,t){let e=[...o.options,{id:t.id,element:t.element,propsRef:t.propsRef}];return{...o,options:De(e,a=>a.element.current)}},[1](o,t){let e=o.options.slice(),a=o.options.findIndex(O=>O.id===t.id);return a===-1?o:(e.splice(a,1),{...o,options:e})}},j=Z(null);j.displayName="RadioGroupDataContext";function J(o){let t=ee(j);if(t===null){let e=new Error(`<${o} /> is missing a parent <RadioGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,J),e}return t}let X=Z(null);X.displayName="RadioGroupActionsContext";function z(o){let t=ee(X);if(t===null){let e=new Error(`<${o} /> is missing a parent <RadioGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,z),e}return t}function Fe(o,t){return _e(t.type,ke,o,t)}let Ie="div";function Ue(o,t){let e=B(),a=re(),{id:O=`headlessui-radiogroup-${e}`,value:m,form:P,name:i,onChange:f,by:c,disabled:p=a||!1,defaultValue:I,...y}=o,T=be(c),[v,C]=Re(Fe,{options:[]}),n=v.options,[U,h]=se(),[D,L]=le(),A=W(null),M=V(A,t),l=Oe(I),[s,_]=ge(m,f,l),R=x(()=>n.find(r=>!r.propsRef.current.disabled),[n]),b=x(()=>n.some(r=>T(r.propsRef.current.value,s)),[n,s]),d=S(r=>{var u;if(p||T(r,s))return!1;let k=(u=n.find(H=>T(H.propsRef.current.value,r)))==null?void 0:u.propsRef.current;return k!=null&&k.disabled?!1:(_==null||_(r),!0)}),de=S(r=>{let k=A.current;if(!k)return;let u=Ee(k),H=n.filter(g=>g.propsRef.current.disabled===!1).map(g=>g.element.current);switch(r.key){case F.Enter:Ae(r.currentTarget);break;case F.ArrowLeft:case F.ArrowUp:if(r.preventDefault(),r.stopPropagation(),ae(H,w.Previous|w.WrapAround)===ne.Success){let E=n.find(N=>N.element.current===(u==null?void 0:u.activeElement));E&&d(E.propsRef.current.value)}break;case F.ArrowRight:case F.ArrowDown:if(r.preventDefault(),r.stopPropagation(),ae(H,w.Next|w.WrapAround)===ne.Success){let E=n.find(N=>N.element.current===(u==null?void 0:u.activeElement));E&&d(E.propsRef.current.value)}break;case F.Space:{r.preventDefault(),r.stopPropagation();let g=n.find(E=>E.element.current===(u==null?void 0:u.activeElement));g&&d(g.propsRef.current.value)}break}}),q=S(r=>(C({type:0,...r}),()=>C({type:1,id:r.id}))),ue=x(()=>({value:s,firstOption:R,containsCheckedOption:b,disabled:p,compare:T,...v}),[s,R,b,p,T,v]),ce=x(()=>({registerOption:q,change:d}),[q,d]),fe={ref:M,id:O,role:"radiogroup","aria-labelledby":U,"aria-describedby":D,onKeyDown:de},Te=x(()=>({value:s}),[s]),me=ye(()=>{if(l!==void 0)return d(l)},[d,l]);return G.createElement(L,{name:"RadioGroup.Description"},G.createElement(h,{name:"RadioGroup.Label"},G.createElement(X.Provider,{value:ce},G.createElement(j.Provider,{value:ue},i!=null&&G.createElement(Pe,{disabled:p,data:{[i]:s||"on"},overrides:{type:"radio",checked:s!=null},form:P,onReset:me}),$({ourProps:fe,theirProps:y,slot:Te,defaultTag:Ie,name:"RadioGroup"})))))}let Me="div";function Se(o,t){var R;let e=J("RadioGroup.Option"),a=z("RadioGroup.Option"),O=B(),{id:m=`headlessui-radiogroup-option-${O}`,value:P,disabled:i=e.disabled||!1,autoFocus:f=!1,...c}=o,p=W(null),I=V(p,t),[y,T]=se(),[v,C]=le(),n=oe({value:P,disabled:i});te(()=>a.registerOption({id:m,element:p,propsRef:n}),[m,a,p,n]);let U=S(b=>{var d;if(ie(b.currentTarget))return b.preventDefault();a.change(P)&&((d=p.current)==null||d.focus())}),h=((R=e.firstOption)==null?void 0:R.id)===m,{isFocusVisible:D,focusProps:L}=Q({autoFocus:f}),{isHovered:A,hoverProps:M}=Y({isDisabled:i}),l=e.compare(e.value,P),s=pe({ref:I,id:m,role:"radio","aria-checked":l?"true":"false","aria-labelledby":y,"aria-describedby":v,"aria-disabled":i?!0:void 0,tabIndex:(()=>i?-1:l||!e.containsCheckedOption&&h?0:-1)(),onClick:i?void 0:U,autoFocus:f},L,M),_=x(()=>({checked:l,disabled:i,active:D,hover:A,focus:D,autofocus:f}),[l,i,A,D,f]);return G.createElement(C,{name:"RadioGroup.Description"},G.createElement(T,{name:"RadioGroup.Label"},$({ourProps:s,theirProps:c,slot:_,defaultTag:Me,name:"RadioGroup.Option"})))}let He="span";function we(o,t){var R;let e=J("Radio"),a=z("Radio"),O=B(),m=ve(),P=re(),{id:i=m||`headlessui-radio-${O}`,value:f,disabled:c=e.disabled||P||!1,autoFocus:p=!1,...I}=o,y=W(null),T=V(y,t),v=he(),C=xe(),n=oe({value:f,disabled:c});te(()=>a.registerOption({id:i,element:y,propsRef:n}),[i,a,y,n]);let U=S(b=>{var d;if(ie(b.currentTarget))return b.preventDefault();a.change(f)&&((d=y.current)==null||d.focus())}),{isFocusVisible:h,focusProps:D}=Q({autoFocus:p}),{isHovered:L,hoverProps:A}=Y({isDisabled:c}),M=((R=e.firstOption)==null?void 0:R.id)===i,l=e.compare(e.value,f),s=pe({ref:T,id:i,role:"radio","aria-checked":l?"true":"false","aria-labelledby":v,"aria-describedby":C,"aria-disabled":c?!0:void 0,tabIndex:(()=>c?-1:l||!e.containsCheckedOption&&M?0:-1)(),autoFocus:p,onClick:c?void 0:U},D,A),_=x(()=>({checked:l,disabled:c,hover:L,focus:h,autofocus:p}),[l,c,L,h,p]);return $({ourProps:s,theirProps:I,slot:_,defaultTag:He,name:"Radio"})}let Ne=K(Ue),We=K(Se),Be=K(we),Ve=Ce,Ke=Ge,Tt=Object.assign(Ne,{Option:We,Radio:Be,Label:Ve,Description:Ke});export{Be as Radio,Tt as RadioGroup,Ke as RadioGroupDescription,Ve as RadioGroupLabel,We as RadioGroupOption}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as v}from"@react-aria/focus";import{useHover as A}from"@react-aria/interactions";import{useMemo as F}from"react";import{useActivePress as g}from'../../hooks/use-active-press.js';import{useId as _}from'../../hooks/use-id.js';import{useDisabled as D}from'../../internal/disabled.js';import{useProvidedId as L}from'../../internal/id.js';import{forwardRefWithAs as R,mergeProps as C,render as x}from'../../utils/render.js';import{useDescribedBy as h}from'../description/description.js';import{useLabelledBy as H}from'../label/label.js';let B="select";function G(o,n){var a;let p=_(),d=L(),c=D(),{id:f=d||`headlessui-select-${p}`,disabled:e=c||!1,invalid:t=!1,...u}=o,m=H(),T=h(),{isFocusVisible:r,focusProps:y}=v({autoFocus:(a=o.autoFocus)!=null?a:!1}),{isHovered:l,hoverProps:b}=A({isDisabled:e!=null?e:!1}),{pressed:s,pressProps:P}=g({disabled:e!=null?e:!1}),S=C({ref:n,id:f,"aria-labelledby":m,"aria-describedby":T,"aria-invalid":t?"":void 0,disabled:e||void 0},y,b,P),E=F(()=>{var i;return{disabled:e,invalid:t,hover:l,focus:r,active:s,autofocus:(i=o.autoFocus)!=null?i:!1}},[e,t,l,r,s,o.autoFocus]);return x({ourProps:S,theirProps:u,slot:E,defaultTag:B,name:"Select"})}let $=R(G);export{$ as Select}; | ||
"use client";import{useFocusRing as E}from"@react-aria/focus";import{useHover as v}from"@react-aria/interactions";import{useMemo as A}from"react";import{useActivePress as g}from'../../hooks/use-active-press.js';import{useId as _}from'../../hooks/use-id.js';import{useDisabled as D}from'../../internal/disabled.js';import{useProvidedId as F}from'../../internal/id.js';import{forwardRefWithAs as L,mergeProps as R,render as C}from'../../utils/render.js';import{useDescribedBy as x}from'../description/description.js';import{useLabelledBy as h}from'../label/label.js';let H="select";function B(a,i){let p=_(),d=F(),n=D(),{id:c=d||`headlessui-select-${p}`,disabled:e=n||!1,invalid:t=!1,autoFocus:o=!1,...f}=a,m=h(),u=x(),{isFocusVisible:r,focusProps:T}=E({autoFocus:o}),{isHovered:l,hoverProps:b}=v({isDisabled:e}),{pressed:s,pressProps:y}=g({disabled:e}),P=R({ref:i,id:c,"aria-labelledby":m,"aria-describedby":u,"aria-invalid":t?"":void 0,disabled:e||void 0,autoFocus:o},T,b,y),S=A(()=>({disabled:e,invalid:t,hover:l,focus:r,active:s,autofocus:o}),[e,t,l,r,s,o]);return C({ourProps:P,theirProps:f,slot:S,defaultTag:H,name:"Select"})}let $=L(B);export{$ as Select}; |
@@ -21,3 +21,3 @@ import React, { type ElementType, type Ref } from 'react'; | ||
}; | ||
type SwitchPropsWeControl = 'aria-checked' | 'aria-describedby' | 'aria-labelledby' | 'role' | 'tabIndex'; | ||
type SwitchPropsWeControl = 'aria-checked' | 'aria-describedby' | 'aria-labelledby' | 'role'; | ||
export type SwitchProps<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> = Props<TTag, SwitchRenderPropArg, SwitchPropsWeControl, { | ||
@@ -32,2 +32,3 @@ checked?: boolean; | ||
disabled?: boolean; | ||
tabIndex?: number; | ||
}>; | ||
@@ -45,2 +46,3 @@ declare function SwitchFn<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG>(props: SwitchProps<TTag>, ref: Ref<HTMLButtonElement>): React.JSX.Element; | ||
} | ||
/** @deprecated use `<Field>` instead of `<SwitchGroup>` */ | ||
export declare let SwitchGroup: _internal_ComponentSwitchGroup; | ||
@@ -52,2 +54,3 @@ /** @deprecated use `<Label>` instead of `<SwitchLabel>` */ | ||
export declare let Switch: _internal_ComponentSwitch & { | ||
/** @deprecated use `<Field>` instead of `<Switch.Group>` */ | ||
Group: _internal_ComponentSwitchGroup; | ||
@@ -54,0 +57,0 @@ /** @deprecated use `<Label>` instead of `<Switch.Label>` */ |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as j}from"@react-aria/focus";import{useHover as V}from"@react-aria/interactions";import l,{Fragment as $,createContext as q,useCallback as z,useContext as Q,useMemo as C,useRef as Y,useState as L}from"react";import{useActivePress as Z}from'../../hooks/use-active-press.js';import{useControllable as ee}from'../../hooks/use-controllable.js';import{useDisposables as te}from'../../hooks/use-disposables.js';import{useEvent as m}from'../../hooks/use-event.js';import{useId as oe}from'../../hooks/use-id.js';import{useResolveButtonType as re}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as ne}from'../../hooks/use-sync-refs.js';import{useDisabled as le}from'../../internal/disabled.js';import{FormFields as ie}from'../../internal/form-fields.js';import{useProvidedId as ae}from'../../internal/id.js';import{isDisabledReactIssue7711 as se}from'../../utils/bugs.js';import{attemptSubmit as pe}from'../../utils/form.js';import{forwardRefWithAs as ce,mergeProps as ue,render as x}from'../../utils/render.js';import{Description as me,useDescribedBy as de,useDescriptions as fe}from'../description/description.js';import{Keys as G}from'../keyboard.js';import{Label as he,useLabelledBy as Te,useLabels as be}from'../label/label.js';let b=q(null);b.displayName="GroupContext";let ye=$;function Se(o){var i;let[r,s]=L(null),[d,f]=be(),[h,t]=fe(),p=C(()=>({switch:r,setSwitch:s}),[r,s]),c={},T=o;return l.createElement(t,{name:"Switch.Description",value:h},l.createElement(f,{name:"Switch.Label",value:d,props:{htmlFor:(i=p.switch)==null?void 0:i.id,onClick(u){r&&(u.currentTarget instanceof HTMLLabelElement&&u.preventDefault(),r.click(),r.focus({preventScroll:!0}))}}},l.createElement(b.Provider,{value:p},x({ourProps:c,theirProps:T,slot:{},defaultTag:ye,name:"Switch.Group"}))))}let we="button";function _e(o,r){var v;let s=oe(),d=ae(),f=le(),{id:h=d||`headlessui-switch-${s}`,disabled:t=f||!1,checked:p,defaultChecked:c=!1,onChange:T,name:i,value:u,form:F,...R}=o,y=Q(b),S=Y(null),A=ne(S,r,y===null?null:y.setSwitch),[a,n]=ee(p,T,c),k=te(),[w,_]=L(!1),P=m(()=>{_(!0),n==null||n(!a),k.nextFrame(()=>{_(!1)})}),H=m(e=>{if(se(e.currentTarget))return e.preventDefault();e.preventDefault(),P()}),M=m(e=>{e.key===G.Space?(e.preventDefault(),P()):e.key===G.Enter&&pe(e.currentTarget)}),U=m(e=>e.preventDefault()),B=Te(),I=de(),{isFocusVisible:E,focusProps:K}=j({autoFocus:(v=o.autoFocus)!=null?v:!1}),{isHovered:g,hoverProps:W}=V({isDisabled:t!=null?t:!1}),{pressed:D,pressProps:O}=Z({disabled:t!=null?t:!1}),N=C(()=>{var e;return{checked:a,disabled:t,hover:g,focus:E,active:D,autofocus:(e=o.autoFocus)!=null?e:!1,changing:w}},[a,g,E,D,t,w,o.autoFocus]),J=ue({id:h,ref:A,role:"switch",type:re(o,S),tabIndex:0,"aria-checked":a,"aria-labelledby":B,"aria-describedby":I,disabled:t,onClick:H,onKeyUp:M,onKeyPress:U},K,W,O),X=z(()=>n==null?void 0:n(c),[n]);return l.createElement(l.Fragment,null,i!=null&&l.createElement(ie,{data:a?{[i]:u||"on"}:{},form:F,onReset:X}),x({ourProps:J,theirProps:R,slot:N,defaultTag:we,name:"Switch"}))}let Pe=ce(_e),Ee=Se,ge=he,De=me,Xe=Object.assign(Pe,{Group:Ee,Label:ge,Description:De});export{Xe as Switch,De as SwitchDescription,Ee as SwitchGroup,ge as SwitchLabel}; | ||
"use client";import{useFocusRing as $}from"@react-aria/focus";import{useHover as q}from"@react-aria/interactions";import i,{Fragment as z,createContext as Q,useCallback as Y,useContext as Z,useMemo as L,useRef as ee,useState as G}from"react";import{useActivePress as te}from'../../hooks/use-active-press.js';import{useControllable as oe}from'../../hooks/use-controllable.js';import{useDefaultValue as re}from'../../hooks/use-default-value.js';import{useDisposables as ne}from'../../hooks/use-disposables.js';import{useEvent as m}from'../../hooks/use-event.js';import{useId as le}from'../../hooks/use-id.js';import{useResolveButtonType as ie}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as ae}from'../../hooks/use-sync-refs.js';import{useDisabled as se}from'../../internal/disabled.js';import{FormFields as pe}from'../../internal/form-fields.js';import{useProvidedId as ce}from'../../internal/id.js';import{isDisabledReactIssue7711 as ue}from'../../utils/bugs.js';import{attemptSubmit as de}from'../../utils/form.js';import{forwardRefWithAs as me,mergeProps as fe,render as R}from'../../utils/render.js';import{Description as be,useDescribedBy as he,useDescriptions as Te}from'../description/description.js';import{Keys as A}from'../keyboard.js';import{Label as ye,useLabelledBy as Se,useLabels as we}from'../label/label.js';let S=Q(null);S.displayName="GroupContext";let _e=z;function Pe(n){var a;let[o,p]=G(null),[f,b]=we(),[h,t]=Te(),c=L(()=>({switch:o,setSwitch:p}),[o,p]),T={},y=n;return i.createElement(t,{name:"Switch.Description",value:h},i.createElement(b,{name:"Switch.Label",value:f,props:{htmlFor:(a=c.switch)==null?void 0:a.id,onClick(u){o&&(u.currentTarget instanceof HTMLLabelElement&&u.preventDefault(),o.click(),o.focus({preventScroll:!0}))}}},i.createElement(S.Provider,{value:c},R({ourProps:T,theirProps:y,slot:{},defaultTag:_e,name:"Switch.Group"}))))}let Ee="button";function De(n,o){var C;let p=le(),f=ce(),b=se(),{id:h=f||`headlessui-switch-${p}`,disabled:t=b||!1,checked:c,defaultChecked:T,onChange:y,name:a,value:u,form:F,autoFocus:d=!1,...k}=n,w=Z(S),_=ee(null),H=ae(_,o,w===null?null:w.setSwitch),l=re(T),[s,r]=oe(c,y,l!=null?l:!1),M=ne(),[P,E]=G(!1),D=m(()=>{E(!0),r==null||r(!s),M.nextFrame(()=>{E(!1)})}),U=m(e=>{if(ue(e.currentTarget))return e.preventDefault();e.preventDefault(),D()}),I=m(e=>{e.key===A.Space?(e.preventDefault(),D()):e.key===A.Enter&&de(e.currentTarget)}),B=m(e=>e.preventDefault()),K=Se(),W=he(),{isFocusVisible:g,focusProps:O}=$({autoFocus:d}),{isHovered:v,hoverProps:N}=q({isDisabled:t}),{pressed:x,pressProps:J}=te({disabled:t}),V=L(()=>({checked:s,disabled:t,hover:v,focus:g,active:x,autofocus:d,changing:P}),[s,v,g,x,t,P,d]),X=fe({id:h,ref:H,role:"switch",type:ie(n,_),tabIndex:n.tabIndex===-1?0:(C=n.tabIndex)!=null?C:0,"aria-checked":s,"aria-labelledby":K,"aria-describedby":W,disabled:t||void 0,autoFocus:d,onClick:U,onKeyUp:I,onKeyPress:B},O,N,J),j=Y(()=>{if(l!==void 0)return r==null?void 0:r(l)},[r,l]);return i.createElement(i.Fragment,null,a!=null&&i.createElement(pe,{disabled:t,data:{[a]:u||"on"},overrides:{type:"checkbox",checked:s},form:F,onReset:j}),R({ourProps:X,theirProps:k,slot:V,defaultTag:Ee,name:"Switch"}))}let ge=me(De),ve=Pe,xe=ye,Ce=be,qe=Object.assign(ge,{Group:ve,Label:xe,Description:Ce});export{qe as Switch,Ce as SwitchDescription,ve as SwitchGroup,xe as SwitchLabel}; |
import React, { type ElementType, type Ref } from 'react'; | ||
import type { Props } from '../../types.js'; | ||
import { type HasDisplayName, type PropsForFeatures, type RefProp } from '../../utils/render.js'; | ||
declare let DEFAULT_TABS_TAG: React.ExoticComponent<{ | ||
children?: React.ReactNode; | ||
}>; | ||
declare let DEFAULT_TABS_TAG: "div"; | ||
type TabsRenderPropArg = { | ||
@@ -50,2 +48,3 @@ selectedIndex: number; | ||
selected: boolean; | ||
focus: boolean; | ||
}; | ||
@@ -79,7 +78,11 @@ type PanelPropsWeControl = 'role' | 'aria-labelledby'; | ||
export declare let Tab: _internal_ComponentTab & { | ||
/** @deprecated use `<TabGroup>` instead of `<Tab.Group>` */ | ||
Group: _internal_ComponentTabGroup; | ||
/** @deprecated use `<TabList>` instead of `<Tab.List>` */ | ||
List: _internal_ComponentTabList; | ||
/** @deprecated use `<TabPanels>` instead of `<Tab.Panels>` */ | ||
Panels: _internal_ComponentTabPanels; | ||
/** @deprecated use `<TabPanel>` instead of `<Tab.Panel>` */ | ||
Panel: _internal_ComponentTabPanel; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as Te}from"@react-aria/focus";import{useHover as de}from"@react-aria/interactions";import M,{Fragment as ce,createContext as re,useContext as ae,useMemo as D,useReducer as be,useRef as X}from"react";import{useActivePress as fe}from'../../hooks/use-active-press.js';import{useEvent as F}from'../../hooks/use-event.js';import{useId as le}from'../../hooks/use-id.js';import{useIsoMorphicEffect as N}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as $}from'../../hooks/use-latest-value.js';import{useResolveButtonType as me}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as G}from'../../hooks/use-sync-refs.js';import{FocusSentinel as Pe}from'../../internal/focus-sentinel.js';import{Hidden as ye}from'../../internal/hidden.js';import{Focus as P,FocusResult as B,focusIn as I,sortByDomNode as w}from'../../utils/focus-management.js';import{match as U}from'../../utils/match.js';import{microTask as xe}from'../../utils/micro-task.js';import{getOwnerDocument as ge}from'../../utils/owner.js';import{RenderFeatures as oe,forwardRefWithAs as H,mergeProps as Ae,render as k}from'../../utils/render.js';import{StableCollection as Ee,useStableCollectionIndex as se}from'../../utils/stable-collection.js';import{Keys as y}from'../keyboard.js';var Le=(t=>(t[t.Forwards=0]="Forwards",t[t.Backwards=1]="Backwards",t))(Le||{}),Re=(o=>(o[o.Less=-1]="Less",o[o.Equal=0]="Equal",o[o.Greater=1]="Greater",o))(Re||{}),_e=(r=>(r[r.SetSelectedIndex=0]="SetSelectedIndex",r[r.RegisterTab=1]="RegisterTab",r[r.UnregisterTab=2]="UnregisterTab",r[r.RegisterPanel=3]="RegisterPanel",r[r.UnregisterPanel=4]="UnregisterPanel",r))(_e||{});let De={[0](e,n){var u;let t=w(e.tabs,T=>T.current),o=w(e.panels,T=>T.current),s=t.filter(T=>{var a;return!((a=T.current)!=null&&a.hasAttribute("disabled"))}),r={...e,tabs:t,panels:o};if(n.index<0||n.index>t.length-1){let T=U(Math.sign(n.index-e.selectedIndex),{[-1]:()=>1,[0]:()=>U(Math.sign(n.index),{[-1]:()=>0,[0]:()=>0,[1]:()=>1}),[1]:()=>0});if(s.length===0)return r;let a=U(T,{[0]:()=>t.indexOf(s[0]),[1]:()=>t.indexOf(s[s.length-1])});return{...r,selectedIndex:a===-1?e.selectedIndex:a}}let i=t.slice(0,n.index),f=[...t.slice(n.index),...i].find(T=>s.includes(T));if(!f)return r;let b=(u=t.indexOf(f))!=null?u:e.selectedIndex;return b===-1&&(b=e.selectedIndex),{...r,selectedIndex:b}},[1](e,n){var r;if(e.tabs.includes(n.tab))return e;let t=e.tabs[e.selectedIndex],o=w([...e.tabs,n.tab],i=>i.current),s=(r=o.indexOf(t))!=null?r:e.selectedIndex;return s===-1&&(s=e.selectedIndex),{...e,tabs:o,selectedIndex:s}},[2](e,n){return{...e,tabs:e.tabs.filter(t=>t!==n.tab)}},[3](e,n){return e.panels.includes(n.panel)?e:{...e,panels:w([...e.panels,n.panel],t=>t.current)}},[4](e,n){return{...e,panels:e.panels.filter(t=>t!==n.panel)}}},q=re(null);q.displayName="TabsDataContext";function h(e){let n=ae(q);if(n===null){let t=new Error(`<${e} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,h),t}return n}let z=re(null);z.displayName="TabsActionsContext";function V(e){let n=ae(z);if(n===null){let t=new Error(`<${e} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,V),t}return n}function Fe(e,n){return U(n.type,De,e,n)}let Se=ce;function Ie(e,n){let{defaultIndex:t=0,vertical:o=!1,manual:s=!1,onChange:r,selectedIndex:i=null,...R}=e;const f=o?"vertical":"horizontal",b=s?"manual":"auto";let u=i!==null,T=G(n),[a,d]=be(Fe,{selectedIndex:i!=null?i:t,tabs:[],panels:[]}),x=D(()=>({selectedIndex:a.selectedIndex}),[a.selectedIndex]),m=$(r||(()=>{})),g=$(a.tabs),A=D(()=>({orientation:f,activation:b,...a}),[f,b,a]),S=F(p=>(d({type:1,tab:p}),()=>d({type:2,tab:p}))),L=F(p=>(d({type:3,panel:p}),()=>d({type:4,panel:p}))),_=F(p=>{v.current!==p&&m.current(p),u||d({type:0,index:p})}),v=$(u?e.selectedIndex:a.selectedIndex),O=D(()=>({registerTab:S,registerPanel:L,change:_}),[]);N(()=>{d({type:0,index:i!=null?i:t})},[i]),N(()=>{if(v.current===void 0||a.tabs.length<=0)return;let p=w(a.tabs,E=>E.current);p.some((E,j)=>a.tabs[j]!==E)&&_(p.indexOf(a.tabs[v.current]))});let W={ref:T};return M.createElement(Ee,null,M.createElement(z.Provider,{value:O},M.createElement(q.Provider,{value:A},A.tabs.length<=0&&M.createElement(Pe,{onFocus:()=>{var p,C;for(let E of g.current)if(((p=E.current)==null?void 0:p.tabIndex)===0)return(C=E.current)==null||C.focus(),!0;return!1}}),k({ourProps:W,theirProps:R,slot:x,defaultTag:Se,name:"Tabs"}))))}let he="div";function ve(e,n){let{orientation:t,selectedIndex:o}=h("Tab.List"),s=G(n),r=D(()=>({selectedIndex:o}),[o]);return k({ourProps:{ref:s,role:"tablist","aria-orientation":t},theirProps:e,slot:r,defaultTag:he,name:"Tabs.List"})}let Ce="button";function Me(e,n){var Q,Y,Z,ee,te;let t=le(),{id:o=`headlessui-tabs-tab-${t}`,...s}=e,{orientation:r,activation:i,selectedIndex:R,tabs:f,panels:b}=h("Tab"),u=V("Tab"),T=h("Tab"),a=X(null),d=G(a,n);N(()=>u.registerTab(a),[u,a]);let x=se("tabs"),m=f.indexOf(a);m===-1&&(m=x);let g=m===R,A=F(l=>{var K;let c=l();if(c===B.Success&&i==="auto"){let J=(K=ge(a))==null?void 0:K.activeElement,ne=T.tabs.findIndex(ue=>ue.current===J);ne!==-1&&u.change(ne)}return c}),S=F(l=>{let c=f.map(J=>J.current).filter(Boolean);if(l.key===y.Space||l.key===y.Enter){l.preventDefault(),l.stopPropagation(),u.change(m);return}switch(l.key){case y.Home:case y.PageUp:return l.preventDefault(),l.stopPropagation(),A(()=>I(c,P.First));case y.End:case y.PageDown:return l.preventDefault(),l.stopPropagation(),A(()=>I(c,P.Last))}if(A(()=>U(r,{vertical(){return l.key===y.ArrowUp?I(c,P.Previous|P.WrapAround):l.key===y.ArrowDown?I(c,P.Next|P.WrapAround):B.Error},horizontal(){return l.key===y.ArrowLeft?I(c,P.Previous|P.WrapAround):l.key===y.ArrowRight?I(c,P.Next|P.WrapAround):B.Error}}))===B.Success)return l.preventDefault()}),L=X(!1),_=F(()=>{var l;L.current||(L.current=!0,(l=a.current)==null||l.focus({preventScroll:!0}),u.change(m),xe(()=>{L.current=!1}))}),v=F(l=>{l.preventDefault()}),{isFocusVisible:O,focusProps:W}=Te({autoFocus:(Q=e.autoFocus)!=null?Q:!1}),{isHovered:p,hoverProps:C}=de({isDisabled:(Y=e.disabled)!=null?Y:!1}),{pressed:E,pressProps:j}=fe({disabled:(Z=e.disabled)!=null?Z:!1}),ie=D(()=>{var l,c;return{selected:g,hover:p,active:E,focus:O,autofocus:(l=e.autoFocus)!=null?l:!1,disabled:(c=e.disabled)!=null?c:!1}},[g,p,O,E,e.autoFocus,e.disabled]),pe=Ae({ref:d,onKeyDown:S,onMouseDown:v,onClick:_,id:o,role:"tab",type:me(e,a),"aria-controls":(te=(ee=b[m])==null?void 0:ee.current)==null?void 0:te.id,"aria-selected":g,tabIndex:g?0:-1},W,C,j);return k({ourProps:pe,theirProps:s,slot:ie,defaultTag:Ce,name:"Tabs.Tab"})}let Ge="div";function we(e,n){let{selectedIndex:t}=h("Tab.Panels"),o=G(n),s=D(()=>({selectedIndex:t}),[t]);return k({ourProps:{ref:o},theirProps:e,slot:s,defaultTag:Ge,name:"Tabs.Panels"})}let Ue="div",He=oe.RenderStrategy|oe.Static;function ke(e,n){var A,S,L,_;let t=le(),{id:o=`headlessui-tabs-panel-${t}`,tabIndex:s=0,...r}=e,{selectedIndex:i,tabs:R,panels:f}=h("Tab.Panel"),b=V("Tab.Panel"),u=X(null),T=G(u,n);N(()=>b.registerPanel(u),[b,u]);let a=se("panels"),d=f.indexOf(u);d===-1&&(d=a);let x=d===i,m=D(()=>({selected:x}),[x]),g={ref:T,id:o,role:"tabpanel","aria-labelledby":(S=(A=R[d])==null?void 0:A.current)==null?void 0:S.id,tabIndex:x?s:-1};return!x&&((L=r.unmount)==null||L)&&!((_=r.static)!=null&&_)?M.createElement(ye,{as:"span","aria-hidden":"true",...g}):k({ourProps:g,theirProps:r,slot:m,defaultTag:Ue,features:He,visible:x,name:"Tabs.Panel"})}let Oe=H(Me),Ne=H(Ie),Be=H(ve),We=H(we),je=H(ke),pt=Object.assign(Oe,{Group:Ne,List:Be,Panels:We,Panel:je});export{pt as Tab,Ne as TabGroup,Be as TabList,je as TabPanel,We as TabPanels}; | ||
"use client";import{useFocusRing as te}from"@react-aria/focus";import{useHover as de}from"@react-aria/interactions";import G,{createContext as re,useContext as ne,useMemo as D,useReducer as ce,useRef as q}from"react";import{useActivePress as fe}from'../../hooks/use-active-press.js';import{useEvent as S}from'../../hooks/use-event.js';import{useId as ae}from'../../hooks/use-id.js';import{useIsoMorphicEffect as W}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as j}from'../../hooks/use-latest-value.js';import{useResolveButtonType as be}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as U}from'../../hooks/use-sync-refs.js';import{FocusSentinel as me}from'../../internal/focus-sentinel.js';import{Hidden as Pe}from'../../internal/hidden.js';import{Focus as P,FocusResult as K,focusIn as v,sortByDomNode as H}from'../../utils/focus-management.js';import{match as w}from'../../utils/match.js';import{microTask as ye}from'../../utils/micro-task.js';import{getOwnerDocument as xe}from'../../utils/owner.js';import{RenderFeatures as oe,forwardRefWithAs as O,mergeProps as le,render as N}from'../../utils/render.js';import{StableCollection as ge,useStableCollectionIndex as se}from'../../utils/stable-collection.js';import{Keys as y}from'../keyboard.js';var Ae=(t=>(t[t.Forwards=0]="Forwards",t[t.Backwards=1]="Backwards",t))(Ae||{}),Ee=(o=>(o[o.Less=-1]="Less",o[o.Equal=0]="Equal",o[o.Greater=1]="Greater",o))(Ee||{}),Re=(n=>(n[n.SetSelectedIndex=0]="SetSelectedIndex",n[n.RegisterTab=1]="RegisterTab",n[n.UnregisterTab=2]="UnregisterTab",n[n.RegisterPanel=3]="RegisterPanel",n[n.UnregisterPanel=4]="UnregisterPanel",n))(Re||{});let Le={[0](e,r){var c;let t=H(e.tabs,T=>T.current),o=H(e.panels,T=>T.current),a=t.filter(T=>{var d;return!((d=T.current)!=null&&d.hasAttribute("disabled"))}),n={...e,tabs:t,panels:o};if(r.index<0||r.index>t.length-1){let T=w(Math.sign(r.index-e.selectedIndex),{[-1]:()=>1,[0]:()=>w(Math.sign(r.index),{[-1]:()=>0,[0]:()=>0,[1]:()=>1}),[1]:()=>0});if(a.length===0)return n;let d=w(T,{[0]:()=>t.indexOf(a[0]),[1]:()=>t.indexOf(a[a.length-1])});return{...n,selectedIndex:d===-1?e.selectedIndex:d}}let u=t.slice(0,r.index),x=[...t.slice(r.index),...u].find(T=>a.includes(T));if(!x)return n;let f=(c=t.indexOf(x))!=null?c:e.selectedIndex;return f===-1&&(f=e.selectedIndex),{...n,selectedIndex:f}},[1](e,r){if(e.tabs.includes(r.tab))return e;let t=e.tabs[e.selectedIndex],o=H([...e.tabs,r.tab],n=>n.current),a=e.selectedIndex;return e.info.current.isControlled||(a=o.indexOf(t),a===-1&&(a=e.selectedIndex)),{...e,tabs:o,selectedIndex:a}},[2](e,r){return{...e,tabs:e.tabs.filter(t=>t!==r.tab)}},[3](e,r){return e.panels.includes(r.panel)?e:{...e,panels:H([...e.panels,r.panel],t=>t.current)}},[4](e,r){return{...e,panels:e.panels.filter(t=>t!==r.panel)}}},z=re(null);z.displayName="TabsDataContext";function C(e){let r=ne(z);if(r===null){let t=new Error(`<${e} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,C),t}return r}let V=re(null);V.displayName="TabsActionsContext";function Q(e){let r=ne(V);if(r===null){let t=new Error(`<${e} /> is missing a parent <Tab.Group /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,Q),t}return r}function _e(e,r){return w(r.type,Le,e,r)}let De="div";function Se(e,r){let{defaultIndex:t=0,vertical:o=!1,manual:a=!1,onChange:n,selectedIndex:u=null,..._}=e;const x=o?"vertical":"horizontal",f=a?"manual":"auto";let c=u!==null,T=j({isControlled:c}),d=U(r),[i,s]=ce(_e,{info:T,selectedIndex:u!=null?u:t,tabs:[],panels:[]}),F=D(()=>({selectedIndex:i.selectedIndex}),[i.selectedIndex]),M=j(n||(()=>{})),b=j(i.tabs),m=D(()=>({orientation:x,activation:f,...i}),[x,f,i]),E=S(p=>(s({type:1,tab:p}),()=>s({type:2,tab:p}))),I=S(p=>(s({type:3,panel:p}),()=>s({type:4,panel:p}))),g=S(p=>{R.current!==p&&M.current(p),c||s({type:0,index:p})}),R=j(c?e.selectedIndex:i.selectedIndex),J=D(()=>({registerTab:E,registerPanel:I,change:g}),[]);W(()=>{s({type:0,index:u!=null?u:t})},[u]),W(()=>{if(R.current===void 0||i.tabs.length<=0)return;let p=H(i.tabs,L=>L.current);p.some((L,B)=>i.tabs[B]!==L)&&g(p.indexOf(i.tabs[R.current]))});let k={ref:d};return G.createElement(ge,null,G.createElement(V.Provider,{value:J},G.createElement(z.Provider,{value:m},m.tabs.length<=0&&G.createElement(me,{onFocus:()=>{var p,h;for(let L of b.current)if(((p=L.current)==null?void 0:p.tabIndex)===0)return(h=L.current)==null||h.focus(),!0;return!1}}),N({ourProps:k,theirProps:_,slot:F,defaultTag:De,name:"Tabs"}))))}let Fe="div";function Ie(e,r){let{orientation:t,selectedIndex:o}=C("Tab.List"),a=U(r),n=D(()=>({selectedIndex:o}),[o]);return N({ourProps:{ref:a,role:"tablist","aria-orientation":t},theirProps:e,slot:n,defaultTag:Fe,name:"Tabs.List"})}let he="button";function ve(e,r){var Y,Z;let t=ae(),{id:o=`headlessui-tabs-tab-${t}`,disabled:a=!1,autoFocus:n=!1,...u}=e,{orientation:_,activation:x,selectedIndex:f,tabs:c,panels:T}=C("Tab"),d=Q("Tab"),i=C("Tab"),s=q(null),F=U(s,r);W(()=>d.registerTab(s),[d,s]);let M=se("tabs"),b=c.indexOf(s);b===-1&&(b=M);let m=b===f,E=S(l=>{var X;let A=l();if(A===K.Success&&x==="auto"){let $=(X=xe(s))==null?void 0:X.activeElement,ee=i.tabs.findIndex(Te=>Te.current===$);ee!==-1&&d.change(ee)}return A}),I=S(l=>{let A=c.map($=>$.current).filter(Boolean);if(l.key===y.Space||l.key===y.Enter){l.preventDefault(),l.stopPropagation(),d.change(b);return}switch(l.key){case y.Home:case y.PageUp:return l.preventDefault(),l.stopPropagation(),E(()=>v(A,P.First));case y.End:case y.PageDown:return l.preventDefault(),l.stopPropagation(),E(()=>v(A,P.Last))}if(E(()=>w(_,{vertical(){return l.key===y.ArrowUp?v(A,P.Previous|P.WrapAround):l.key===y.ArrowDown?v(A,P.Next|P.WrapAround):K.Error},horizontal(){return l.key===y.ArrowLeft?v(A,P.Previous|P.WrapAround):l.key===y.ArrowRight?v(A,P.Next|P.WrapAround):K.Error}}))===K.Success)return l.preventDefault()}),g=q(!1),R=S(()=>{var l;g.current||(g.current=!0,(l=s.current)==null||l.focus({preventScroll:!0}),d.change(b),ye(()=>{g.current=!1}))}),J=S(l=>{l.preventDefault()}),{isFocusVisible:k,focusProps:p}=te({autoFocus:n}),{isHovered:h,hoverProps:L}=de({isDisabled:a}),{pressed:B,pressProps:ie}=fe({disabled:a}),pe=D(()=>({selected:m,hover:h,active:B,focus:k,autofocus:n,disabled:a}),[m,h,k,B,n,a]),ue=le({ref:F,onKeyDown:I,onMouseDown:J,onClick:R,id:o,role:"tab",type:be(e,s),"aria-controls":(Z=(Y=T[b])==null?void 0:Y.current)==null?void 0:Z.id,"aria-selected":m,tabIndex:m?0:-1,disabled:a||void 0,autoFocus:n},p,L,ie);return N({ourProps:ue,theirProps:u,slot:pe,defaultTag:he,name:"Tabs.Tab"})}let Ce="div";function Me(e,r){let{selectedIndex:t}=C("Tab.Panels"),o=U(r),a=D(()=>({selectedIndex:t}),[t]);return N({ourProps:{ref:o},theirProps:e,slot:a,defaultTag:Ce,name:"Tabs.Panels"})}let Ge="div",Ue=oe.RenderStrategy|oe.Static;function He(e,r){var E,I,g,R;let t=ae(),{id:o=`headlessui-tabs-panel-${t}`,tabIndex:a=0,...n}=e,{selectedIndex:u,tabs:_,panels:x}=C("Tab.Panel"),f=Q("Tab.Panel"),c=q(null),T=U(c,r);W(()=>f.registerPanel(c),[f,c]);let d=se("panels"),i=x.indexOf(c);i===-1&&(i=d);let s=i===u,{isFocusVisible:F,focusProps:M}=te(),b=D(()=>({selected:s,focus:F}),[s,F]),m=le({ref:T,id:o,role:"tabpanel","aria-labelledby":(I=(E=_[i])==null?void 0:E.current)==null?void 0:I.id,tabIndex:s?a:-1},M);return!s&&((g=n.unmount)==null||g)&&!((R=n.static)!=null&&R)?G.createElement(Pe,{as:"span","aria-hidden":"true",...m}):N({ourProps:m,theirProps:n,slot:b,defaultTag:Ge,features:Ue,visible:s,name:"Tabs.Panel"})}let we=O(ve),Oe=O(Se),Ne=O(Ie),ke=O(Me),Be=O(He),st=Object.assign(we,{Group:Oe,List:Ne,Panels:ke,Panel:Be});export{st as Tab,Oe as TabGroup,Ne as TabList,Be as TabPanel,ke as TabPanels}; |
@@ -1,1 +0,1 @@ | ||
"use client";import{useFocusRing as A}from"@react-aria/focus";import{useHover as E}from"@react-aria/interactions";import{useMemo as P}from"react";import{useId as F}from'../../hooks/use-id.js';import{useDisabled as R}from'../../internal/disabled.js';import{useProvidedId as g}from'../../internal/id.js';import{forwardRefWithAs as v,mergeProps as _,render as D}from'../../utils/render.js';import{useDescribedBy as h}from'../description/description.js';import{useLabelledBy as L}from'../label/label.js';let H="textarea";function X(a,i){var s;let n=F(),d=g(),p=R(),{id:T=d||`headlessui-textarea-${n}`,disabled:e=p||!1,invalid:o=!1,...f}=a,u=L(),m=h(),{isFocusVisible:r,focusProps:y}=A({autoFocus:(s=a.autoFocus)!=null?s:!1}),{isHovered:t,hoverProps:b}=E({isDisabled:e!=null?e:!1}),x=_({ref:i,id:T,"aria-labelledby":u,"aria-describedby":m,"aria-invalid":o?"":void 0,disabled:e||void 0},y,b),c=P(()=>{var l;return{disabled:e,invalid:o,hover:t,focus:r,autofocus:(l=a.autoFocus)!=null?l:!1}},[e,o,t,r,a.autoFocus]);return D({ourProps:x,theirProps:f,slot:c,defaultTag:H,name:"Textarea"})}let k=v(X);export{k as Textarea}; | ||
"use client";import{useFocusRing as A}from"@react-aria/focus";import{useHover as E}from"@react-aria/interactions";import{useMemo as P}from"react";import{useId as c}from'../../hooks/use-id.js';import{useDisabled as R}from'../../internal/disabled.js';import{useProvidedId as g}from'../../internal/id.js';import{forwardRefWithAs as v,mergeProps as _,render as D}from'../../utils/render.js';import{useDescribedBy as F}from'../description/description.js';import{useLabelledBy as h}from'../label/label.js';let L="textarea";function H(s,l){let i=c(),p=g(),d=R(),{id:n=p||`headlessui-textarea-${i}`,disabled:e=d||!1,autoFocus:r=!1,invalid:a=!1,...T}=s,f=h(),m=F(),{isFocused:o,focusProps:u}=A({autoFocus:r}),{isHovered:t,hoverProps:b}=E({isDisabled:e}),y=_({ref:l,id:n,"aria-labelledby":f,"aria-describedby":m,"aria-invalid":a?"":void 0,disabled:e||void 0,autoFocus:r},u,b),x=P(()=>({disabled:e,invalid:a,hover:t,focus:o,autofocus:r}),[e,a,t,o,r]);return D({ourProps:y,theirProps:T,slot:x,defaultTag:L,name:"Textarea"})}let w=v(H);export{w as Textarea}; |
@@ -1,1 +0,1 @@ | ||
"use client";var J=Object.defineProperty;var X=(o,e,t)=>e in o?J(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var f=(o,e,t)=>(X(o,typeof e!="symbol"?e+"":e,t),t);import{useFocusRing as $}from"@react-aria/focus";import{useHover as j}from"@react-aria/interactions";import y,{Fragment as E,createContext as G,useContext as O,useEffect as q,useId as z,useMemo as P,useReducer as Q,useRef as U,useSyncExternalStore as Y}from"react";import{useDisposables as Z}from'../../hooks/use-disposables.js';import{useEvent as a}from'../../hooks/use-event.js';import{useSyncRefs as R}from'../../hooks/use-sync-refs.js';import{FloatingProvider as ee,useFloatingPanel as te,useFloatingReference as oe}from'../../internal/floating.js';import{State as V,useOpenClosed as ie}from'../../internal/open-closed.js';import{match as p}from'../../utils/match.js';import{RenderFeatures as N,forwardRefWithAs as I,mergeProps as ne,render as F}from'../../utils/render.js';import{Description as k,useDescribedBy as re,useDescriptions as le}from'../description/description.js';import{Keys as H}from'../keyboard.js';import{Portal as ae}from'../portal/portal.js';var pe=(i=>(i[i.Hidden=0]="Hidden",i[i.Initiated=1]="Initiated",i[i.Visible=2]="Visible",i[i.Hiding=3]="Hiding",i))(pe||{}),se=(t=>(t[t.Delayed=0]="Delayed",t[t.Immediate=1]="Immediate",t))(se||{});class Te{constructor(){f(this,"_state",null);f(this,"_listeners",[]);f(this,"subscribe",e=>(this._listeners.push(e),()=>{this._listeners=this._listeners.filter(t=>t!==e)}));f(this,"getSnapshot",()=>this._state);f(this,"getServerSnapshot",()=>this._state);f(this,"setTooltipId",e=>{this._state!==e&&(this._state=e,this._listeners.forEach(t=>t(e)))})}}let S=new Te;var de=(t=>(t[t.ShowTooltip=0]="ShowTooltip",t[t.HideTooltip=1]="HideTooltip",t))(de||{});let ue={[0](o,e){return{...o,tooltipState:p(o.tooltipState,{[0]:p(e.when,{[1]:2,[0]:1}),[1]:p(e.when,{[1]:2,[0]:1}),[2]:2,[3]:2})}},[1](o,e){return{...o,tooltipState:p(o.tooltipState,{[0]:0,[1]:0,[2]:p(e.when,{[1]:0,[0]:3}),[3]:p(e.when,{[1]:0,[0]:3})})}}},x=G(null);x.displayName="TooltipActionsContext";function B(o){let e=O(x);if(e===null){let t=new Error(`<${o} /> is missing a parent <Tooltip /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,B),t}return e}let W=G(null);W.displayName="TooltipDataContext";function w(o){let e=O(W);if(e===null){let t=new Error(`<${o} /> is missing a parent <Tooltip /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,w),t}return e}function me(o,e){return p(e.type,ue,o,e)}let fe=E;function ce(o,e){let{id:t=`headlessui-tooltip-${z()}`,showDelayMs:s=750,hideDelayMs:i=300,...c}=o,n=Y(S.subscribe,S.getSnapshot,S.getServerSnapshot),[r,d]=Q(me,{id:t,tooltipState:0}),[g,u]=le(),T=Z();q(()=>{T.dispose(),p(r.tooltipState,{[0](){},[1](){T.setTimeout(()=>m(1),s)},[2](){},[3](){T.setTimeout(()=>h(1),i)}})},[T,r.tooltipState,s,i]);let m=a(l=>{l===0&&n!==null&&n!==t&&(l=1),l===1&&S.setTooltipId(t),d({type:0,when:l})}),h=a(l=>{n===t&&l===1&&S.setTooltipId(null),d({type:1,when:l})}),D={ref:R(e)},_=P(()=>({}),[]),v=P(()=>({visible:n===r.id&&p(r.tooltipState,{[0]:!1,[1]:!1,[2]:!0,[3]:!0}),...r}),[n,r]),b=P(()=>({showTooltip:m,hideTooltip:h}),[m,h]);return y.createElement(u,{value:g},y.createElement(ee,null,y.createElement(x.Provider,{value:b},y.createElement(W.Provider,{value:v},F({ourProps:D,theirProps:c,slot:_,defaultTag:fe,name:"Tooltip"})))))}let ge=E;function ye(o,e){var C,M;let{...t}=o,s=w("TooltipTrigger"),i=B("TooltipTrigger"),c=re(),n=U(null),r=R(n,e,oe()),{isFocusVisible:d,focusProps:g}=$({autoFocus:(C=o.autoFocus)!=null?C:!1}),{isHovered:u,hoverProps:T}=j({isDisabled:(M=o.disabled)!=null?M:!1}),m=a(A=>{switch(A.key){case H.Enter:case H.Escape:case H.Space:if(s.tooltipState===2)return i.hideTooltip(1);break}}),h=a(()=>{i.showTooltip(1)}),L=a(()=>{i.hideTooltip(1)}),D=a(()=>{i.hideTooltip(1)}),_=a(()=>{i.showTooltip(0)}),v=a(()=>{i.hideTooltip(0)}),b=a(()=>{s.tooltipState===3&&i.showTooltip(1)}),l=P(()=>{var A;return{hover:u,focus:d,autofocus:(A=o.autoFocus)!=null?A:!1}},[u,d,o.autoFocus]),K=ne({ref:r,"aria-describedby":s.visible?c:void 0,onKeyDown:m,onFocus:h,onBlur:L,onMouseDown:D,onMouseEnter:_,onMouseLeave:v,onMouseMove:b},g,T);return F({ourProps:K,theirProps:t,slot:l,defaultTag:ge,name:"TooltipTrigger"})}let Le=k,he=N.RenderStrategy|N.Static;function Pe(o,e){let{anchor:t={to:"top",padding:8,gap:8,offset:-4},...s}=o,i=w("TooltipPanel"),c=ie(),n=(()=>c!==null?(c&V.Open)===V.Open:i.visible)(),r=U(null),[d,g]=te(n?t:void 0),u=R(r,e,d),T={ref:u,role:"tooltip",...g?{style:g}:{}},m=P(()=>({}),[]);return F({ourProps:{...T,as:E,children:y.createElement(ae,null,y.createElement(k,{ref:u,...s}))},theirProps:{},slot:m,defaultTag:E,features:he,visible:n,name:"TooltipPanel"})}let Ce=I(ce),Me=I(ye),Ge=I(Pe);export{Ce as Tooltip,Ge as TooltipPanel,Me as TooltipTrigger}; | ||
"use client";var J=Object.defineProperty;var X=(o,t,e)=>t in o?J(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var g=(o,t,e)=>(X(o,typeof t!="symbol"?t+"":t,e),e);import{useFocusRing as $}from"@react-aria/focus";import{useHover as j}from"@react-aria/interactions";import c,{Fragment as A,createContext as w,useContext as C,useEffect as q,useId as z,useMemo as P,useReducer as Q,useRef as M,useSyncExternalStore as Y}from"react";import{useDisposables as Z}from'../../hooks/use-disposables.js';import{useEvent as a}from'../../hooks/use-event.js';import{useSyncRefs as b}from'../../hooks/use-sync-refs.js';import{FloatingProvider as ee,useFloatingPanel as te,useFloatingReference as oe,useResolvedAnchor as ie}from'../../internal/floating.js';import{State as G,useOpenClosed as re}from'../../internal/open-closed.js';import{match as s}from'../../utils/match.js';import{RenderFeatures as O,forwardRefWithAs as R,mergeProps as ne,render as I}from'../../utils/render.js';import{Description as U,useDescribedBy as le,useDescriptions as pe}from'../description/description.js';import{Keys as F}from'../keyboard.js';import{Portal as ae}from'../portal/portal.js';var se=(r=>(r[r.Hidden=0]="Hidden",r[r.Initiated=1]="Initiated",r[r.Visible=2]="Visible",r[r.Hiding=3]="Hiding",r))(se||{}),Te=(e=>(e[e.Delayed=0]="Delayed",e[e.Immediate=1]="Immediate",e))(Te||{});class de{constructor(){g(this,"_state",null);g(this,"_listeners",[]);g(this,"subscribe",t=>(this._listeners.push(t),()=>{this._listeners=this._listeners.filter(e=>e!==t)}));g(this,"getSnapshot",()=>this._state);g(this,"getServerSnapshot",()=>this._state);g(this,"setTooltipId",t=>{this._state!==t&&(this._state=t,this._listeners.forEach(e=>e(t)))})}}let S=new de;var ue=(e=>(e[e.ShowTooltip=0]="ShowTooltip",e[e.HideTooltip=1]="HideTooltip",e))(ue||{});let me={[0](o,t){return{...o,tooltipState:s(o.tooltipState,{[0]:s(t.when,{[1]:2,[0]:1}),[1]:s(t.when,{[1]:2,[0]:1}),[2]:2,[3]:2})}},[1](o,t){return{...o,tooltipState:s(o.tooltipState,{[0]:0,[1]:0,[2]:s(t.when,{[1]:0,[0]:3}),[3]:s(t.when,{[1]:0,[0]:3})})}}},H=w(null);H.displayName="TooltipActionsContext";function V(o){let t=C(H);if(t===null){let e=new Error(`<${o} /> is missing a parent <Tooltip /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,V),e}return t}let x=w(null);x.displayName="TooltipDataContext";function W(o){let t=C(x);if(t===null){let e=new Error(`<${o} /> is missing a parent <Tooltip /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,W),e}return t}function fe(o,t){return s(t.type,me,o,t)}let ge=A;function ye(o,t){let{id:e=`headlessui-tooltip-${z()}`,showDelayMs:T=750,hideDelayMs:r=300,...d}=o,i=Y(S.subscribe,S.getSnapshot,S.getServerSnapshot),[n,y]=Q(fe,{id:e,tooltipState:0}),[h,m]=pe(),l=Z();q(()=>{l.dispose(),s(n.tooltipState,{[0](){},[1](){l.setTimeout(()=>u(1),T)},[2](){},[3](){l.setTimeout(()=>f(1),r)}})},[l,n.tooltipState,T,r]);let u=a(p=>{p===0&&i!==null&&i!==e&&(p=1),p===1&&S.setTooltipId(e),y({type:0,when:p})}),f=a(p=>{i===e&&p===1&&S.setTooltipId(null),y({type:1,when:p})}),E={ref:b(t)},D=P(()=>({}),[]),_=P(()=>({visible:i===n.id&&s(n.tooltipState,{[0]:!1,[1]:!1,[2]:!0,[3]:!0}),...n}),[i,n]),v=P(()=>({showTooltip:u,hideTooltip:f}),[u,f]);return c.createElement(m,{value:h},c.createElement(ee,null,c.createElement(H.Provider,{value:v},c.createElement(x.Provider,{value:_},I({ourProps:E,theirProps:d,slot:D,defaultTag:ge,name:"Tooltip"})))))}let ce=A;function he(o,t){let{disabled:e=!1,autoFocus:T=!1,...r}=o,d=W("TooltipTrigger"),i=V("TooltipTrigger"),n=le(),y=M(null),h=b(y,t,oe()),{isFocusVisible:m,focusProps:l}=$({autoFocus:T}),{isHovered:u,hoverProps:f}=j({isDisabled:e}),L=a(K=>{switch(K.key){case F.Enter:case F.Escape:case F.Space:if(d.tooltipState===2)return i.hideTooltip(1);break}}),E=a(()=>{i.showTooltip(1)}),D=a(()=>{i.hideTooltip(1)}),_=a(()=>{i.hideTooltip(1)}),v=a(()=>{i.showTooltip(0)}),p=a(()=>{i.hideTooltip(0)}),N=a(()=>{d.tooltipState===3&&i.showTooltip(1)}),B=P(()=>({hover:u,focus:m,autofocus:T}),[u,m,T]),k=ne({ref:h,"aria-describedby":d.visible?n:void 0,onKeyDown:L,onFocus:E,onBlur:D,onMouseDown:_,onMouseEnter:v,onMouseLeave:p,onMouseMove:N},l,f);return I({ourProps:k,theirProps:r,slot:B,defaultTag:ce,name:"TooltipTrigger"})}let Ce=U,Pe=O.RenderStrategy|O.Static;function Se(o,t){let{anchor:e,...T}=o,r=W("TooltipPanel"),d=re(),i=(()=>d!==null?(d&G.Open)===G.Open:r.visible)(),n=M(null),y=ie(e!=null?e:{to:"top",padding:8,gap:8,offset:-4}),[h,m]=te(i?y:void 0),l=b(n,t,h),u={ref:l,role:"tooltip",...m?{style:m}:{}},f=P(()=>({}),[]);return I({ourProps:{...u,as:A,children:c.createElement(ae,null,c.createElement(U,{ref:l,...T}))},theirProps:{},slot:f,defaultTag:A,features:Pe,visible:i,name:"TooltipPanel"})}let Me=R(ye),Ge=R(he),Oe=R(Se);export{Me as Tooltip,Oe as TooltipPanel,Ge as TooltipTrigger}; |
@@ -8,2 +8,5 @@ import React, { type ElementType, type MutableRefObject, type Ref } from 'react'; | ||
enterTo?: string; | ||
/** | ||
* @deprecated The `enterTo` and `leaveTo` classes stay applied after the transition has finished. | ||
*/ | ||
entered?: string; | ||
@@ -24,4 +27,6 @@ leave?: string; | ||
}>; | ||
declare let DEFAULT_TRANSITION_CHILD_TAG: "div"; | ||
type TransitionChildRenderPropArg = MutableRefObject<HTMLDivElement>; | ||
declare let DEFAULT_TRANSITION_CHILD_TAG: React.ExoticComponent<{ | ||
children?: React.ReactNode; | ||
}>; | ||
type TransitionChildRenderPropArg = MutableRefObject<HTMLElement>; | ||
declare let TransitionChildRenderFeatures: RenderFeatures; | ||
@@ -42,5 +47,7 @@ declare function TransitionChildFn<TTag extends ElementType = typeof DEFAULT_TRANSITION_CHILD_TAG>(props: TransitionChildProps<TTag>, ref: Ref<HTMLElement>): React.JSX.Element; | ||
export declare let Transition: _internal_ComponentTransitionRoot & { | ||
/** @deprecated use `<TransitionChild>` instead of `<Transition.Child>` */ | ||
Child: _internal_ComponentTransitionChild; | ||
/** @deprecated use `<Transition>` instead of `<Transition.Root>` */ | ||
Root: _internal_ComponentTransitionRoot; | ||
}; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
"use client";import m,{Fragment as Z,createContext as $,useContext as W,useEffect as pe,useMemo as ee,useRef as c,useState as J}from"react";import{useDisposables as Ce}from'../../hooks/use-disposables.js';import{useEvent as E}from'../../hooks/use-event.js';import{useFlags as he}from'../../hooks/use-flags.js';import{useIsMounted as ve}from'../../hooks/use-is-mounted.js';import{useIsoMorphicEffect as H}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as V}from'../../hooks/use-latest-value.js';import{useServerHandoffComplete as te}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as ne}from'../../hooks/use-sync-refs.js';import{useTransition as ge}from'../../hooks/use-transition.js';import{OpenClosedProvider as Ee,State as b,useOpenClosed as re}from'../../internal/open-closed.js';import{classNames as ie}from'../../utils/class-names.js';import{match as F}from'../../utils/match.js';import{RenderFeatures as be,RenderStrategy as y,forwardRefWithAs as X,render as oe}from'../../utils/render.js';function S(t=""){return t.split(/\s+/).filter(n=>n.length>1)}let w=$(null);w.displayName="TransitionContext";var Se=(r=>(r.Visible="visible",r.Hidden="hidden",r))(Se||{});function ye(){let t=W(w);if(t===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return t}function xe(){let t=W(M);if(t===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return t}let M=$(null);M.displayName="NestingContext";function U(t){return"children"in t?U(t.children):t.current.filter(({el:n})=>n.current!==null).filter(({state:n})=>n==="visible").length>0}function se(t,n){let r=V(t),s=c([]),R=ve(),D=Ce(),p=E((i,e=y.Hidden)=>{let a=s.current.findIndex(({el:o})=>o===i);a!==-1&&(F(e,{[y.Unmount](){s.current.splice(a,1)},[y.Hidden](){s.current[a].state="hidden"}}),D.microTask(()=>{var o;!U(s)&&R.current&&((o=r.current)==null||o.call(r))}))}),x=E(i=>{let e=s.current.find(({el:a})=>a===i);return e?e.state!=="visible"&&(e.state="visible"):s.current.push({el:i,state:"visible"}),()=>p(i,y.Unmount)}),C=c([]),h=c(Promise.resolve()),u=c({enter:[],leave:[],idle:[]}),v=E((i,e,a)=>{C.current.splice(0),n&&(n.chains.current[e]=n.chains.current[e].filter(([o])=>o!==i)),n==null||n.chains.current[e].push([i,new Promise(o=>{C.current.push(o)})]),n==null||n.chains.current[e].push([i,new Promise(o=>{Promise.all(u.current[e].map(([f,N])=>N)).then(()=>o())})]),e==="enter"?h.current=h.current.then(()=>n==null?void 0:n.wait.current).then(()=>a(e)):a(e)}),d=E((i,e,a)=>{Promise.all(u.current[e].splice(0).map(([o,f])=>f)).then(()=>{var o;(o=C.current.shift())==null||o()}).then(()=>a(e))});return ee(()=>({children:s,register:x,unregister:p,onStart:v,onStop:d,wait:h,chains:u}),[x,p,s,v,d,u,h])}function Ne(){}let Pe=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function ae(t){var r;let n={};for(let s of Pe)n[s]=(r=t[s])!=null?r:Ne;return n}function Re(t){let n=c(ae(t));return pe(()=>{n.current=ae(t)},[t]),n}let De="div",le=be.RenderStrategy;function _e(t,n){var Q,Y;let{beforeEnter:r,afterEnter:s,beforeLeave:R,afterLeave:D,enter:p,enterFrom:x,enterTo:C,entered:h,leave:u,leaveFrom:v,leaveTo:d,...i}=t,e=c(null),a=ne(e,n),o=(Q=i.unmount)==null||Q?y.Unmount:y.Hidden,{show:f,appear:N,initial:T}=ye(),[l,j]=J(f?"visible":"hidden"),z=xe(),{register:L,unregister:A}=z;H(()=>L(e),[L,e]),H(()=>{if(o===y.Hidden&&e.current){if(f&&l!=="visible"){j("visible");return}return F(l,{["hidden"]:()=>A(e),["visible"]:()=>L(e)})}},[l,e,L,A,f,o]);let k=V({base:S(i.className),enter:S(p),enterFrom:S(x),enterTo:S(C),entered:S(h),leave:S(u),leaveFrom:S(v),leaveTo:S(d)}),O=Re({beforeEnter:r,afterEnter:s,beforeLeave:R,afterLeave:D}),G=te();H(()=>{if(G&&l==="visible"&&e.current===null)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[e,l,G]);let Te=T&&!N,K=N&&f&&T,de=(()=>!G||Te?"idle":f?"enter":"leave")(),_=he(0),fe=E(g=>F(g,{enter:()=>{_.addFlag(b.Opening),O.current.beforeEnter()},leave:()=>{_.addFlag(b.Closing),O.current.beforeLeave()},idle:()=>{}})),me=E(g=>F(g,{enter:()=>{_.removeFlag(b.Opening),O.current.afterEnter()},leave:()=>{_.removeFlag(b.Closing),O.current.afterLeave()},idle:()=>{}})),I=se(()=>{j("hidden"),A(e)},z),B=c(!1);ge({immediate:K,container:e,classes:k,direction:de,onStart:V(g=>{B.current=!0,I.onStart(e,g,fe)}),onStop:V(g=>{B.current=!1,I.onStop(e,g,me),g==="leave"&&!U(I)&&(j("hidden"),A(e))})});let P=i,ce={ref:a};return K?P={...P,className:ie(i.className,...k.current.enter,...k.current.enterFrom)}:B.current&&(P.className=ie(i.className,(Y=e.current)==null?void 0:Y.className),P.className===""&&delete P.className),m.createElement(M.Provider,{value:I},m.createElement(Ee,{value:F(l,{["visible"]:b.Open,["hidden"]:b.Closed})|_.flags},oe({ourProps:ce,theirProps:P,defaultTag:De,features:le,visible:l==="visible",name:"Transition.Child"})))}function He(t,n){let{show:r,appear:s=!1,unmount:R=!0,...D}=t,p=c(null),x=ne(p,n);te();let C=re();if(r===void 0&&C!==null&&(r=(C&b.Open)===b.Open),![!0,!1].includes(r))throw new Error("A <Transition /> is used but it is missing a `show={true | false}` prop.");let[h,u]=J(r?"visible":"hidden"),v=se(()=>{u("hidden")}),[d,i]=J(!0),e=c([r]);H(()=>{d!==!1&&e.current[e.current.length-1]!==r&&(e.current.push(r),i(!1))},[e,r]);let a=ee(()=>({show:r,appear:s,initial:d}),[r,s,d]);H(()=>{if(r)u("visible");else if(!U(v))u("hidden");else{let T=p.current;if(!T)return;let l=T.getBoundingClientRect();l.x===0&&l.y===0&&l.width===0&&l.height===0&&u("hidden")}},[r,v]);let o={unmount:R},f=E(()=>{var T;d&&i(!1),(T=t.beforeEnter)==null||T.call(t)}),N=E(()=>{var T;d&&i(!1),(T=t.beforeLeave)==null||T.call(t)});return m.createElement(M.Provider,{value:v},m.createElement(w.Provider,{value:a},oe({ourProps:{...o,as:Z,children:m.createElement(ue,{ref:x,...o,...D,beforeEnter:f,beforeLeave:N})},theirProps:{},defaultTag:Z,features:le,visible:h==="visible",name:"Transition"})))}function Fe(t,n){let r=W(w)!==null,s=re()!==null;return m.createElement(m.Fragment,null,!r&&s?m.createElement(q,{ref:n,...t}):m.createElement(ue,{ref:n,...t}))}let q=X(He),ue=X(_e),Le=X(Fe),qe=Object.assign(q,{Child:Le,Root:q});export{qe as Transition,Le as TransitionChild}; | ||
"use client";import T,{Fragment as B,createContext as oe,useContext as z,useMemo as se,useRef as E,useState as K}from"react";import{useDisposables as be}from'../../hooks/use-disposables.js';import{useEvent as S}from'../../hooks/use-event.js';import{useFlags as Ee}from'../../hooks/use-flags.js';import{useIsMounted as Se}from'../../hooks/use-is-mounted.js';import{useIsoMorphicEffect as I}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as O}from'../../hooks/use-latest-value.js';import{useOnDisappear as Ne}from'../../hooks/use-on-disappear.js';import{useServerHandoffComplete as ae}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as le}from'../../hooks/use-sync-refs.js';import{useTransition as ye}from'../../hooks/use-transition.js';import{OpenClosedProvider as Re,State as N,useOpenClosed as ue}from'../../internal/open-closed.js';import{classNames as Q}from'../../utils/class-names.js';import{match as D}from'../../utils/match.js';import{RenderFeatures as Pe,RenderStrategy as x,forwardRefWithAs as Y,render as Te}from'../../utils/render.js';function y(t=""){return t.split(/\s+/).filter(n=>n.length>1)}function de(t){var n;return!!(t.enter||t.enterFrom||t.enterTo||t.leave||t.leaveFrom||t.leaveTo)||((n=t.as)!=null?n:me)!==B||T.Children.count(t.children)===1}let W=oe(null);W.displayName="TransitionContext";var xe=(r=>(r.Visible="visible",r.Hidden="hidden",r))(xe||{});function Fe(){let t=z(W);if(t===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return t}function _e(){let t=z(k);if(t===null)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return t}let k=oe(null);k.displayName="NestingContext";function q(t){return"children"in t?q(t.children):t.current.filter(({el:n})=>n.current!==null).filter(({state:n})=>n==="visible").length>0}function fe(t,n){let r=O(t),a=E([]),H=Se(),L=be(),d=S((i,e=x.Hidden)=>{let o=a.current.findIndex(({el:s})=>s===i);o!==-1&&(D(e,{[x.Unmount](){a.current.splice(o,1)},[x.Hidden](){a.current[o].state="hidden"}}),L.microTask(()=>{var s;!q(a)&&H.current&&((s=r.current)==null||s.call(r))}))}),F=S(i=>{let e=a.current.find(({el:o})=>o===i);return e?e.state!=="visible"&&(e.state="visible"):a.current.push({el:i,state:"visible"}),()=>d(i,x.Unmount)}),R=E([]),f=E(Promise.resolve()),C=E({enter:[],leave:[],idle:[]}),m=S((i,e,o)=>{R.current.splice(0),n&&(n.chains.current[e]=n.chains.current[e].filter(([s])=>s!==i)),n==null||n.chains.current[e].push([i,new Promise(s=>{R.current.push(s)})]),n==null||n.chains.current[e].push([i,new Promise(s=>{Promise.all(C.current[e].map(([g,c])=>c)).then(()=>s())})]),e==="enter"?f.current=f.current.then(()=>n==null?void 0:n.wait.current).then(()=>o(e)):o(e)}),h=S((i,e,o)=>{Promise.all(C.current[e].splice(0).map(([s,g])=>g)).then(()=>{var s;(s=R.current.shift())==null||s()}).then(()=>o(e))});return se(()=>({children:a,register:F,unregister:d,onStart:m,onStop:h,wait:f,chains:C}),[F,d,a,m,h,C,f])}let me=B,ce=Pe.RenderStrategy;function De(t,n){var ne,re,ie;let{beforeEnter:r,afterEnter:a,beforeLeave:H,afterLeave:L,enter:d,enterFrom:F,enterTo:R,entered:f,leave:C,leaveFrom:m,leaveTo:h,...i}=t,e=E(null),o=de(t),s=le(...o?[e,n]:n===null?[]:[n]),g=(ne=i.unmount)==null||ne?x.Unmount:x.Hidden,{show:c,appear:V,initial:v}=Fe(),[P,J]=K(c?"visible":"hidden"),$=_e(),{register:w,unregister:M}=$;I(()=>w(e),[w,e]),I(()=>{if(g===x.Hidden&&e.current){if(c&&P!=="visible"){J("visible");return}return D(P,{["hidden"]:()=>M(e),["visible"]:()=>w(e)})}},[P,e,w,M,c,g]);let _=O({base:y(i.className),enter:y(d),enterFrom:y(F),enterTo:y(R),entered:y(f),leave:y(C),leaveFrom:y(m),leaveTo:y(h)}),U=O({beforeEnter:r,afterEnter:a,beforeLeave:H,afterLeave:L}),X=ae();I(()=>{if(o&&X&&P==="visible"&&e.current===null)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")},[e,P,X,o]);let Ce=v&&!V,ee=V&&c&&v,te=(()=>ee?"enter":!X||Ce?"idle":c?"enter":"leave")(),A=Ee(0),he=S(b=>D(b,{enter:()=>{var l,u;A.addFlag(N.Opening),(u=(l=U.current).beforeEnter)==null||u.call(l)},leave:()=>{var l,u;A.addFlag(N.Closing),(u=(l=U.current).beforeLeave)==null||u.call(l)},idle:()=>{}})),ge=S(b=>D(b,{enter:()=>{var l,u;A.removeFlag(N.Opening),(u=(l=U.current).afterEnter)==null||u.call(l)},leave:()=>{var l,u;A.removeFlag(N.Closing),(u=(l=U.current).afterLeave)==null||u.call(l)},idle:()=>{}})),j=E(!1),G=fe(()=>{j.current||(J("hidden"),M(e))},$);ye({container:e,classes:_,direction:te,onStart:O(b=>{j.current=!0,G.onStart(e,b,he)}),onStop:O(b=>{j.current=!1,G.onStop(e,b,ge),b==="leave"&&!q(G)&&(J("hidden"),M(e))})});let p=i,ve={ref:s};return ee?p={...p,className:Q(i.className,..._.current.enter,..._.current.enterFrom)}:j.current?(p.className=Q(i.className,(re=e.current)==null?void 0:re.className),p.className===""&&delete p.className):(p.className=Q(i.className,(ie=e.current)==null?void 0:ie.className,...D(te,{enter:[..._.current.enterTo,..._.current.entered],leave:_.current.leaveTo,idle:[]})),p.className===""&&delete p.className),T.createElement(k.Provider,{value:G},T.createElement(Re,{value:D(P,{["visible"]:N.Open,["hidden"]:N.Closed})|A.flags},Te({ourProps:ve,theirProps:p,defaultTag:me,features:ce,visible:P==="visible",name:"Transition.Child"})))}function He(t,n){let{show:r,appear:a=!1,unmount:H=!0,...L}=t,d=E(null),F=de(t),R=le(...F?[d,n]:n===null?[]:[n]);ae();let f=ue();if(r===void 0&&f!==null&&(r=(f&N.Open)===N.Open),r===void 0)throw new Error("A <Transition /> is used but it is missing a `show={true | false}` prop.");let[C,m]=K(r?"visible":"hidden"),h=fe(()=>{r||m("hidden")}),[i,e]=K(!0),o=E([r]);I(()=>{i!==!1&&o.current[o.current.length-1]!==r&&(o.current.push(r),e(!1))},[o,r]);let s=se(()=>({show:r,appear:a,initial:i}),[r,a,i]);Ne(r,d,()=>m("hidden")),I(()=>{r?m("visible"):!q(h)&&d.current!==null&&m("hidden")},[r,h]);let g={unmount:H},c=S(()=>{var v;i&&e(!1),(v=t.beforeEnter)==null||v.call(t)}),V=S(()=>{var v;i&&e(!1),(v=t.beforeLeave)==null||v.call(t)});return T.createElement(k.Provider,{value:h},T.createElement(W.Provider,{value:s},Te({ourProps:{...g,as:B,children:T.createElement(pe,{ref:R,...g,...L,beforeEnter:c,beforeLeave:V})},theirProps:{},defaultTag:B,features:ce,visible:C==="visible",name:"Transition"})))}function Le(t,n){let r=z(W)!==null,a=ue()!==null;return T.createElement(T.Fragment,null,!r&&a?T.createElement(Z,{ref:n,...t}):T.createElement(pe,{ref:n,...t}))}let Z=Y(He),pe=Y(De),Ae=Y(Le),Ke=Object.assign(Z,{Child:Ae,Root:Z});export{Ke as Transition,Ae as TransitionChild}; |
@@ -1,10 +0,16 @@ | ||
export declare function transition(node: HTMLElement, classes: { | ||
base: string[]; | ||
enter: string[]; | ||
enterFrom: string[]; | ||
enterTo: string[]; | ||
leave: string[]; | ||
leaveFrom: string[]; | ||
leaveTo: string[]; | ||
entered: string[]; | ||
}, show: boolean, done?: () => void): () => void; | ||
import type { MutableRefObject } from 'react'; | ||
export declare function transition(node: HTMLElement, { direction, done, classes, inFlight, }: { | ||
direction: 'enter' | 'leave'; | ||
done?: () => void; | ||
classes: { | ||
base: string[]; | ||
enter: string[]; | ||
enterFrom: string[]; | ||
enterTo: string[]; | ||
leave: string[]; | ||
leaveFrom: string[]; | ||
leaveTo: string[]; | ||
entered: string[]; | ||
}; | ||
inFlight?: MutableRefObject<boolean>; | ||
}): () => void; |
@@ -1,1 +0,1 @@ | ||
import{disposables as s}from'../../../utils/disposables.js';import{match as g}from'../../../utils/match.js';import{once as b}from'../../../utils/once.js';function v(t,...e){t&&e.length>0&&t.classList.add(...e)}function f(t,...e){t&&e.length>0&&t.classList.remove(...e)}function F(t,e){let i=s();if(!t)return i.dispose;let{transitionDuration:u,transitionDelay:a}=getComputedStyle(t),[m,d]=[u,a].map(l=>{let[r=0]=l.split(",").filter(Boolean).map(o=>o.includes("ms")?parseFloat(o):parseFloat(o)*1e3).sort((o,p)=>p-o);return r}),n=m+d;if(n!==0){let l=i.group(r=>{let o=r.setTimeout(()=>{e(),r.dispose()},n);r.addEventListener(t,"transitionrun",p=>{p.target===p.currentTarget&&(o(),r.addEventListener(t,"transitioncancel",T=>{T.target===T.currentTarget&&(e(),l())}))})});i.addEventListener(t,"transitionend",r=>{r.target===r.currentTarget&&(e(),i.dispose())})}else e();return i.add(()=>e()),i.dispose}function y(t,e,i,u){let a=i?"enter":"leave",m=s(),d=u!==void 0?b(u):()=>{};a==="enter"&&(t.removeAttribute("hidden"),t.style.display="");let n=g(a,{enter:()=>e.enter,leave:()=>e.leave}),l=g(a,{enter:()=>e.enterTo,leave:()=>e.leaveTo}),r=g(a,{enter:()=>e.enterFrom,leave:()=>e.leaveFrom});return f(t,...e.base,...e.enter,...e.enterTo,...e.enterFrom,...e.leave,...e.leaveFrom,...e.leaveTo,...e.entered),v(t,...e.base,...n,...r),m.nextFrame(()=>{f(t,...e.base,...n,...r),v(t,...e.base,...n,...l),F(t,()=>(f(t,...e.base,...n),v(t,...e.base,...e.entered),d()))}),m.dispose}export{y as transition}; | ||
import{disposables as g}from'../../../utils/disposables.js';import{match as d}from'../../../utils/match.js';import{once as E}from'../../../utils/once.js';function v(t,...r){t&&r.length>0&&t.classList.add(...r)}function T(t,...r){t&&r.length>0&&t.classList.remove(...r)}function L(t,r){let n=E(r),e=g();if(!t)return e.dispose;let{transitionDuration:o,transitionDelay:m}=getComputedStyle(t),[s,u]=[o,m].map(a=>{let[i=0]=a.split(",").filter(Boolean).map(l=>l.includes("ms")?parseFloat(l):parseFloat(l)*1e3).sort((l,f)=>f-l);return i}),p=s+u;if(p!==0){let a=e.group(i=>{let l=i.setTimeout(()=>{n(),i.dispose()},p);i.addEventListener(t,"transitionrun",f=>{f.target===f.currentTarget&&(l(),i.addEventListener(t,"transitioncancel",b=>{b.target===b.currentTarget&&(n(),a())}))})});e.addEventListener(t,"transitionend",i=>{i.target===i.currentTarget&&(n(),e.dispose())})}else n();return e.dispose}function F(t,{direction:r,done:n,classes:e,inFlight:o}){let m=g(),s=n!==void 0?E(n):()=>{};r==="enter"&&(t.removeAttribute("hidden"),t.style.display="");let u=d(r,{enter:()=>e.enter,leave:()=>e.leave}),p=d(r,{enter:()=>e.enterTo,leave:()=>e.leaveTo}),a=d(r,{enter:()=>e.enterFrom,leave:()=>e.leaveFrom});return M(t,{prepare(){T(t,...e.base,...e.enter,...e.enterTo,...e.enterFrom,...e.leave,...e.leaveFrom,...e.leaveTo,...e.entered),v(t,...e.base,...u,...a)},inFlight:o}),o&&(o.current=!0),m.nextFrame(()=>{m.add(L(t,()=>(T(t,...e.base,...u),v(t,...e.base,...e.entered,...p),o&&(o.current=!1),s()))),T(t,...e.base,...u,...a),v(t,...e.base,...u,...p)}),m.dispose}function M(t,{inFlight:r,prepare:n}){if(r!=null&&r.current){n();return}let e=t.style.transition;t.style.transition="none",n(),t.offsetHeight,t.style.transition=e}export{F as transition}; |
@@ -1,1 +0,1 @@ | ||
export*from'./components/button/button.js';export*from'./components/checkbox/checkbox.js';export*from'./components/combobox/combobox.js';export*from'./components/data-interactive/data-interactive.js';import{Description as m}from'./components/description/description.js';export*from'./components/dialog/dialog.js';export*from'./components/disclosure/disclosure.js';export*from'./components/field/field.js';export*from'./components/fieldset/fieldset.js';export*from'./components/focus-trap/focus-trap.js';export*from'./components/input/input.js';import{Label as c}from'./components/label/label.js';export*from'./components/legend/legend.js';export*from'./components/listbox/listbox.js';export*from'./components/menu/menu.js';export*from'./components/popover/popover.js';import{Portal as g}from'./components/portal/portal.js';export*from'./components/radio-group/radio-group.js';export*from'./components/select/select.js';export*from'./components/switch/switch.js';export*from'./components/tabs/tabs.js';export*from'./components/textarea/textarea.js';export*from'./components/transition/transition.js';export{m as Description,c as Label,g as Portal}; | ||
export*from'./components/button/button.js';export*from'./components/checkbox/checkbox.js';export*from'./components/close-button/close-button.js';export*from'./components/combobox/combobox.js';export*from'./components/data-interactive/data-interactive.js';import{Description as x}from'./components/description/description.js';export*from'./components/dialog/dialog.js';export*from'./components/disclosure/disclosure.js';export*from'./components/field/field.js';export*from'./components/fieldset/fieldset.js';export*from'./components/focus-trap/focus-trap.js';export*from'./components/input/input.js';import{Label as n}from'./components/label/label.js';export*from'./components/legend/legend.js';export*from'./components/listbox/listbox.js';export*from'./components/menu/menu.js';export*from'./components/popover/popover.js';import{Portal as d}from'./components/portal/portal.js';export*from'./components/radio-group/radio-group.js';export*from'./components/select/select.js';export*from'./components/switch/switch.js';export*from'./components/tabs/tabs.js';export*from'./components/textarea/textarea.js';import{useClose as w}from'./internal/close-provider.js';export*from'./components/transition/transition.js';export{x as Description,n as Label,d as Portal,w as useClose}; |
@@ -1,1 +0,1 @@ | ||
import{disposables as m}from'../../utils/disposables.js';import{isIOS as u}from'../../utils/platform.js';function d(){return u()?{before({doc:r,d:l,meta:c}){function o(a){return c.containers.flatMap(n=>n()).some(n=>n.contains(a))}l.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!=="auto"){let t=m();t.style(r.documentElement,"scrollBehavior","auto"),l.add(()=>l.microTask(()=>t.dispose()))}let a=(s=window.scrollY)!=null?s:window.pageYOffset,n=null;l.addEventListener(r,"click",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest("a");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!o(i)&&(n=i)}catch{}},!0),l.addEventListener(r,"touchstart",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&o(e.parentElement);)e=e.parentElement;l.style(e,"overscrollBehavior","contain")}else l.style(t.target,"touchAction","none")}),l.addEventListener(r,"touchmove",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==""&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===""&&t.preventDefault()}else t.preventDefault()},{passive:!1}),l.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;a!==t&&window.scrollTo(0,a),n&&n.isConnected&&(n.scrollIntoView({block:"nearest"}),n=null)})})}}:{}}export{d as handleIOSLocking}; | ||
import{disposables as m}from'../../utils/disposables.js';import{isIOS as u}from'../../utils/platform.js';function d(){return u()?{before({doc:r,d:n,meta:c}){function o(a){return c.containers.flatMap(l=>l()).some(l=>l.contains(a))}n.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!=="auto"){let t=m();t.style(r.documentElement,"scrollBehavior","auto"),n.add(()=>n.microTask(()=>t.dispose()))}let a=(s=window.scrollY)!=null?s:window.pageYOffset,l=null;n.addEventListener(r,"click",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest("a");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!o(i)&&(l=i)}catch{}},!0),n.addEventListener(r,"touchstart",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&o(e.parentElement);)e=e.parentElement;n.style(e,"overscrollBehavior","contain")}else n.style(t.target,"touchAction","none")}),n.addEventListener(r,"touchmove",t=>{if(t.target instanceof HTMLElement){if(t.target.tagName==="INPUT")return;if(o(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==""&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===""&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),n.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;a!==t&&window.scrollTo(0,a),l&&l.isConnected&&(l.scrollIntoView({block:"nearest"}),l=null)})})}}:{}}export{d as handleIOSLocking}; |
@@ -1,1 +0,1 @@ | ||
export declare function useDocumentOverflowLockedEffect(doc: Document | null, shouldBeLocked: boolean, meta?: (meta: Record<string, any>) => Record<string, any>): boolean; | ||
export declare function useDocumentOverflowLockedEffect(shouldBeLocked: boolean, doc: Document | null, meta?: (meta: Record<string, any>) => Record<string, any>): boolean; |
@@ -1,1 +0,1 @@ | ||
import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(e,r,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch("PUSH",e,n),()=>t.dispatch("POP",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect}; | ||
import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(r,e,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch("PUSH",e,n),()=>t.dispatch("POP",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect}; |
@@ -1,2 +0,2 @@ | ||
export type ByComparator<T> = (T extends null ? string : keyof T & string) | ((a: T, z: T) => boolean); | ||
export type ByComparator<T> = (NonNullable<T> extends never ? string : keyof NonNullable<T> & string) | ((a: T, z: T) => boolean); | ||
export declare function useByComparator<T>(by?: ByComparator<T>): (a: T, z: T) => boolean; |
@@ -1,1 +0,1 @@ | ||
import{useCallback as n}from"react";function i(t,r){return t!==null&&r!==null&&typeof t=="object"&&typeof r=="object"&&"id"in t&&"id"in r?t.id===r.id:t===r}function T(t=i){return n((r,e)=>{if(typeof t=="string"){let o=t;return(r==null?void 0:r[o])===(e==null?void 0:e[o])}return t(r,e)},[t])}export{T as useByComparator}; | ||
import{useCallback as n}from"react";function l(e,r){return e!==null&&r!==null&&typeof e=="object"&&typeof r=="object"&&"id"in e&&"id"in r?e.id===r.id:e===r}function u(e=l){return n((r,t)=>{if(typeof e=="string"){let o=e;return(r==null?void 0:r[o])===(t==null?void 0:t[o])}return e(r,t)},[e])}export{u as useByComparator}; |
import { type MutableRefObject } from 'react'; | ||
export declare function useDidElementMove(element: MutableRefObject<HTMLElement | null>, enabled?: boolean): boolean; | ||
export declare function useDidElementMove(enabled: boolean, element: MutableRefObject<HTMLElement | null>): boolean; |
@@ -1,1 +0,1 @@ | ||
import{useRef as o}from"react";import{useIsoMorphicEffect as f}from'./use-iso-morphic-effect.js';function p(e,r=!0){let t=o({left:0,top:0});if(f(()=>{let u=e.current;if(!u)return;let l=u.getBoundingClientRect();l&&(t.current=l)},[r]),e.current==null||!r||e.current===document.activeElement)return!1;let n=e.current.getBoundingClientRect();return n.top!==t.current.top||n.left!==t.current.left}export{p as useDidElementMove}; | ||
import{useRef as o}from"react";import{useIsoMorphicEffect as f}from'./use-iso-morphic-effect.js';function p(r,e){let t=o({left:0,top:0});if(f(()=>{let u=e.current;if(!u)return;let l=u.getBoundingClientRect();l&&(t.current=l)},[r]),e.current==null||!r||e.current===document.activeElement)return!1;let n=e.current.getBoundingClientRect();return n.top!==t.current.top||n.left!==t.current.left}export{p as useDidElementMove}; |
@@ -0,1 +1,5 @@ | ||
/** | ||
* The `useDisposables` hook returns a `disposables` object that is disposed | ||
* when the component is unmounted. | ||
*/ | ||
export declare function useDisposables(): { | ||
@@ -2,0 +6,0 @@ addEventListener<TEventName extends keyof WindowEventMap>(element: Window | Document | HTMLElement, name: TEventName, listener: (event: WindowEventMap[TEventName]) => any, options?: boolean | AddEventListenerOptions | undefined): () => void; |
/// <reference types="react" /> | ||
export declare function useElementSize(ref: React.MutableRefObject<HTMLElement | null>, unit?: boolean): { | ||
export declare function useElementSize(ref: React.MutableRefObject<HTMLElement | null> | HTMLElement | null, unit?: boolean): { | ||
width: number; | ||
@@ -4,0 +4,0 @@ height: number; |
@@ -1,1 +0,1 @@ | ||
import{useState as o}from"react";import{useIsoMorphicEffect as h}from'./use-iso-morphic-effect.js';function u(e){if(e===null)return{width:0,height:0};let{width:r,height:t}=e.getBoundingClientRect();return{width:r,height:t}}function f(e,r=!1){let[t,l]=o(()=>u(e.current));return h(()=>{let i=e.current;if(!i)return;let n=new ResizeObserver(()=>{l(u(i))});return n.observe(i),()=>{n.disconnect()}},[e]),r?{width:`${t.width}px`,height:`${t.height}px`}:t}export{f as useElementSize}; | ||
import{useMemo as o,useReducer as c}from"react";import{useIsoMorphicEffect as h}from'./use-iso-morphic-effect.js';function s(e){if(e===null)return{width:0,height:0};let{width:n,height:t}=e.getBoundingClientRect();return{width:n,height:t}}function f(e,n=!1){let t=e===null?null:"current"in e?e.current:e,[l,u]=c(()=>({}),{}),r=o(()=>s(t),[t,l]);return h(()=>{if(!t)return;let i=new ResizeObserver(u);return i.observe(t),()=>{i.disconnect()}},[t]),n?{width:`${r.width}px`,height:`${r.height}px`}:r}export{f as useElementSize}; |
@@ -1,2 +0,1 @@ | ||
import React from 'react'; | ||
export declare let useId: typeof React.useId; | ||
export { useId } from 'react'; |
@@ -1,1 +0,1 @@ | ||
var o;import t from"react";import{env as r}from'../utils/env.js';import{useIsoMorphicEffect as d}from'./use-iso-morphic-effect.js';import{useServerHandoffComplete as f}from'./use-server-handoff-complete.js';let I=(o=t.useId)!=null?o:function(){let n=f(),[e,u]=t.useState(n?()=>r.nextId():null);return d(()=>{e===null&&u(r.nextId())},[e]),e!=null?""+e:void 0};export{I as useId}; | ||
import{useId as r}from"react";export{r as useId}; |
@@ -5,3 +5,3 @@ import { type MutableRefObject } from 'react'; | ||
type ContainerInput = Container | ContainerCollection; | ||
export declare function useOutsideClick(containers: ContainerInput | (() => ContainerInput), cb: (event: MouseEvent | PointerEvent | FocusEvent | TouchEvent, target: HTMLElement) => void, enabled?: boolean): void; | ||
export declare function useOutsideClick(enabled: boolean, containers: ContainerInput | (() => ContainerInput), cb: (event: MouseEvent | PointerEvent | FocusEvent | TouchEvent, target: HTMLElement) => void): void; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
import{useEffect as d,useRef as f}from"react";import{FocusableMode as p,isFocusableElement as C}from'../utils/focus-management.js';import{isMobile as M}from'../utils/platform.js';import{useDocumentEvent as l}from'./use-document-event.js';import{useWindowEvent as T}from'./use-window-event.js';function w(s,m,a=!0){let i=f(!1);d(()=>{requestAnimationFrame(()=>{i.current=a})},[a]);function c(e,r){if(!i.current||e.defaultPrevented)return;let t=r(e);if(t===null||!t.getRootNode().contains(t)||!t.isConnected)return;let E=function u(n){return typeof n=="function"?u(n()):Array.isArray(n)||n instanceof Set?n:[n]}(s);for(let u of E){if(u===null)continue;let n=u instanceof HTMLElement?u:u.current;if(n!=null&&n.contains(t)||e.composed&&e.composedPath().includes(n))return}return!C(t,p.Loose)&&t.tabIndex!==-1&&e.preventDefault(),m(e,t)}let o=f(null);l("pointerdown",e=>{var r,t;i.current&&(o.current=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),l("mousedown",e=>{var r,t;i.current&&(o.current=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),l("click",e=>{M()||o.current&&(c(e,()=>o.current),o.current=null)},!0),l("touchend",e=>c(e,()=>e.target instanceof HTMLElement?e.target:null),!0),T("blur",e=>c(e,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}export{w as useOutsideClick}; | ||
import{useEffect as p,useRef as f}from"react";import{FocusableMode as C,isFocusableElement as T}from'../utils/focus-management.js';import{isMobile as M}from'../utils/platform.js';import{useDocumentEvent as l}from'./use-document-event.js';import{useIsTopLayer as b}from'./use-is-top-layer.js';import{useWindowEvent as L}from'./use-window-event.js';function I(s,m,E){let a=b(s,"outside-click"),i=f(!1);p(()=>{requestAnimationFrame(()=>{i.current=a})},[a]);function c(e,r){if(!i.current||e.defaultPrevented)return;let t=r(e);if(t===null||!t.getRootNode().contains(t)||!t.isConnected)return;let d=function o(n){return typeof n=="function"?o(n()):Array.isArray(n)||n instanceof Set?n:[n]}(m);for(let o of d){if(o===null)continue;let n=o instanceof HTMLElement?o:o.current;if(n!=null&&n.contains(t)||e.composed&&e.composedPath().includes(n))return}return!T(t,C.Loose)&&t.tabIndex!==-1&&e.preventDefault(),E(e,t)}let u=f(null);l("pointerdown",e=>{var r,t;i.current&&(u.current=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),l("mousedown",e=>{var r,t;i.current&&(u.current=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),l("click",e=>{M()||u.current&&(c(e,()=>u.current),u.current=null)},!0),l("touchend",e=>c(e,()=>e.target instanceof HTMLElement?e.target:null),!0),L("blur",e=>c(e,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}export{I as useOutsideClick}; |
@@ -1,1 +0,1 @@ | ||
import{useSyncExternalStore as e}from'../use-sync-external-store-shim/index.js';function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore}; | ||
import{useSyncExternalStore as e}from"react";function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore}; |
@@ -1,4 +0,3 @@ | ||
import type { MutableRefObject } from 'react'; | ||
import { type MutableRefObject } from 'react'; | ||
interface TransitionArgs { | ||
immediate: boolean; | ||
container: MutableRefObject<HTMLElement | null>; | ||
@@ -19,3 +18,3 @@ classes: MutableRefObject<{ | ||
} | ||
export declare function useTransition({ immediate, container, direction, classes, onStart, onStop, }: TransitionArgs): void; | ||
export declare function useTransition({ container, direction, classes, onStart, onStop }: TransitionArgs): void; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
import{transition as f}from'../components/transition/utils/transition.js';import{disposables as m}from'../utils/disposables.js';import{useDisposables as p}from'./use-disposables.js';import{useIsMounted as b}from'./use-is-mounted.js';import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';import{useLatestValue as g}from'./use-latest-value.js';function A({immediate:t,container:s,direction:n,classes:u,onStart:a,onStop:c}){let l=b(),d=p(),e=g(n);o(()=>{t&&(e.current="enter")},[t]),o(()=>{let r=m();d.add(r.dispose);let i=s.current;if(i&&e.current!=="idle"&&l.current)return r.dispose(),a.current(e.current),r.add(f(i,u.current,e.current==="enter",()=>{r.dispose(),c.current(e.current)})),r.dispose},[n])}export{A as useTransition}; | ||
import{useRef as u}from"react";import{transition as f}from'../components/transition/utils/transition.js';import{useDisposables as c}from'./use-disposables.js';import{useIsMounted as m}from'./use-is-mounted.js';import{useIsoMorphicEffect as d}from'./use-iso-morphic-effect.js';function v({container:i,direction:e,classes:s,onStart:o,onStop:t}){let a=m(),r=c(),l=u(!1);d(()=>{if(e==="idle"||!a.current)return;o.current(e);let n=i.current;return n?r.add(f(n,{direction:e,classes:s.current,inFlight:l,done(){t.current(e)}})):t.current(e),r.dispose},[e])}export{v as useTransition}; |
type AcceptNode = (node: HTMLElement) => typeof NodeFilter.FILTER_ACCEPT | typeof NodeFilter.FILTER_SKIP | typeof NodeFilter.FILTER_REJECT; | ||
export declare function useTreeWalker({ container, accept, walk, enabled, }: { | ||
export declare function useTreeWalker(enabled: boolean, { container, accept, walk, }: { | ||
container: HTMLElement | null; | ||
accept: AcceptNode; | ||
walk(node: HTMLElement): void; | ||
enabled?: boolean; | ||
}): void; | ||
export {}; |
@@ -1,1 +0,1 @@ | ||
import{useEffect as m,useRef as E}from"react";import{getOwnerDocument as T}from'../utils/owner.js';import{useIsoMorphicEffect as N}from'./use-iso-morphic-effect.js';function F({container:e,accept:t,walk:r,enabled:c=!0}){let o=E(t),l=E(r);m(()=>{o.current=t,l.current=r},[t,r]),N(()=>{if(!e||!c)return;let n=T(e);if(!n)return;let f=o.current,p=l.current,d=Object.assign(i=>f(i),{acceptNode:f}),u=n.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,d,!1);for(;u.nextNode();)p(u.currentNode)},[e,c,o,l])}export{F as useTreeWalker}; | ||
import{useEffect as T,useRef as E}from"react";import{getOwnerDocument as d}from'../utils/owner.js';import{useIsoMorphicEffect as N}from'./use-iso-morphic-effect.js';function F(c,{container:e,accept:t,walk:r}){let o=E(t),l=E(r);T(()=>{o.current=t,l.current=r},[t,r]),N(()=>{if(!e||!c)return;let n=d(e);if(!n)return;let f=o.current,p=l.current,i=Object.assign(m=>f(m),{acceptNode:f}),u=n.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,i,!1);for(;u.nextNode();)p(u.currentNode)},[e,c,o,l])}export{F as useTreeWalker}; |
@@ -1,1 +0,1 @@ | ||
import{useEffect as s,useRef as f}from"react";import{useEvent as i}from'./use-event.js';function m(u,t){let e=f([]),r=i(u);s(()=>{let o=[...e.current];for(let[n,a]of t.entries())if(e.current[n]!==a){let l=r(t,o);return e.current=t,l}},[r,...t])}export{m as useWatch}; | ||
import{useEffect as f,useRef as s}from"react";import{useEvent as i}from'./use-event.js';function m(u,t){let e=s([]),r=i(u);f(()=>{let o=[...e.current];for(let[a,l]of t.entries())if(e.current[a]!==l){let n=r(t,o);return e.current=t,n}},[r,...t])}export{m as useWatch}; |
export * from './components/button/button.js'; | ||
export * from './components/checkbox/checkbox.js'; | ||
export * from './components/close-button/close-button.js'; | ||
export * from './components/combobox/combobox.js'; | ||
@@ -23,2 +24,3 @@ export * from './components/data-interactive/data-interactive.js'; | ||
export * from './components/textarea/textarea.js'; | ||
export { useClose } from './internal/close-provider.js'; | ||
export * from './components/transition/transition.js'; |
@@ -1,1 +0,1 @@ | ||
export*from'./components/button/button.js';export*from'./components/checkbox/checkbox.js';export*from'./components/combobox/combobox.js';export*from'./components/data-interactive/data-interactive.js';import{Description as m}from'./components/description/description.js';export*from'./components/dialog/dialog.js';export*from'./components/disclosure/disclosure.js';export*from'./components/field/field.js';export*from'./components/fieldset/fieldset.js';export*from'./components/focus-trap/focus-trap.js';export*from'./components/input/input.js';import{Label as c}from'./components/label/label.js';export*from'./components/legend/legend.js';export*from'./components/listbox/listbox.js';export*from'./components/menu/menu.js';export*from'./components/popover/popover.js';import{Portal as g}from'./components/portal/portal.js';export*from'./components/radio-group/radio-group.js';export*from'./components/select/select.js';export*from'./components/switch/switch.js';export*from'./components/tabs/tabs.js';export*from'./components/textarea/textarea.js';export*from'./components/transition/transition.js';export{m as Description,c as Label,g as Portal}; | ||
export*from'./components/button/button.js';export*from'./components/checkbox/checkbox.js';export*from'./components/close-button/close-button.js';export*from'./components/combobox/combobox.js';export*from'./components/data-interactive/data-interactive.js';import{Description as x}from'./components/description/description.js';export*from'./components/dialog/dialog.js';export*from'./components/disclosure/disclosure.js';export*from'./components/field/field.js';export*from'./components/fieldset/fieldset.js';export*from'./components/focus-trap/focus-trap.js';export*from'./components/input/input.js';import{Label as n}from'./components/label/label.js';export*from'./components/legend/legend.js';export*from'./components/listbox/listbox.js';export*from'./components/menu/menu.js';export*from'./components/popover/popover.js';import{Portal as d}from'./components/portal/portal.js';export*from'./components/radio-group/radio-group.js';export*from'./components/select/select.js';export*from'./components/switch/switch.js';export*from'./components/tabs/tabs.js';export*from'./components/textarea/textarea.js';import{useClose as w}from'./internal/close-provider.js';export*from'./components/transition/transition.js';export{x as Description,n as Label,d as Portal,w as useClose}; |
@@ -19,3 +19,3 @@ import { type InnerProps } from '@floating-ui/react'; | ||
}; | ||
export type AnchorProps = Partial<BaseAnchorProps & { | ||
export type AnchorProps = false | (`${Placement}` | `${Placement} ${Align}`) | Partial<BaseAnchorProps & { | ||
/** | ||
@@ -27,3 +27,3 @@ * The `to` value defines which side of the trigger the panel should be placed on and its | ||
}>; | ||
export type AnchorPropsWithSelection = Partial<BaseAnchorProps & { | ||
export type AnchorPropsWithSelection = false | (`${Placement | 'selection'}` | `${Placement | 'selection'} ${Align}`) | Partial<BaseAnchorProps & { | ||
/** | ||
@@ -41,2 +41,3 @@ * The `to` value defines which side of the trigger the panel should be placed on and its | ||
}>; | ||
export declare function useResolvedAnchor<T extends AnchorProps | AnchorPropsWithSelection>(anchor?: T): Exclude<T, boolean | string> | null; | ||
export declare function useFloatingReference(): ((node: import("@floating-ui/react-dom").ReferenceType | null) => void) & ((node: any) => void); | ||
@@ -47,3 +48,3 @@ export declare function useFloatingReferenceProps(): (userProps?: React.HTMLProps<Element> | undefined) => Record<string, unknown>; | ||
}; | ||
export declare function useFloatingPanel(placement?: AnchorPropsWithSelection & InternalFloatingPanelProps): readonly [((node: HTMLElement | null) => void) & ((node: HTMLElement | null) => void), React.CSSProperties | undefined]; | ||
export declare function useFloatingPanel(placement?: (AnchorPropsWithSelection & InternalFloatingPanelProps) | null): readonly [((node: HTMLElement | null) => void) & ((node: HTMLElement | null) => void), React.CSSProperties | undefined]; | ||
export declare function FloatingProvider({ children, enabled, }: { | ||
@@ -50,0 +51,0 @@ children: React.ReactNode; |
@@ -1,1 +0,1 @@ | ||
import{autoUpdate as Z,flip as ee,inner as te,offset as ne,shift as le,size as re,useFloating as oe,useInnerOffset as ie,useInteractions as se}from"@floating-ui/react";import*as j from"react";import{createContext as _,useCallback as ae,useContext as b,useMemo as v,useRef as ue,useState as T}from"react";import{useDisposables as pe}from'../hooks/use-disposables.js';import{useEvent as z}from'../hooks/use-event.js';import{useIsoMorphicEffect as E}from'../hooks/use-iso-morphic-effect.js';let y=_({styles:void 0,setReference:()=>{},setFloating:()=>{},getReferenceProps:()=>({}),getFloatingProps:()=>({}),slot:{}});y.displayName="FloatingContext";let $=_(null);$.displayName="PlacementContext";function ye(){return b(y).setReference}function xe(){return b(y).getReferenceProps}function Fe(){let{getFloatingProps:e,slot:t}=b(y);return ae((...n)=>Object.assign({},e(...n),{"data-anchor":t.anchor}),[e,t])}function be(e){let t=b($),n=v(()=>e,[JSON.stringify(e,typeof HTMLElement!="undefined"?(s,a)=>a instanceof HTMLElement?a.outerHTML:a:void 0)]);E(()=>{t==null||t(n!=null?n:null)},[t,n]);let l=b(y);return v(()=>[l.setFloating,l.styles],[l.setFloating,l.styles])}let q=4;function Me({children:e,enabled:t=!0}){let[n,l]=T(null),[s,a]=T(0),M=ue(null),[m,o]=T(null);fe(m);let r=t&&n!==null&&m!==null,{to:x="bottom",gap:I=0,offset:R=0,padding:p=0,inner:d}=ce(n,m),[i,u="center"]=x.split(" ");E(()=>{r&&a(0)},[r]);let{refs:F,floatingStyles:w,context:f}=oe({open:r,placement:i==="selection"?u==="center"?"bottom":`bottom-${u}`:u==="center"?`${i}`:`${i}-${u}`,strategy:"fixed",transform:!1,middleware:[ne({mainAxis:i==="selection"?0:I,crossAxis:R}),le({padding:p}),i!=="selection"&&ee(),i==="selection"&&d?te({...d,padding:p,overflowRef:M,offset:s,minItemsVisible:q,referenceOverflowThreshold:p,onFallbackChange(P){var k,N;if(!P)return;let c=f.elements.floating;if(!c)return;let C=parseFloat(getComputedStyle(c).scrollPaddingBottom)||0,H=Math.min(q,c.childElementCount),B=0,O=0;for(let g of(N=(k=f.elements.floating)==null?void 0:k.childNodes)!=null?N:[])if(g instanceof HTMLElement){let h=g.offsetTop,U=h+g.clientHeight+C,S=c.scrollTop,W=S+c.clientHeight;if(h>=S&&U<=W)H--;else{O=Math.max(0,Math.min(U,W)-Math.max(h,S)),B=g.clientHeight;break}}H>=1&&a(g=>{let h=B*H-O+C;return g>=h?g:h})}}):null,re({apply({availableWidth:P,availableHeight:c,elements:C}){Object.assign(C.floating.style,{maxWidth:`${P-p}px`,maxHeight:`${c-p}px`})}})].filter(Boolean),whileElementsMounted:Z}),[A=i,V=u]=f.placement.split("-");i==="selection"&&(A="selection");let G=v(()=>({anchor:[A,V].filter(Boolean).join(" ")}),[A,V]),K=ie(f,{overflowRef:M,onChange:a}),{getReferenceProps:Q,getFloatingProps:X}=se([K]),Y=z(P=>{o(P),F.setFloating(P)});return j.createElement($.Provider,{value:l},j.createElement(y.Provider,{value:{setFloating:Y,setReference:F.setReference,styles:r?w:{},getReferenceProps:Q,getFloatingProps:X,slot:G}},e))}function fe(e){E(()=>{if(!e)return;let t=new MutationObserver(()=>{let n=e.style.maxHeight;parseFloat(n)!==parseInt(n)&&(e.style.maxHeight=`${Math.ceil(parseFloat(n))}px`)});return t.observe(e,{attributes:!0,attributeFilter:["style"]}),()=>{t.disconnect()}},[e])}function ce(e,t){let n=L(e==null?void 0:e.gap,t),l=L(e==null?void 0:e.offset,t),s=L(e==null?void 0:e.padding,t);return{...e,gap:n,offset:l,padding:s}}function L(e,t,n=void 0){let l=pe(),s=z((o,r)=>{if(o==null)return[n,null];if(typeof o=="number")return[o,null];if(typeof o=="string"){if(!r)return[n,null];let x=J(o,r);return[x,I=>{let R=D(o);{let p=R.map(d=>window.getComputedStyle(r).getPropertyValue(d));l.requestAnimationFrame(function d(){l.nextFrame(d);let i=!1;for(let[F,w]of R.entries()){let f=window.getComputedStyle(r).getPropertyValue(w);if(p[F]!==f){p[F]=f,i=!0;break}}if(!i)return;let u=J(o,r);x!==u&&(I(u),x=u)})}return l.dispose}]}return[n,null]}),a=v(()=>s(e,t)[0],[e,t]),[M=a,m]=T();return E(()=>{let[o,r]=s(e,t);if(m(o),!!r)return r(m)},[e,t]),M}function D(e){let t=/var\((.*)\)/.exec(e);if(t){let n=t[1].indexOf(",");if(n===-1)return[t[1]];let l=t[1].slice(0,n).trim(),s=t[1].slice(n+1).trim();return s?[l,...D(s)]:[l]}return[]}function J(e,t){let n=document.createElement("div");t.appendChild(n),n.style.setProperty("margin-top","0px","important"),n.style.setProperty("margin-top",e,"important");let l=parseFloat(window.getComputedStyle(n).marginTop)||0;return t.removeChild(n),l}export{Me as FloatingProvider,be as useFloatingPanel,Fe as useFloatingPanelProps,ye as useFloatingReference,xe as useFloatingReferenceProps}; | ||
import{autoUpdate as Z,flip as ee,inner as te,offset as ne,shift as le,size as re,useFloating as oe,useInnerOffset as ie,useInteractions as se}from"@floating-ui/react";import*as j from"react";import{createContext as _,useCallback as ae,useContext as R,useMemo as v,useRef as ue,useState as E}from"react";import{useDisposables as fe}from'../hooks/use-disposables.js';import{useEvent as z}from'../hooks/use-event.js';import{useIsoMorphicEffect as A}from'../hooks/use-iso-morphic-effect.js';let y=_({styles:void 0,setReference:()=>{},setFloating:()=>{},getReferenceProps:()=>({}),getFloatingProps:()=>({}),slot:{}});y.displayName="FloatingContext";let S=_(null);S.displayName="PlacementContext";function xe(e){return v(()=>e?typeof e=="string"?{to:e}:e:null,[e])}function ye(){return R(y).setReference}function Fe(){return R(y).getReferenceProps}function be(){let{getFloatingProps:e,slot:t}=R(y);return ae((...n)=>Object.assign({},e(...n),{"data-anchor":t.anchor}),[e,t])}function Re(e=null){e===!1&&(e=null),typeof e=="string"&&(e={to:e});let t=R(S),n=v(()=>e,[JSON.stringify(e,typeof HTMLElement!="undefined"?(a,r)=>r instanceof HTMLElement?r.outerHTML:r:void 0)]);A(()=>{t==null||t(n!=null?n:null)},[t,n]);let l=R(y);return v(()=>[l.setFloating,e?l.styles:{}],[l.setFloating,e,l.styles])}let q=4;function ve({children:e,enabled:t=!0}){let[n,l]=E(null),[a,r]=E(0),c=ue(null),[u,i]=E(null);pe(u);let o=t&&n!==null&&u!==null,{to:F="bottom",gap:C=0,offset:M=0,padding:p=0,inner:P}=ce(n,u),[s,f="center"]=F.split(" ");A(()=>{o&&r(0)},[o]);let{refs:b,floatingStyles:$,context:g}=oe({open:o,placement:s==="selection"?f==="center"?"bottom":`bottom-${f}`:f==="center"?`${s}`:`${s}-${f}`,strategy:"absolute",transform:!1,middleware:[ne({mainAxis:s==="selection"?0:C,crossAxis:M}),le({padding:p}),s!=="selection"&&ee({padding:p}),s==="selection"&&P?te({...P,padding:p,overflowRef:c,offset:a,minItemsVisible:q,referenceOverflowThreshold:p,onFallbackChange(h){var W,k;if(!h)return;let d=g.elements.floating;if(!d)return;let T=parseFloat(getComputedStyle(d).scrollPaddingBottom)||0,w=Math.min(q,d.childElementCount),B=0,O=0;for(let m of(k=(W=g.elements.floating)==null?void 0:W.childNodes)!=null?k:[])if(m instanceof HTMLElement){let x=m.offsetTop,N=x+m.clientHeight+T,H=d.scrollTop,U=H+d.clientHeight;if(x>=H&&N<=U)w--;else{O=Math.max(0,Math.min(N,U)-Math.max(x,H)),B=m.clientHeight;break}}w>=1&&r(m=>{let x=B*w-O+T;return m>=x?m:x})}}):null,re({padding:p,apply({availableWidth:h,availableHeight:d,elements:T}){Object.assign(T.floating.style,{overflow:"auto",maxWidth:`${h}px`,maxHeight:`min(var(--anchor-max-height, 100vh), ${d}px)`})}})].filter(Boolean),whileElementsMounted:Z}),[I=s,V=f]=g.placement.split("-");s==="selection"&&(I="selection");let G=v(()=>({anchor:[I,V].filter(Boolean).join(" ")}),[I,V]),K=ie(g,{overflowRef:c,onChange:r}),{getReferenceProps:Q,getFloatingProps:X}=se([K]),Y=z(h=>{i(h),b.setFloating(h)});return j.createElement(S.Provider,{value:l},j.createElement(y.Provider,{value:{setFloating:Y,setReference:b.setReference,styles:$,getReferenceProps:Q,getFloatingProps:X,slot:G}},e))}function pe(e){A(()=>{if(!e)return;let t=new MutationObserver(()=>{let n=e.style.maxHeight;parseFloat(n)!==parseInt(n)&&(e.style.maxHeight=`${Math.ceil(parseFloat(n))}px`)});return t.observe(e,{attributes:!0,attributeFilter:["style"]}),()=>{t.disconnect()}},[e])}function ce(e,t){var r,c,u;let n=L((r=e==null?void 0:e.gap)!=null?r:"var(--anchor-gap, 0)",t),l=L((c=e==null?void 0:e.offset)!=null?c:"var(--anchor-offset, 0)",t),a=L((u=e==null?void 0:e.padding)!=null?u:"var(--anchor-padding, 0)",t);return{...e,gap:n,offset:l,padding:a}}function L(e,t,n=void 0){let l=fe(),a=z((i,o)=>{if(i==null)return[n,null];if(typeof i=="number")return[i,null];if(typeof i=="string"){if(!o)return[n,null];let F=J(i,o);return[F,C=>{let M=D(i);{let p=M.map(P=>window.getComputedStyle(o).getPropertyValue(P));l.requestAnimationFrame(function P(){l.nextFrame(P);let s=!1;for(let[b,$]of M.entries()){let g=window.getComputedStyle(o).getPropertyValue($);if(p[b]!==g){p[b]=g,s=!0;break}}if(!s)return;let f=J(i,o);F!==f&&(C(f),F=f)})}return l.dispose}]}return[n,null]}),r=v(()=>a(e,t)[0],[e,t]),[c=r,u]=E();return A(()=>{let[i,o]=a(e,t);if(u(i),!!o)return o(u)},[e,t]),c}function D(e){let t=/var\((.*)\)/.exec(e);if(t){let n=t[1].indexOf(",");if(n===-1)return[t[1]];let l=t[1].slice(0,n).trim(),a=t[1].slice(n+1).trim();return a?[l,...D(a)]:[l]}return[]}function J(e,t){let n=document.createElement("div");t.appendChild(n),n.style.setProperty("margin-top","0px","important"),n.style.setProperty("margin-top",e,"important");let l=parseFloat(window.getComputedStyle(n).marginTop)||0;return t.removeChild(n),l}export{ve as FloatingProvider,Re as useFloatingPanel,be as useFloatingPanelProps,ye as useFloatingReference,Fe as useFloatingReferenceProps,xe as useResolvedAnchor}; |
import React from 'react'; | ||
export declare function FormFieldsProvider(props: React.PropsWithChildren<{}>): React.JSX.Element; | ||
export declare function HoistFormFields({ children }: React.PropsWithChildren<{}>): React.JSX.Element | null; | ||
export declare function FormFields({ data, form: formId, onReset, }: { | ||
export declare function FormFields({ data, form: formId, disabled, onReset, overrides, }: { | ||
data: Record<string, any>; | ||
overrides?: Record<string, any>; | ||
form?: string; | ||
disabled?: boolean; | ||
onReset?: (e: Event) => void; | ||
}): React.JSX.Element; |
@@ -1,1 +0,1 @@ | ||
import o,{createContext as a,useContext as H,useEffect as m,useState as s}from"react";import{createPortal as v}from"react-dom";import{useDisposables as E}from'../hooks/use-disposables.js';import{objectToFormEntries as g}from'../utils/form.js';import{compact as h}from'../utils/render.js';import{Hidden as i,HiddenFeatures as l}from'./hidden.js';let u=a(null);function b(t){let[r,e]=s(null);return o.createElement(u.Provider,{value:{target:r}},t.children,o.createElement(i,{features:l.Hidden,ref:e}))}function x({children:t}){let r=H(u);if(!r)return o.createElement(o.Fragment,null,t);let{target:e}=r;return e?v(o.createElement(o.Fragment,null,t),e):null}function O({data:t,form:r,onReset:e}){let[n,f]=s(null),F=E();return m(()=>{if(e&&n)return F.addEventListener(n,"reset",e)},[n,r,e]),o.createElement(x,null,o.createElement(y,{setForm:f,formId:r}),g(t).map(([d,p])=>o.createElement(i,{features:l.Hidden,...h({key:d,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:r,name:d,value:p})})))}function y({setForm:t,formId:r}){return m(()=>{if(r){let e=document.getElementById(r);e&&t(e)}},[t,r]),r?null:o.createElement(i,{features:l.Hidden,as:"input",type:"hidden",hidden:!0,readOnly:!0,ref:e=>{if(!e)return;let n=e.closest("form");n&&t(n)}})}export{O as FormFields,b as FormFieldsProvider,x as HoistFormFields}; | ||
import o,{createContext as H,useContext as E,useEffect as m,useState as u}from"react";import{createPortal as g}from"react-dom";import{useDisposables as h}from'../hooks/use-disposables.js';import{objectToFormEntries as x}from'../utils/form.js';import{compact as y}from'../utils/render.js';import{Hidden as l,HiddenFeatures as d}from'./hidden.js';let f=H(null);function W(t){let[e,r]=u(null);return o.createElement(f.Provider,{value:{target:e}},t.children,o.createElement(l,{features:d.Hidden,ref:r}))}function c({children:t}){let e=E(f);if(!e)return o.createElement(o.Fragment,null,t);let{target:r}=e;return r?g(o.createElement(o.Fragment,null,t),r):null}function j({data:t,form:e,disabled:r,onReset:n,overrides:F}){let[i,a]=u(null),p=h();return m(()=>{if(n&&i)return p.addEventListener(i,"reset",n)},[i,e,n]),o.createElement(c,null,o.createElement(C,{setForm:a,formId:e}),x(t).map(([s,v])=>o.createElement(l,{features:d.Hidden,...y({key:s,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:e,disabled:r,name:s,value:v,...F})})))}function C({setForm:t,formId:e}){return m(()=>{if(e){let r=document.getElementById(e);r&&t(r)}},[t,e]),e?null:o.createElement(l,{features:d.Hidden,as:"input",type:"hidden",hidden:!0,readOnly:!0,ref:r=>{if(!r)return;let n=r.closest("form");n&&t(n)}})}export{j as FormFields,W as FormFieldsProvider,c as HoistFormFields}; |
@@ -1,1 +0,1 @@ |
import{forwardRefWithAs as p,render as i}from'../utils/render.js';let a="div";var s=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(s||{});function l(t,o){var n;let{features:d=1,...e}=t,r={ref:o,"aria-hidden":(d&2)===2?!0:(n=e["aria-hidden"])!=null?n:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(d&4)===4&&(d&2)!==2&&{display:"none"}}};return i({ourProps:r,theirProps:e,slot:{},defaultTag:a,name:"Hidden"})}let H=p(l);export{H as Hidden,s as HiddenFeatures}; |
import{forwardRefWithAs as i,render as p}from'../utils/render.js';let a="div";var s=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(s||{});function l(t,r){var n;let{features:d=1,...e}=t,o={ref:r,"aria-hidden":(d&2)===2?!0:(n=e["aria-hidden"])!=null?n:void 0,hidden:(d&4)===4?!0:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(d&4)===4&&(d&2)!==2&&{display:"none"}}};return p({ourProps:o,theirProps:e,slot:{},defaultTag:a,name:"Hidden"})}let T=i(l);export{T as Hidden,s as HiddenFeatures}; |
export type Disposables = ReturnType<typeof disposables>; | ||
/** | ||
* Disposables are a way to manage event handlers and functions like | ||
* `setTimeout` and `requestAnimationFrame` that need to be cleaned up when they | ||
* are no longer needed. | ||
* | ||
* | ||
* When you register a disposable function, it is added to a collection of | ||
* disposables. Each disposable in the collection provides a `dispose` clean up | ||
* function that can be called when it's no longer needed. There is also a | ||
* `dispose` function on the collection itself that can be used to clean up all | ||
* pending disposables in that collection. | ||
*/ | ||
export declare function disposables(): { | ||
@@ -3,0 +15,0 @@ addEventListener<TEventName extends keyof WindowEventMap>(element: HTMLElement | Window | Document, name: TEventName, listener: (event: WindowEventMap[TEventName]) => any, options?: boolean | AddEventListenerOptions): () => void; |
@@ -1,1 +0,1 @@ | ||
import{microTask as i}from'./micro-task.js';function o(){let n=[],r={addEventListener(e,t,s,a){return e.addEventListener(t,s,a),r.add(()=>e.removeEventListener(t,s,a))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return i(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,s){let a=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:s}),this.add(()=>{Object.assign(e.style,{[t]:a})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return n.push(e),()=>{let t=n.indexOf(e);if(t>=0)for(let s of n.splice(t,1))s()}},dispose(){for(let e of n.splice(0))e()}};return r}export{o as disposables}; | ||
import{microTask as i}from'./micro-task.js';function o(){let n=[],r={addEventListener(e,t,s,a){return e.addEventListener(t,s,a),r.add(()=>e.removeEventListener(t,s,a))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return i(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,s){let a=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:s}),this.add(()=>{Object.assign(e.style,{[t]:a})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return n.includes(e)||n.push(e),()=>{let t=n.indexOf(e);if(t>=0)for(let s of n.splice(t,1))s()}},dispose(){for(let e of n.splice(0))e()}};return r}export{o as disposables}; |
@@ -1,1 +0,1 @@ | ||
import{disposables as N}from'./disposables.js';import{match as L}from'./match.js';import{getOwnerDocument as E}from'./owner.js';let f=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(","),p=["[data-autofocus]"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var F=(n=>(n[n.First=1]="First",n[n.Previous=2]="Previous",n[n.Next=4]="Next",n[n.Last=8]="Last",n[n.WrapAround=16]="WrapAround",n[n.NoScroll=32]="NoScroll",n[n.AutoFocus=64]="AutoFocus",n))(F||{}),T=(o=>(o[o.Error=0]="Error",o[o.Overflow=1]="Overflow",o[o.Success=2]="Success",o[o.Underflow=3]="Underflow",o))(T||{}),y=(t=>(t[t.Previous=-1]="Previous",t[t.Next=1]="Next",t))(y||{});function b(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(f)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function S(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(p)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var h=(t=>(t[t.Strict=0]="Strict",t[t.Loose=1]="Loose",t))(h||{});function A(e,r=0){var t;return e===((t=E(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(f)},[1](){let u=e;for(;u!==null;){if(u.matches(f))return!0;u=u.parentElement}return!1}})}function G(e){let r=E(e);N().nextFrame(()=>{r&&!A(r.activeElement,0)&&w(e)})}var H=(t=>(t[t.Keyboard=0]="Keyboard",t[t.Mouse=1]="Mouse",t))(H||{});typeof window!="undefined"&&typeof document!="undefined"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function w(e){e==null||e.focus({preventScroll:!0})}let I=["textarea","input"].join(",");function O(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,I))!=null?t:!1}function _(e,r=t=>t){return e.slice().sort((t,u)=>{let o=r(t),c=r(u);if(o===null||c===null)return 0;let l=o.compareDocumentPosition(c);return l&Node.DOCUMENT_POSITION_FOLLOWING?-1:l&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function j(e,r){return P(b(),r,{relativeTo:e})}function P(e,r,{sorted:t=!0,relativeTo:u=null,skipElements:o=[]}={}){let c=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e.ownerDocument,l=Array.isArray(e)?t?_(e):e:r&64?S(e):b(e);o.length>0&&l.length>1&&(l=l.filter(s=>!o.some(a=>a!=null&&"current"in a?(a==null?void 0:a.current)===s:a===s))),u=u!=null?u:c.activeElement;let n=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),x=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,l.indexOf(u))-1;if(r&4)return Math.max(0,l.indexOf(u))+1;if(r&8)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),M=r&32?{preventScroll:!0}:{},m=0,d=l.length,i;do{if(m>=d||m+d<=0)return 0;let s=x+m;if(r&16)s=(s+d)%d;else{if(s<0)return 3;if(s>=d)return 1}i=l[s],i==null||i.focus(M),m+=n}while(i!==c.activeElement);return r&6&&O(i)&&i.select(),2}export{F as Focus,T as FocusResult,h as FocusableMode,w as focusElement,j as focusFrom,P as focusIn,S as getAutoFocusableElements,b as getFocusableElements,A as isFocusableElement,G as restoreFocusIfNecessary,_ as sortByDomNode}; | ||
import{disposables as N}from'./disposables.js';import{match as L}from'./match.js';import{getOwnerDocument as E}from'./owner.js';let f=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(","),p=["[data-autofocus]"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var F=(n=>(n[n.First=1]="First",n[n.Previous=2]="Previous",n[n.Next=4]="Next",n[n.Last=8]="Last",n[n.WrapAround=16]="WrapAround",n[n.NoScroll=32]="NoScroll",n[n.AutoFocus=64]="AutoFocus",n))(F||{}),T=(o=>(o[o.Error=0]="Error",o[o.Overflow=1]="Overflow",o[o.Success=2]="Success",o[o.Underflow=3]="Underflow",o))(T||{}),y=(t=>(t[t.Previous=-1]="Previous",t[t.Next=1]="Next",t))(y||{});function b(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(f)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function S(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(p)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var h=(t=>(t[t.Strict=0]="Strict",t[t.Loose=1]="Loose",t))(h||{});function A(e,r=0){var t;return e===((t=E(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(f)},[1](){let u=e;for(;u!==null;){if(u.matches(f))return!0;u=u.parentElement}return!1}})}function G(e){let r=E(e);N().nextFrame(()=>{r&&!A(r.activeElement,0)&&I(e)})}var H=(t=>(t[t.Keyboard=0]="Keyboard",t[t.Mouse=1]="Mouse",t))(H||{});typeof window!="undefined"&&typeof document!="undefined"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function I(e){e==null||e.focus({preventScroll:!0})}let w=["textarea","input"].join(",");function O(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,w))!=null?t:!1}function _(e,r=t=>t){return e.slice().sort((t,u)=>{let o=r(t),c=r(u);if(o===null||c===null)return 0;let l=o.compareDocumentPosition(c);return l&Node.DOCUMENT_POSITION_FOLLOWING?-1:l&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function j(e,r){return P(b(),r,{relativeTo:e})}function P(e,r,{sorted:t=!0,relativeTo:u=null,skipElements:o=[]}={}){let c=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e.ownerDocument,l=Array.isArray(e)?t?_(e):e:r&64?S(e):b(e);o.length>0&&l.length>1&&(l=l.filter(s=>!o.some(a=>a!=null&&"current"in a?(a==null?void 0:a.current)===s:a===s))),u=u!=null?u:c.activeElement;let n=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),x=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,l.indexOf(u))-1;if(r&4)return Math.max(0,l.indexOf(u))+1;if(r&8)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),M=r&32?{preventScroll:!0}:{},m=0,d=l.length,i;do{if(m>=d||m+d<=0)return 0;let s=x+m;if(r&16)s=(s+d)%d;else{if(s<0)return 3;if(s>=d)return 1}i=l[s],i==null||i.focus(M),m+=n}while(i!==c.activeElement);return r&6&&O(i)&&i.select(),2}export{F as Focus,T as FocusResult,h as FocusableMode,I as focusElement,j as focusFrom,P as focusIn,S as getAutoFocusableElements,b as getFocusableElements,A as isFocusableElement,G as restoreFocusIfNecessary,_ as sortByDomNode}; |
@@ -1,4 +0,4 @@ | ||
import{Fragment as b,cloneElement as N,createElement as x,forwardRef as E,isValidElement as j,useCallback as S,useRef as v}from"react";import{classNames as h}from'./class-names.js';import{match as w}from'./match.js';var k=(a=>(a[a.None=0]="None",a[a.RenderStrategy=1]="RenderStrategy",a[a.Static=2]="Static",a))(k||{}),O=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(O||{});function _({ourProps:r,theirProps:n,slot:e,defaultTag:a,features:s,visible:t=!0,name:l,mergeRefs:i}){i=i!=null?i:M;let o=P(n,r);if(t)return g(o,e,a,l,i);let y=s!=null?s:0;if(y&2){let{static:f=!1,...d}=o;if(f)return g(d,e,a,l,i)}if(y&1){let{unmount:f=!0,...d}=o;return w(f?0:1,{[0](){return null},[1](){return g({...d,hidden:!0,style:{display:"none"}},e,a,l,i)}})}return g(o,e,a,l,i)}function g(r,n={},e,a,s){let{as:t=e,children:l,refName:i="ref",...o}=R(r,["unmount","static"]),y=r.ref!==void 0?{[i]:r.ref}:{},f=typeof l=="function"?l(n):l;"className"in o&&o.className&&typeof o.className=="function"&&(o.className=o.className(n)),o["aria-labelledby"]&&o["aria-labelledby"]===o.id&&(o["aria-labelledby"]=void 0);let d={};if(n){let u=!1,p=[];for(let[c,T]of Object.entries(n))typeof T=="boolean"&&(u=!0),T===!0&&p.push(c.replace(/([A-Z])/g,F=>`-${F.toLowerCase()}`));if(u){d["data-headlessui-state"]=p.join(" ");for(let c of p)d[`data-${c}`]=""}}if(t===b&&(Object.keys(m(o)).length>0||Object.keys(m(d)).length>0))if(!j(f)||Array.isArray(f)&&f.length>1){if(Object.keys(m(o)).length>0)throw new Error(['Passing props on "Fragment"!',"",`The current component <${a} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(m(o)).concat(Object.keys(m(d))).map(u=>` - ${u}`).join(` | ||
`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(u=>` - ${u}`).join(` | ||
import{Fragment as R,cloneElement as x,createElement as E,forwardRef as j,isValidElement as S,useCallback as v,useRef as w}from"react";import{classNames as P}from'./class-names.js';import{match as k}from'./match.js';var O=(a=>(a[a.None=0]="None",a[a.RenderStrategy=1]="RenderStrategy",a[a.Static=2]="Static",a))(O||{}),M=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(M||{});function H({ourProps:r,theirProps:n,slot:e,defaultTag:a,features:s,visible:t=!0,name:l,mergeRefs:i}){i=i!=null?i:A;let o=N(n,r);if(t)return b(o,e,a,l,i);let y=s!=null?s:0;if(y&2){let{static:f=!1,...u}=o;if(f)return b(u,e,a,l,i)}if(y&1){let{unmount:f=!0,...u}=o;return k(f?0:1,{[0](){return null},[1](){return b({...u,hidden:!0,style:{display:"none"}},e,a,l,i)}})}return b(o,e,a,l,i)}function b(r,n={},e,a,s){let{as:t=e,children:l,refName:i="ref",...o}=h(r,["unmount","static"]),y=r.ref!==void 0?{[i]:r.ref}:{},f=typeof l=="function"?l(n):l;"className"in o&&o.className&&typeof o.className=="function"&&(o.className=o.className(n)),o["aria-labelledby"]&&o["aria-labelledby"]===o.id&&(o["aria-labelledby"]=void 0);let u={};if(n){let d=!1,p=[];for(let[c,T]of Object.entries(n))typeof T=="boolean"&&(d=!0),T===!0&&p.push(c.replace(/([A-Z])/g,g=>`-${g.toLowerCase()}`));if(d){u["data-headlessui-state"]=p.join(" ");for(let c of p)u[`data-${c}`]=""}}if(t===R&&(Object.keys(m(o)).length>0||Object.keys(m(u)).length>0))if(!S(f)||Array.isArray(f)&&f.length>1){if(Object.keys(m(o)).length>0)throw new Error(['Passing props on "Fragment"!',"",`The current component <${a} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(m(o)).concat(Object.keys(m(u))).map(d=>` - ${d}`).join(` | ||
`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(d=>` - ${d}`).join(` | ||
`)].join(` | ||
`))}else{let u=f.props,p=u==null?void 0:u.className,c=typeof p=="function"?(...F)=>h(p(...F),o.className):h(p,o.className),T=c?{className:c}:{};return N(f,Object.assign({},P(f.props,m(R(o,["ref"]))),d,y,{ref:s(f.ref,y.ref)},T))}return x(t,Object.assign({},R(o,["ref"]),t!==b&&y,t!==b&&d),f)}function H(){let r=v([]),n=S(e=>{for(let a of r.current)a!=null&&(typeof a=="function"?a(e):a.current=e)},[]);return(...e)=>{if(!e.every(a=>a==null))return r.current=e,n}}function M(...r){return r.every(n=>n==null)?void 0:n=>{for(let e of r)e!=null&&(typeof e=="function"?e(n):e.current=n)}}function P(...r){var a;if(r.length===0)return{};if(r.length===1)return r[0];let n={},e={};for(let s of r)for(let t in s)t.startsWith("on")&&typeof s[t]=="function"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):n[t]=s[t];if(n.disabled||n["aria-disabled"])for(let s in e)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(s)&&(e[s]=[t=>{var l;return(l=t==null?void 0:t.preventDefault)==null?void 0:l.call(t)}]);for(let s in e)Object.assign(n,{[s](t,...l){let i=e[s];for(let o of i){if((t instanceof Event||(t==null?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...l)}}});return n}function U(...r){var a;if(r.length===0)return{};if(r.length===1)return r[0];let n={},e={};for(let s of r)for(let t in s)t.startsWith("on")&&typeof s[t]=="function"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):n[t]=s[t];for(let s in e)Object.assign(n,{[s](...t){let l=e[s];for(let i of l)i==null||i(...t)}});return n}function D(r){var n;return Object.assign(E(r),{displayName:(n=r.displayName)!=null?n:r.name})}function m(r){let n=Object.assign({},r);for(let e in n)n[e]===void 0&&delete n[e];return n}function R(r,n=[]){let e=Object.assign({},r);for(let a of n)a in e&&delete e[a];return e}export{k as RenderFeatures,O as RenderStrategy,m as compact,D as forwardRefWithAs,U as mergeProps,_ as render,H as useMergeRefsFn}; | ||
`))}else{let d=f.props,p=d==null?void 0:d.className,c=typeof p=="function"?(...F)=>P(p(...F),o.className):P(p,o.className),T=c?{className:c}:{},g=N(f.props,m(h(o,["ref"])));for(let F in u)F in g&&delete u[F];return x(f,Object.assign({},g,u,y,{ref:s(f.ref,y.ref)},T))}return E(t,Object.assign({},h(o,["ref"]),t!==R&&y,t!==R&&u),f)}function U(){let r=w([]),n=v(e=>{for(let a of r.current)a!=null&&(typeof a=="function"?a(e):a.current=e)},[]);return(...e)=>{if(!e.every(a=>a==null))return r.current=e,n}}function A(...r){return r.every(n=>n==null)?void 0:n=>{for(let e of r)e!=null&&(typeof e=="function"?e(n):e.current=n)}}function N(...r){var a;if(r.length===0)return{};if(r.length===1)return r[0];let n={},e={};for(let s of r)for(let t in s)t.startsWith("on")&&typeof s[t]=="function"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):n[t]=s[t];if(n.disabled||n["aria-disabled"])for(let s in e)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(s)&&(e[s]=[t=>{var l;return(l=t==null?void 0:t.preventDefault)==null?void 0:l.call(t)}]);for(let s in e)Object.assign(n,{[s](t,...l){let i=e[s];for(let o of i){if((t instanceof Event||(t==null?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...l)}}});return n}function D(...r){var a;if(r.length===0)return{};if(r.length===1)return r[0];let n={},e={};for(let s of r)for(let t in s)t.startsWith("on")&&typeof s[t]=="function"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):n[t]=s[t];for(let s in e)Object.assign(n,{[s](...t){let l=e[s];for(let i of l)i==null||i(...t)}});return n}function I(r){var n;return Object.assign(j(r),{displayName:(n=r.displayName)!=null?n:r.name})}function m(r){let n=Object.assign({},r);for(let e in n)n[e]===void 0&&delete n[e];return n}function h(r,n=[]){let e=Object.assign({},r);for(let a of n)a in e&&delete e[a];return e}export{O as RenderFeatures,M as RenderStrategy,m as compact,I as forwardRefWithAs,D as mergeProps,H as render,U as useMergeRefsFn}; |
@@ -1,1 +0,1 @@ | ||
import*as r from"react";const s=r.createContext(null);function a(){return{groups:new Map,get(n,t){var c;let e=this.groups.get(n);e||(e=new Map,this.groups.set(n,e));let l=(c=e.get(t))!=null?c:0;e.set(t,l+1);let o=Array.from(e.keys()).indexOf(t);function i(){let u=e.get(t);u>1?e.set(t,u-1):e.delete(t)}return[o,i]}}}function C({children:n}){let t=r.useRef(a());return r.createElement(s.Provider,{value:t},n)}function d(n){let t=r.useContext(s);if(!t)throw new Error("You must wrap your component in a <StableCollection>");let e=f(),[l,o]=t.current.get(n,e);return r.useEffect(()=>o,[]),l}function f(){var l,o,i;let n=(i=(o=(l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)==null?void 0:l.ReactCurrentOwner)==null?void 0:o.current)!=null?i:null;if(!n)return Symbol();let t=[],e=n;for(;e;)t.push(e.index),e=e.return;return"$."+t.join(".")}export{C as StableCollection,d as useStableCollectionIndex}; | ||
import*as l from"react";const s=l.createContext(null);function a(){return{groups:new Map,get(o,e){var i;let t=this.groups.get(o);t||(t=new Map,this.groups.set(o,t));let n=(i=t.get(e))!=null?i:0;t.set(e,n+1);let r=Array.from(t.keys()).indexOf(e);function u(){let c=t.get(e);c>1?t.set(e,c-1):t.delete(e)}return[r,u]}}}function f({children:o}){let e=l.useRef(a());return l.createElement(s.Provider,{value:e},o)}function C(o){let e=l.useContext(s);if(!e)throw new Error("You must wrap your component in a <StableCollection>");let t=l.useId(),[n,r]=e.current.get(o,t);return l.useEffect(()=>r,[]),n}export{f as StableCollection,C as useStableCollectionIndex}; |
{ | ||
"name": "@headlessui/react", | ||
"version": "0.0.0-insiders.2b7a57e", | ||
"version": "0.0.0-insiders.2d3ec80", | ||
"description": "A set of completely unstyled, fully accessible UI components for React, designed to integrate beautifully with Tailwind CSS.", | ||
@@ -45,20 +45,19 @@ "main": "dist/index.cjs", | ||
"peerDependencies": { | ||
"react": "^16 || ^17 || ^18", | ||
"react-dom": "^16 || ^17 || ^18" | ||
"react": "^18", | ||
"react-dom": "^18" | ||
}, | ||
"devDependencies": { | ||
"@testing-library/react": "^13.0.0", | ||
"@types/react": "^18.2.14", | ||
"@types/react-dom": "^18.2.6", | ||
"esbuild": "^0.11.18", | ||
"react": "^18.2.0", | ||
"react-dom": "^18.2.0", | ||
"snapshot-diff": "^0.8.1" | ||
"@testing-library/react": "^15.0.7", | ||
"@types/react": "^18.3.3", | ||
"@types/react-dom": "^18.3.0", | ||
"react": "^18.3.1", | ||
"react-dom": "^18.3.1", | ||
"snapshot-diff": "^0.10.0" | ||
}, | ||
"dependencies": { | ||
"@floating-ui/react": "^0.26.2", | ||
"@tanstack/react-virtual": "3.0.0-beta.60", | ||
"@react-aria/focus": "^3.14.3", | ||
"@react-aria/interactions": "3.0.0-nightly.2584" | ||
"@floating-ui/react": "^0.26.16", | ||
"@tanstack/react-virtual": "3.5.0", | ||
"@react-aria/focus": "^3.17.1", | ||
"@react-aria/interactions": "^3.21.3" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
6
297
895781
16142
+ Added@tanstack/react-virtual@3.5.0(transitive)
+ Added@tanstack/virtual-core@3.5.0(transitive)
- Removed@react-aria/interactions@3.0.0-nightly.2584(transitive)
- Removed@tanstack/react-virtual@3.0.0-beta.60(transitive)
- Removed@tanstack/virtual-core@3.0.0-beta.60(transitive)
Updated@floating-ui/react@^0.26.16
Updated@react-aria/focus@^3.17.1