solid-baseui 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (810) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +150 -0
  3. package/dist/lib/client/CSPContext-faVzToiT.js +10 -0
  4. package/dist/lib/client/CheckboxGroupContext-1CRRHK0T.js +8 -0
  5. package/dist/lib/client/DialogHandle-DrN2YWCv.js +518 -0
  6. package/dist/lib/client/DialogPopup-ZlqmGfdk.js +136 -0
  7. package/dist/lib/client/DirectionContext-BwMabICS.js +7 -0
  8. package/dist/lib/client/FieldControl-Bc-z2og6.js +116 -0
  9. package/dist/lib/client/FieldItemContext-Bwzf-4tL.js +7 -0
  10. package/dist/lib/client/FieldRootContext-izCEh80D.js +32 -0
  11. package/dist/lib/client/FieldsetRootContext-BgThSAcd.js +13 -0
  12. package/dist/lib/client/FloatingTree-23B7KKPD.js +83 -0
  13. package/dist/lib/client/FocusManager-grSdNHqW.js +360 -0
  14. package/dist/lib/client/FormContext-BB05lWOI.js +16 -0
  15. package/dist/lib/client/InternalBackdrop-cSK13gaM.js +160 -0
  16. package/dist/lib/client/LabelableContext-DKsB0fIx.js +48 -0
  17. package/dist/lib/client/MenuSubmenuTrigger-QZkQ0F2v.js +1570 -0
  18. package/dist/lib/client/MenubarContext-BYt3fkt-.js +13 -0
  19. package/dist/lib/client/PopupHandle-CcJG4NMy.js +101 -0
  20. package/dist/lib/client/PopupStore-DjB-wO88.js +468 -0
  21. package/dist/lib/client/PopupViewport-DgrIqQea.js +152 -0
  22. package/dist/lib/client/RadioGroupContext-CZexBsPa.js +9 -0
  23. package/dist/lib/client/Separator-9DboD_Si.js +25 -0
  24. package/dist/lib/client/ToggleGroupContext-_THxLgJU.js +9 -0
  25. package/dist/lib/client/ToolbarGroupContext-Dpc3_mFx.js +9 -0
  26. package/dist/lib/client/ToolbarItemOwnerContext-DtVqVnSE.js +9 -0
  27. package/dist/lib/client/ToolbarRootContext-88yZoAOy.js +13 -0
  28. package/dist/lib/client/TriggerFocusGuards-CQ-JuASy.js +56 -0
  29. package/dist/lib/client/accordion/index.js +2 -0
  30. package/dist/lib/client/accordion-sOXt9AlG.js +399 -0
  31. package/dist/lib/client/alert-dialog/index.js +2 -0
  32. package/dist/lib/client/alert-dialog-BH_3ndio.js +30 -0
  33. package/dist/lib/client/autocomplete/index.js +2 -0
  34. package/dist/lib/client/autocomplete-Cob_FZEP.js +113 -0
  35. package/dist/lib/client/avatar/index.js +2 -0
  36. package/dist/lib/client/avatar-AF9vyD4q.js +146 -0
  37. package/dist/lib/client/button/index.js +2 -0
  38. package/dist/lib/client/button-DpUi-2g8.js +82 -0
  39. package/dist/lib/client/buttonSemantics-paljfpOX.js +39 -0
  40. package/dist/lib/client/checkbox/index.js +2 -0
  41. package/dist/lib/client/checkbox-BbAwOptH.js +441 -0
  42. package/dist/lib/client/checkbox-group/index.js +2 -0
  43. package/dist/lib/client/checkbox-group-CSSp_805.js +128 -0
  44. package/dist/lib/client/collapsible/index.js +2 -0
  45. package/dist/lib/client/collapsible-BIbje_ub.js +232 -0
  46. package/dist/lib/client/combobox/index.js +2 -0
  47. package/dist/lib/client/combobox-8O-vgTLL.js +352 -0
  48. package/dist/lib/client/compositeNavigation-sxniYTc7.js +58 -0
  49. package/dist/lib/client/constants-BYjBUIIi.js +424 -0
  50. package/dist/lib/client/context-menu/index.js +2 -0
  51. package/dist/lib/client/context-menu-BTMkXtrs.js +217 -0
  52. package/dist/lib/client/createAnchorPositioning-DcxDXUgB.js +1058 -0
  53. package/dist/lib/client/createAnchoredPopupScrollLock-Cx0cbh1_.js +19 -0
  54. package/dist/lib/client/createClickInteraction-CTaIFBiV.js +45 -0
  55. package/dist/lib/client/createCollapsiblePanel-DeDu0O2t.js +231 -0
  56. package/dist/lib/client/createFocusInteraction-D4w1-235.js +50 -0
  57. package/dist/lib/client/createPopupAutoResize-CGNiLhGq.js +60 -0
  58. package/dist/lib/client/createTransitionStatus-B1L-whed.js +53 -0
  59. package/dist/lib/client/csp-provider/index.js +2 -0
  60. package/dist/lib/client/csp-provider-C7nRHDKK.js +16 -0
  61. package/dist/lib/client/dialog/index.js +2 -0
  62. package/dist/lib/client/dialog-DkaQwIgP.js +19 -0
  63. package/dist/lib/client/direction-provider/index.js +3 -0
  64. package/dist/lib/client/direction-provider-DYhRN-8f.js +13 -0
  65. package/dist/lib/client/dom-BEAeQ9Eb.js +58 -0
  66. package/dist/lib/client/drawer/index.js +2 -0
  67. package/dist/lib/client/drawer-Ce2cChLt.js +1550 -0
  68. package/dist/lib/client/field/index.js +2 -0
  69. package/dist/lib/client/field-C-o7jzKW.js +469 -0
  70. package/dist/lib/client/fieldset/index.js +2 -0
  71. package/dist/lib/client/fieldset-BQTAWv2L.js +65 -0
  72. package/dist/lib/client/form/index.js +2 -0
  73. package/dist/lib/client/form-BINBiW5L.js +106 -0
  74. package/dist/lib/client/form-types-DFBxc1LF.js +8 -0
  75. package/dist/lib/client/index.js +43 -0
  76. package/dist/lib/client/input/index.js +2 -0
  77. package/dist/lib/client/input-gb0ejxkm.js +7 -0
  78. package/dist/lib/client/internals/composeEventHandlers.js +50 -0
  79. package/dist/lib/client/internals/createBaseUIEventDetails.js +31 -0
  80. package/dist/lib/client/internals/csp-context/index.js +2 -0
  81. package/dist/lib/client/internals/direction-context/index.js +2 -0
  82. package/dist/lib/client/internals/field-constants.js +56 -0
  83. package/dist/lib/client/internals/field-root-context/index.js +2 -0
  84. package/dist/lib/client/internals/form-context/index.js +2 -0
  85. package/dist/lib/client/internals/getStateAttributesProps.js +21 -0
  86. package/dist/lib/client/internals/labelable-provider/index.js +19 -0
  87. package/dist/lib/client/internals/mergeStyles.js +9 -0
  88. package/dist/lib/client/internals/reasons.js +2 -0
  89. package/dist/lib/client/internals/stateAttributesMapping.js +8 -0
  90. package/dist/lib/client/internals/types.js +0 -0
  91. package/dist/lib/client/menu/index.js +2 -0
  92. package/dist/lib/client/menu-DeMT08oD.js +326 -0
  93. package/dist/lib/client/menubar/index.js +2 -0
  94. package/dist/lib/client/menubar-C4aomSYv.js +185 -0
  95. package/dist/lib/client/mergeStyleValue-C4ITiiIV.js +42 -0
  96. package/dist/lib/client/meter/index.js +2 -0
  97. package/dist/lib/client/meter-xSU37Q0m.js +171 -0
  98. package/dist/lib/client/navigation-menu/index.js +2 -0
  99. package/dist/lib/client/navigation-menu-ZILQmdn6.js +1083 -0
  100. package/dist/lib/client/number-field/index.js +2 -0
  101. package/dist/lib/client/number-field-B8CsTb_8.js +1035 -0
  102. package/dist/lib/client/otp-field/index.js +2 -0
  103. package/dist/lib/client/otp-field-DBkMcnog.js +582 -0
  104. package/dist/lib/client/platform-Bk5Q32mf.js +13 -0
  105. package/dist/lib/client/popover/index.js +2 -0
  106. package/dist/lib/client/popover-CQwyp-fs.js +929 -0
  107. package/dist/lib/client/popupStateMapping-C9eZl19i.js +367 -0
  108. package/dist/lib/client/preview-card/index.js +2 -0
  109. package/dist/lib/client/preview-card-D_2Q8lpC.js +625 -0
  110. package/dist/lib/client/progress/index.js +2 -0
  111. package/dist/lib/client/progress-D7r0xAC9.js +188 -0
  112. package/dist/lib/client/radio/index.js +2 -0
  113. package/dist/lib/client/radio-CzGQ81z1.js +299 -0
  114. package/dist/lib/client/radio-group/index.js +2 -0
  115. package/dist/lib/client/radio-group-DpHlBKA6.js +193 -0
  116. package/dist/lib/client/reasons-Co5CzjKq.js +41 -0
  117. package/dist/lib/client/resolveStyle-XcgAuaKR.js +11 -0
  118. package/dist/lib/client/rolldown-runtime-Dy4uBu1J.js +11 -0
  119. package/dist/lib/client/runOnceAnimationsFinish-15EM-Z4l.js +48 -0
  120. package/dist/lib/client/safePolygon--bbKn0c8.js +316 -0
  121. package/dist/lib/client/scroll-area/index.js +2 -0
  122. package/dist/lib/client/scroll-area-CffM4U0R.js +701 -0
  123. package/dist/lib/client/scrollable-SRNYlhF7.js +42 -0
  124. package/dist/lib/client/select/index.js +2 -0
  125. package/dist/lib/client/select-IFhiEg73.js +1940 -0
  126. package/dist/lib/client/separator/index.js +2 -0
  127. package/dist/lib/client/setRef-fXF6OIo3.js +7 -0
  128. package/dist/lib/client/slider/index.js +2 -0
  129. package/dist/lib/client/slider-BCagYmGp.js +921 -0
  130. package/dist/lib/client/switch/index.js +2 -0
  131. package/dist/lib/client/switch-RIJeDnvS.js +308 -0
  132. package/dist/lib/client/tabs/index.js +2 -0
  133. package/dist/lib/client/tabs-fOAKs7r3.js +696 -0
  134. package/dist/lib/client/toast/index.js +2 -0
  135. package/dist/lib/client/toast-D2P8UqUs.js +1108 -0
  136. package/dist/lib/client/toggle/index.js +2 -0
  137. package/dist/lib/client/toggle-group/index.js +2 -0
  138. package/dist/lib/client/toggle-group-0Aue0owJ.js +129 -0
  139. package/dist/lib/client/toggle-momVEIBL.js +138 -0
  140. package/dist/lib/client/toolbar/index.js +2 -0
  141. package/dist/lib/client/toolbar-Du22aKCv.js +492 -0
  142. package/dist/lib/client/tooltip/index.js +2 -0
  143. package/dist/lib/client/tooltip-CyK61fl1.js +844 -0
  144. package/dist/lib/client/types/index.js +0 -0
  145. package/dist/lib/client/useFilteredItems-DTekHz39.js +2223 -0
  146. package/dist/lib/client/withoutComponentBinding-CcCW7fSc.js +13 -0
  147. package/dist/lib/server/CSPContext-DOxR0PO7.js +10 -0
  148. package/dist/lib/server/CheckboxGroupContext-DTP679kK.js +8 -0
  149. package/dist/lib/server/DialogHandle-ATZlm9RC.js +689 -0
  150. package/dist/lib/server/DialogPopup-BebI-w5P.js +159 -0
  151. package/dist/lib/server/DirectionContext-YORWLF08.js +10 -0
  152. package/dist/lib/server/FieldControl-Y_kI7ARp.js +174 -0
  153. package/dist/lib/server/FieldItemContext-x-C7ZlmX.js +7 -0
  154. package/dist/lib/server/FieldRootContext-IC-LWzVp.js +34 -0
  155. package/dist/lib/server/FieldsetRootContext-DyNqCjK6.js +14 -0
  156. package/dist/lib/server/FloatingTree-z1JPD1dR.js +101 -0
  157. package/dist/lib/server/FocusManager-BrbZVWME.js +538 -0
  158. package/dist/lib/server/FormContext-pvESt85v.js +17 -0
  159. package/dist/lib/server/InternalBackdrop-C_iDPVR-.js +260 -0
  160. package/dist/lib/server/LabelableContext-DZP3rgAY.js +59 -0
  161. package/dist/lib/server/MenuSubmenuTrigger-DA4gsv6z.js +2072 -0
  162. package/dist/lib/server/MenubarContext-C-62rMnO.js +14 -0
  163. package/dist/lib/server/PopupHandle-DthPgNjy.js +115 -0
  164. package/dist/lib/server/PopupStore-DEs3FAEe.js +645 -0
  165. package/dist/lib/server/PopupViewport-3r_KTFwX.js +220 -0
  166. package/dist/lib/server/RadioGroupContext-D5xmTkDz.js +10 -0
  167. package/dist/lib/server/Separator-vhhYxWGr.js +31 -0
  168. package/dist/lib/server/ToggleGroupContext-COor8gYc.js +10 -0
  169. package/dist/lib/server/ToolbarGroupContext-CzdHxijX.js +10 -0
  170. package/dist/lib/server/ToolbarItemOwnerContext-L5dsZ_vS.js +10 -0
  171. package/dist/lib/server/ToolbarRootContext-DD-qe7s8.js +14 -0
  172. package/dist/lib/server/TriggerFocusGuards-sbGwf45f.js +63 -0
  173. package/dist/lib/server/accordion/index.js +566 -0
  174. package/dist/lib/server/alert-dialog/index.js +36 -0
  175. package/dist/lib/server/autocomplete/index.js +173 -0
  176. package/dist/lib/server/avatar/index.js +199 -0
  177. package/dist/lib/server/button/index.js +119 -0
  178. package/dist/lib/server/buttonSemantics-BSwDxJhh.js +49 -0
  179. package/dist/lib/server/checkbox/index.js +537 -0
  180. package/dist/lib/server/checkbox-group/index.js +198 -0
  181. package/dist/lib/server/collapsible/index.js +307 -0
  182. package/dist/lib/server/combobox/index.js +480 -0
  183. package/dist/lib/server/compositeNavigation-BRVT1C38.js +68 -0
  184. package/dist/lib/server/constants-9H__9xbS.js +706 -0
  185. package/dist/lib/server/context-menu/index.js +263 -0
  186. package/dist/lib/server/createAnchorPositioning-C-cVOPwz.js +381 -0
  187. package/dist/lib/server/createAnchoredPopupScrollLock-DFuUrykR.js +20 -0
  188. package/dist/lib/server/createClickInteraction-BYsMgvup.js +68 -0
  189. package/dist/lib/server/createCollapsiblePanel-DTyVJz0G.js +297 -0
  190. package/dist/lib/server/createFocusInteraction-EIS0QOel.js +77 -0
  191. package/dist/lib/server/createPopupAutoResize-DO50jjNX.js +111 -0
  192. package/dist/lib/server/createTransitionStatus-BTlrerSS.js +61 -0
  193. package/dist/lib/server/csp-provider/index.js +15 -0
  194. package/dist/lib/server/dialog/index.js +19 -0
  195. package/dist/lib/server/direction-provider/index.js +13 -0
  196. package/dist/lib/server/dom-Crg_2R-j.js +67 -0
  197. package/dist/lib/server/drawer/index.js +2351 -0
  198. package/dist/lib/server/field/index.js +677 -0
  199. package/dist/lib/server/fieldset/index.js +91 -0
  200. package/dist/lib/server/form/index.js +136 -0
  201. package/dist/lib/server/form-types-P7-SCWyr.js +8 -0
  202. package/dist/lib/server/index.js +43 -0
  203. package/dist/lib/server/input/index.js +11 -0
  204. package/dist/lib/server/internals/composeEventHandlers.js +60 -0
  205. package/dist/lib/server/internals/createBaseUIEventDetails.js +33 -0
  206. package/dist/lib/server/internals/csp-context/index.js +2 -0
  207. package/dist/lib/server/internals/direction-context/index.js +2 -0
  208. package/dist/lib/server/internals/field-constants.js +64 -0
  209. package/dist/lib/server/internals/field-root-context/index.js +2 -0
  210. package/dist/lib/server/internals/form-context/index.js +2 -0
  211. package/dist/lib/server/internals/getStateAttributesProps.js +23 -0
  212. package/dist/lib/server/internals/labelable-provider/index.js +20 -0
  213. package/dist/lib/server/internals/mergeStyles.js +15 -0
  214. package/dist/lib/server/internals/reasons.js +76 -0
  215. package/dist/lib/server/internals/stateAttributesMapping.js +15 -0
  216. package/dist/lib/server/internals/types.js +1 -0
  217. package/dist/lib/server/menu/index.js +423 -0
  218. package/dist/lib/server/menubar/index.js +242 -0
  219. package/dist/lib/server/mergeStyleValue-Db8bRCM4.js +67 -0
  220. package/dist/lib/server/meter/index.js +217 -0
  221. package/dist/lib/server/navigation-menu/index.js +1436 -0
  222. package/dist/lib/server/number-field/index.js +1497 -0
  223. package/dist/lib/server/otp-field/index.js +811 -0
  224. package/dist/lib/server/platform-DYukKUir.js +13 -0
  225. package/dist/lib/server/popover/index.js +1187 -0
  226. package/dist/lib/server/popupStateMapping-nKoUwoke.js +459 -0
  227. package/dist/lib/server/preview-card/index.js +797 -0
  228. package/dist/lib/server/progress/index.js +252 -0
  229. package/dist/lib/server/radio/index.js +364 -0
  230. package/dist/lib/server/radio-group/index.js +282 -0
  231. package/dist/lib/server/resolveStyle-XCSFDHAL.js +11 -0
  232. package/dist/lib/server/rolldown-runtime-D7D4PA-g.js +13 -0
  233. package/dist/lib/server/runOnceAnimationsFinish-DCHzXWZU.js +59 -0
  234. package/dist/lib/server/safePolygon-CAm5RJGv.js +474 -0
  235. package/dist/lib/server/scroll-area/index.js +993 -0
  236. package/dist/lib/server/scrollable-CjsSxbGr.js +54 -0
  237. package/dist/lib/server/select/index.js +2630 -0
  238. package/dist/lib/server/separator/index.js +2 -0
  239. package/dist/lib/server/setRef-Bt70sW7c.js +7 -0
  240. package/dist/lib/server/slider/index.js +1333 -0
  241. package/dist/lib/server/switch/index.js +389 -0
  242. package/dist/lib/server/tabs/index.js +1007 -0
  243. package/dist/lib/server/toast/index.js +1588 -0
  244. package/dist/lib/server/toggle/index.js +201 -0
  245. package/dist/lib/server/toggle-group/index.js +192 -0
  246. package/dist/lib/server/toolbar/index.js +685 -0
  247. package/dist/lib/server/tooltip/index.js +1092 -0
  248. package/dist/lib/server/types/index.js +1 -0
  249. package/dist/lib/server/useFilteredItems-DvuctLt3.js +3157 -0
  250. package/dist/lib/server/withoutComponentBinding-BHaWr5kU.js +20 -0
  251. package/dist/lib/types/accordion/header/AccordionHeader.d.ts +12 -0
  252. package/dist/lib/types/accordion/index.d.ts +6 -0
  253. package/dist/lib/types/accordion/index.parts.d.ts +5 -0
  254. package/dist/lib/types/accordion/item/AccordionItem.d.ts +29 -0
  255. package/dist/lib/types/accordion/item/AccordionItemContext.d.ts +22 -0
  256. package/dist/lib/types/accordion/item/AccordionItemDataAttributes.d.ts +5 -0
  257. package/dist/lib/types/accordion/item/stateAttributesMapping.d.ts +13 -0
  258. package/dist/lib/types/accordion/panel/AccordionPanel.d.ts +20 -0
  259. package/dist/lib/types/accordion/panel/AccordionPanelCssVars.d.ts +4 -0
  260. package/dist/lib/types/accordion/root/AccordionRoot.d.ts +46 -0
  261. package/dist/lib/types/accordion/root/AccordionRootContext.d.ts +22 -0
  262. package/dist/lib/types/accordion/root/stateAttributesMapping.d.ts +3 -0
  263. package/dist/lib/types/accordion/trigger/AccordionTrigger.d.ts +27 -0
  264. package/dist/lib/types/accordion/trigger/AccordionTriggerDataAttributes.d.ts +4 -0
  265. package/dist/lib/types/alert-dialog/handle.d.ts +6 -0
  266. package/dist/lib/types/alert-dialog/index.d.ts +10 -0
  267. package/dist/lib/types/alert-dialog/index.parts.d.ts +10 -0
  268. package/dist/lib/types/alert-dialog/root/AlertDialogRoot.d.ts +29 -0
  269. package/dist/lib/types/alert-dialog/trigger/AlertDialogTrigger.d.ts +19 -0
  270. package/dist/lib/types/autocomplete/index.d.ts +24 -0
  271. package/dist/lib/types/autocomplete/index.parts.d.ts +23 -0
  272. package/dist/lib/types/autocomplete/input-group/AutocompleteInputGroup.d.ts +26 -0
  273. package/dist/lib/types/autocomplete/item/AutocompleteItem.d.ts +18 -0
  274. package/dist/lib/types/autocomplete/root/AutocompleteRoot.d.ts +195 -0
  275. package/dist/lib/types/autocomplete/root/utils/useFilter.d.ts +9 -0
  276. package/dist/lib/types/autocomplete/separator/AutocompleteSeparator.d.ts +17 -0
  277. package/dist/lib/types/autocomplete/trigger/AutocompleteTrigger.d.ts +24 -0
  278. package/dist/lib/types/autocomplete/value/AutocompleteValue.d.ts +15 -0
  279. package/dist/lib/types/avatar/fallback/AvatarFallback.d.ts +16 -0
  280. package/dist/lib/types/avatar/image/AvatarImage.d.ts +17 -0
  281. package/dist/lib/types/avatar/image/createImageLoadingStatus.d.ts +10 -0
  282. package/dist/lib/types/avatar/index.d.ts +4 -0
  283. package/dist/lib/types/avatar/index.parts.d.ts +3 -0
  284. package/dist/lib/types/avatar/root/AvatarRoot.d.ts +13 -0
  285. package/dist/lib/types/avatar/root/AvatarRootContext.d.ts +10 -0
  286. package/dist/lib/types/button/Button.d.ts +34 -0
  287. package/dist/lib/types/button/index.d.ts +2 -0
  288. package/dist/lib/types/checkbox/index.d.ts +3 -0
  289. package/dist/lib/types/checkbox/index.parts.d.ts +2 -0
  290. package/dist/lib/types/checkbox/indicator/CheckboxIndicator.d.ts +20 -0
  291. package/dist/lib/types/checkbox/root/CheckboxRoot.d.ts +56 -0
  292. package/dist/lib/types/checkbox/root/CheckboxRootContext.d.ts +7 -0
  293. package/dist/lib/types/checkbox/utils/getCheckboxStateAttributesMapping.d.ts +3 -0
  294. package/dist/lib/types/checkbox-group/CheckboxGroup.d.ts +32 -0
  295. package/dist/lib/types/checkbox-group/CheckboxGroupContext.d.ts +30 -0
  296. package/dist/lib/types/checkbox-group/index.d.ts +2 -0
  297. package/dist/lib/types/collapsible/index.d.ts +4 -0
  298. package/dist/lib/types/collapsible/index.parts.d.ts +3 -0
  299. package/dist/lib/types/collapsible/panel/CollapsiblePanel.d.ts +25 -0
  300. package/dist/lib/types/collapsible/panel/createCollapsiblePanel.d.ts +26 -0
  301. package/dist/lib/types/collapsible/root/CollapsibleRoot.d.ts +34 -0
  302. package/dist/lib/types/collapsible/root/CollapsibleRootContext.d.ts +19 -0
  303. package/dist/lib/types/collapsible/root/createCollapsibleTransitionStatus.d.ts +9 -0
  304. package/dist/lib/types/collapsible/root/stateAttributesMapping.d.ts +14 -0
  305. package/dist/lib/types/collapsible/trigger/CollapsibleTrigger.d.ts +28 -0
  306. package/dist/lib/types/combobox/arrow/ComboboxArrow.d.ts +16 -0
  307. package/dist/lib/types/combobox/backdrop/ComboboxBackdrop.d.ts +14 -0
  308. package/dist/lib/types/combobox/chip/ComboboxChip.d.ts +17 -0
  309. package/dist/lib/types/combobox/chip/ComboboxChipContext.d.ts +8 -0
  310. package/dist/lib/types/combobox/chip-remove/ComboboxChipRemove.d.ts +26 -0
  311. package/dist/lib/types/combobox/chips/ComboboxChips.d.ts +16 -0
  312. package/dist/lib/types/combobox/chips/ComboboxChipsContext.d.ts +26 -0
  313. package/dist/lib/types/combobox/clear/ComboboxClear.d.ts +35 -0
  314. package/dist/lib/types/combobox/collection/ComboboxCollection.d.ts +19 -0
  315. package/dist/lib/types/combobox/empty/ComboboxEmpty.d.ts +16 -0
  316. package/dist/lib/types/combobox/group/ComboboxGroup.d.ts +19 -0
  317. package/dist/lib/types/combobox/group/ComboboxGroupContext.d.ts +9 -0
  318. package/dist/lib/types/combobox/group-label/ComboboxGroupLabel.d.ts +11 -0
  319. package/dist/lib/types/combobox/icon/ComboboxIcon.d.ts +12 -0
  320. package/dist/lib/types/combobox/index.d.ts +29 -0
  321. package/dist/lib/types/combobox/index.parts.d.ts +28 -0
  322. package/dist/lib/types/combobox/input/ComboboxInput.d.ts +36 -0
  323. package/dist/lib/types/combobox/input-group/ComboboxInputGroup.d.ts +24 -0
  324. package/dist/lib/types/combobox/item/ComboboxItem.d.ts +40 -0
  325. package/dist/lib/types/combobox/item/ComboboxItemContext.d.ts +9 -0
  326. package/dist/lib/types/combobox/item-indicator/ComboboxItemIndicator.d.ts +22 -0
  327. package/dist/lib/types/combobox/label/ComboboxLabel.d.ts +22 -0
  328. package/dist/lib/types/combobox/list/ComboboxList.d.ts +24 -0
  329. package/dist/lib/types/combobox/popup/ComboboxPopup.d.ts +35 -0
  330. package/dist/lib/types/combobox/portal/ComboboxPortal.d.ts +25 -0
  331. package/dist/lib/types/combobox/portal/ComboboxPortalContext.d.ts +5 -0
  332. package/dist/lib/types/combobox/positioner/ComboboxPositioner.d.ts +37 -0
  333. package/dist/lib/types/combobox/positioner/ComboboxPositionerContext.d.ts +11 -0
  334. package/dist/lib/types/combobox/root/AriaCombobox.d.ts +82 -0
  335. package/dist/lib/types/combobox/root/ComboboxRoot.d.ts +180 -0
  336. package/dist/lib/types/combobox/root/ComboboxRootContext.d.ts +99 -0
  337. package/dist/lib/types/combobox/root/utils/useFilter.d.ts +25 -0
  338. package/dist/lib/types/combobox/root/utils/useFilteredItems.d.ts +5 -0
  339. package/dist/lib/types/combobox/row/ComboboxRow.d.ts +14 -0
  340. package/dist/lib/types/combobox/row/ComboboxRowContext.d.ts +3 -0
  341. package/dist/lib/types/combobox/separator/ComboboxSeparator.d.ts +21 -0
  342. package/dist/lib/types/combobox/status/ComboboxStatus.d.ts +17 -0
  343. package/dist/lib/types/combobox/store/ComboboxItemRegistry.d.ts +39 -0
  344. package/dist/lib/types/combobox/store/ComboboxStore.d.ts +65 -0
  345. package/dist/lib/types/combobox/trigger/ComboboxTrigger.d.ts +36 -0
  346. package/dist/lib/types/combobox/types.d.ts +15 -0
  347. package/dist/lib/types/combobox/utils/ComboboxInternalDismissButton.d.ts +9 -0
  348. package/dist/lib/types/combobox/utils/comboboxPopupId.d.ts +5 -0
  349. package/dist/lib/types/combobox/utils/createInitialLiveRegionTextMutation.d.ts +7 -0
  350. package/dist/lib/types/combobox/utils/handleInputPress.d.ts +7 -0
  351. package/dist/lib/types/combobox/utils/parts.d.ts +4 -0
  352. package/dist/lib/types/combobox/utils/stateAttributesMapping.d.ts +58 -0
  353. package/dist/lib/types/combobox/value/ComboboxValue.d.ts +20 -0
  354. package/dist/lib/types/context-menu/index.d.ts +19 -0
  355. package/dist/lib/types/context-menu/index.parts.d.ts +19 -0
  356. package/dist/lib/types/context-menu/root/ContextMenuRoot.d.ts +21 -0
  357. package/dist/lib/types/context-menu/root/ContextMenuRootContext.d.ts +19 -0
  358. package/dist/lib/types/context-menu/trigger/ContextMenuTrigger.d.ts +21 -0
  359. package/dist/lib/types/csp-provider/CSPProvider.d.ts +14 -0
  360. package/dist/lib/types/csp-provider/index.d.ts +2 -0
  361. package/dist/lib/types/dialog/backdrop/DialogBackdrop.d.ts +18 -0
  362. package/dist/lib/types/dialog/close/DialogClose.d.ts +26 -0
  363. package/dist/lib/types/dialog/description/DialogDescription.d.ts +11 -0
  364. package/dist/lib/types/dialog/index.d.ts +10 -0
  365. package/dist/lib/types/dialog/index.parts.d.ts +10 -0
  366. package/dist/lib/types/dialog/popup/DialogPopup.d.ts +24 -0
  367. package/dist/lib/types/dialog/portal/DialogPortal.d.ts +17 -0
  368. package/dist/lib/types/dialog/portal/DialogPortalContext.d.ts +8 -0
  369. package/dist/lib/types/dialog/root/DialogRoot.d.ts +44 -0
  370. package/dist/lib/types/dialog/root/DialogRootContext.d.ts +38 -0
  371. package/dist/lib/types/dialog/store/DialogHandle.d.ts +11 -0
  372. package/dist/lib/types/dialog/store/DialogStore.d.ts +20 -0
  373. package/dist/lib/types/dialog/title/DialogTitle.d.ts +11 -0
  374. package/dist/lib/types/dialog/trigger/DialogTrigger.d.ts +30 -0
  375. package/dist/lib/types/dialog/utils/mergeDialogStyles.d.ts +2 -0
  376. package/dist/lib/types/dialog/utils/stateAttributesMapping.d.ts +20 -0
  377. package/dist/lib/types/dialog/viewport/DialogViewport.d.ts +16 -0
  378. package/dist/lib/types/direction-provider/DirectionProvider.d.ts +13 -0
  379. package/dist/lib/types/direction-provider/index.d.ts +4 -0
  380. package/dist/lib/types/drawer/backdrop/DrawerBackdrop.d.ts +24 -0
  381. package/dist/lib/types/drawer/backdrop/DrawerBackdropCssVars.d.ts +7 -0
  382. package/dist/lib/types/drawer/content/DrawerContent.d.ts +14 -0
  383. package/dist/lib/types/drawer/content/DrawerContentDataAttributes.d.ts +1 -0
  384. package/dist/lib/types/drawer/handle.d.ts +14 -0
  385. package/dist/lib/types/drawer/indent/DrawerIndent.d.ts +16 -0
  386. package/dist/lib/types/drawer/indent-background/DrawerIndentBackground.d.ts +23 -0
  387. package/dist/lib/types/drawer/index.d.ts +17 -0
  388. package/dist/lib/types/drawer/index.parts.d.ts +16 -0
  389. package/dist/lib/types/drawer/popup/DrawerPopup.d.ts +46 -0
  390. package/dist/lib/types/drawer/popup/DrawerPopupCssVars.d.ts +37 -0
  391. package/dist/lib/types/drawer/popup/DrawerPopupDataAttributes.d.ts +25 -0
  392. package/dist/lib/types/drawer/provider/DrawerProvider.d.ts +15 -0
  393. package/dist/lib/types/drawer/provider/DrawerProviderContext.d.ts +21 -0
  394. package/dist/lib/types/drawer/root/DrawerRoot.d.ts +65 -0
  395. package/dist/lib/types/drawer/root/DrawerRootContext.d.ts +68 -0
  396. package/dist/lib/types/drawer/root/createDrawerSnapPoints.d.ts +24 -0
  397. package/dist/lib/types/drawer/swipe-area/DrawerSwipeArea.d.ts +43 -0
  398. package/dist/lib/types/drawer/swipe-area/DrawerSwipeAreaDataAttributes.d.ts +15 -0
  399. package/dist/lib/types/drawer/viewport/DrawerViewport.d.ts +31 -0
  400. package/dist/lib/types/drawer/viewport/DrawerViewportContext.d.ts +12 -0
  401. package/dist/lib/types/drawer/viewport/DrawerViewportCssVars.d.ts +8 -0
  402. package/dist/lib/types/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardContext.d.ts +14 -0
  403. package/dist/lib/types/drawer/virtual-keyboard-provider/DrawerVirtualKeyboardProvider.d.ts +14 -0
  404. package/dist/lib/types/field/control/FieldControl.d.ts +35 -0
  405. package/dist/lib/types/field/description/FieldDescription.d.ts +16 -0
  406. package/dist/lib/types/field/error/FieldError.d.ts +19 -0
  407. package/dist/lib/types/field/index.d.ts +8 -0
  408. package/dist/lib/types/field/index.parts.d.ts +8 -0
  409. package/dist/lib/types/field/item/FieldItem.d.ts +16 -0
  410. package/dist/lib/types/field/item/FieldItemContext.d.ts +6 -0
  411. package/dist/lib/types/field/label/FieldLabel.d.ts +24 -0
  412. package/dist/lib/types/field/root/FieldRoot.d.ts +30 -0
  413. package/dist/lib/types/field/root/createFieldValidation.d.ts +22 -0
  414. package/dist/lib/types/field/validity/FieldValidity.d.ts +16 -0
  415. package/dist/lib/types/fieldset/index.d.ts +3 -0
  416. package/dist/lib/types/fieldset/index.parts.d.ts +2 -0
  417. package/dist/lib/types/fieldset/legend/FieldsetLegend.d.ts +21 -0
  418. package/dist/lib/types/fieldset/root/FieldsetRoot.d.ts +21 -0
  419. package/dist/lib/types/fieldset/root/FieldsetRootContext.d.ts +11 -0
  420. package/dist/lib/types/form/Form.d.ts +39 -0
  421. package/dist/lib/types/form/index.d.ts +2 -0
  422. package/dist/lib/types/index.d.ts +41 -0
  423. package/dist/lib/types/input/Input.d.ts +20 -0
  424. package/dist/lib/types/input/index.d.ts +2 -0
  425. package/dist/lib/types/internals/buttonSemantics.d.ts +10 -0
  426. package/dist/lib/types/internals/clamp.d.ts +1 -0
  427. package/dist/lib/types/internals/composeEventHandlers.d.ts +11 -0
  428. package/dist/lib/types/internals/constants.d.ts +4 -0
  429. package/dist/lib/types/internals/createBaseUIEventDetails.d.ts +57 -0
  430. package/dist/lib/types/internals/createTransitionStatus.d.ts +9 -0
  431. package/dist/lib/types/internals/csp-context/CSPContext.d.ts +7 -0
  432. package/dist/lib/types/internals/csp-context/index.d.ts +2 -0
  433. package/dist/lib/types/internals/direction-context/DirectionContext.d.ts +6 -0
  434. package/dist/lib/types/internals/direction-context/index.d.ts +2 -0
  435. package/dist/lib/types/internals/field-constants.d.ts +44 -0
  436. package/dist/lib/types/internals/field-root-context/FieldRootContext.d.ts +31 -0
  437. package/dist/lib/types/internals/field-root-context/index.d.ts +2 -0
  438. package/dist/lib/types/internals/filter.d.ts +18 -0
  439. package/dist/lib/types/internals/form-context/FormContext.d.ts +13 -0
  440. package/dist/lib/types/internals/form-context/index.d.ts +3 -0
  441. package/dist/lib/types/internals/form-types.d.ts +11 -0
  442. package/dist/lib/types/internals/getStateAttributesProps.d.ts +4 -0
  443. package/dist/lib/types/internals/installOwnedEventHandlers.d.ts +3 -0
  444. package/dist/lib/types/internals/isSolidAccessor.d.ts +6 -0
  445. package/dist/lib/types/internals/itemEquality.d.ts +17 -0
  446. package/dist/lib/types/internals/labelable-provider/LabelableContext.d.ts +18 -0
  447. package/dist/lib/types/internals/labelable-provider/LabelableProvider.d.ts +11 -0
  448. package/dist/lib/types/internals/labelable-provider/index.d.ts +2 -0
  449. package/dist/lib/types/internals/mergeStyleValue.d.ts +8 -0
  450. package/dist/lib/types/internals/mergeStyles.d.ts +6 -0
  451. package/dist/lib/types/internals/overlay/FloatingRootStore.d.ts +49 -0
  452. package/dist/lib/types/internals/overlay/FloatingTree.d.ts +48 -0
  453. package/dist/lib/types/internals/overlay/FocusGuard.d.ts +2 -0
  454. package/dist/lib/types/internals/overlay/FocusManager.d.ts +30 -0
  455. package/dist/lib/types/internals/overlay/InternalBackdrop.d.ts +6 -0
  456. package/dist/lib/types/internals/overlay/PopupHandle.d.ts +47 -0
  457. package/dist/lib/types/internals/overlay/PopupPortal.d.ts +37 -0
  458. package/dist/lib/types/internals/overlay/PopupStore.d.ts +89 -0
  459. package/dist/lib/types/internals/overlay/PopupTriggerMap.d.ts +11 -0
  460. package/dist/lib/types/internals/overlay/PopupViewport.d.ts +16 -0
  461. package/dist/lib/types/internals/overlay/ReactiveStore.d.ts +26 -0
  462. package/dist/lib/types/internals/overlay/TriggerFocusGuards.d.ts +14 -0
  463. package/dist/lib/types/internals/overlay/adaptiveOrigin.d.ts +2 -0
  464. package/dist/lib/types/internals/overlay/compositeNavigation.d.ts +20 -0
  465. package/dist/lib/types/internals/overlay/createAnchorPositioning.d.ts +57 -0
  466. package/dist/lib/types/internals/overlay/createAnchoredPopupScrollLock.d.ts +12 -0
  467. package/dist/lib/types/internals/overlay/createClickInteraction.d.ts +20 -0
  468. package/dist/lib/types/internals/overlay/createClientPoint.d.ts +12 -0
  469. package/dist/lib/types/internals/overlay/createContextMenuInteraction.d.ts +17 -0
  470. package/dist/lib/types/internals/overlay/createDelayGroup.d.ts +18 -0
  471. package/dist/lib/types/internals/overlay/createDismiss.d.ts +27 -0
  472. package/dist/lib/types/internals/overlay/createFloatingPosition.d.ts +22 -0
  473. package/dist/lib/types/internals/overlay/createFocusInteraction.d.ts +14 -0
  474. package/dist/lib/types/internals/overlay/createHoverInteraction.d.ts +30 -0
  475. package/dist/lib/types/internals/overlay/createInitialPositioning.d.ts +3 -0
  476. package/dist/lib/types/internals/overlay/createListNavigation.d.ts +26 -0
  477. package/dist/lib/types/internals/overlay/createPopupAutoResize.d.ts +18 -0
  478. package/dist/lib/types/internals/overlay/createPopupPresence.d.ts +18 -0
  479. package/dist/lib/types/internals/overlay/createSwipeDismiss.d.ts +107 -0
  480. package/dist/lib/types/internals/overlay/createTypeahead.d.ts +20 -0
  481. package/dist/lib/types/internals/overlay/dom.d.ts +19 -0
  482. package/dist/lib/types/internals/overlay/eventEmitter.d.ts +7 -0
  483. package/dist/lib/types/internals/overlay/getElementAtPoint.d.ts +8 -0
  484. package/dist/lib/types/internals/overlay/index.d.ts +37 -0
  485. package/dist/lib/types/internals/overlay/inlineRect.d.ts +32 -0
  486. package/dist/lib/types/internals/overlay/markOthers.d.ts +6 -0
  487. package/dist/lib/types/internals/overlay/popupStateMapping.d.ts +46 -0
  488. package/dist/lib/types/internals/overlay/safePolygon.d.ts +24 -0
  489. package/dist/lib/types/internals/overlay/scrollLock.d.ts +10 -0
  490. package/dist/lib/types/internals/overlay/tabbable.d.ts +11 -0
  491. package/dist/lib/types/internals/platform.d.ts +1 -0
  492. package/dist/lib/types/internals/reason-parts.d.ts +35 -0
  493. package/dist/lib/types/internals/reasons.d.ts +4 -0
  494. package/dist/lib/types/internals/resolveClass.d.ts +3 -0
  495. package/dist/lib/types/internals/resolveStyle.d.ts +3 -0
  496. package/dist/lib/types/internals/runOnceAnimationsFinish.d.ts +4 -0
  497. package/dist/lib/types/internals/scrollable.d.ts +18 -0
  498. package/dist/lib/types/internals/setRef.d.ts +2 -0
  499. package/dist/lib/types/internals/stateAttributesMapping.d.ts +8 -0
  500. package/dist/lib/types/internals/types.d.ts +2 -0
  501. package/dist/lib/types/internals/valueLabel.d.ts +28 -0
  502. package/dist/lib/types/internals/withoutComponentBinding.d.ts +7 -0
  503. package/dist/lib/types/menu/arrow/MenuArrow.d.ts +16 -0
  504. package/dist/lib/types/menu/backdrop/MenuBackdrop.d.ts +14 -0
  505. package/dist/lib/types/menu/checkbox-item/MenuCheckboxItem.d.ts +37 -0
  506. package/dist/lib/types/menu/checkbox-item/MenuCheckboxItemContext.d.ts +6 -0
  507. package/dist/lib/types/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.d.ts +18 -0
  508. package/dist/lib/types/menu/group/MenuGroup.d.ts +11 -0
  509. package/dist/lib/types/menu/group/MenuGroupContext.d.ts +9 -0
  510. package/dist/lib/types/menu/group-label/MenuGroupLabel.d.ts +11 -0
  511. package/dist/lib/types/menu/index.d.ts +20 -0
  512. package/dist/lib/types/menu/index.parts.d.ts +21 -0
  513. package/dist/lib/types/menu/item/MenuItem.d.ts +28 -0
  514. package/dist/lib/types/menu/item/createMenuItem.d.ts +24 -0
  515. package/dist/lib/types/menu/link-item/MenuLinkItem.d.ts +25 -0
  516. package/dist/lib/types/menu/popup/MenuPopup.d.ts +28 -0
  517. package/dist/lib/types/menu/portal/MenuPortal.d.ts +17 -0
  518. package/dist/lib/types/menu/portal/MenuPortalContext.d.ts +8 -0
  519. package/dist/lib/types/menu/positioner/MenuPositioner.d.ts +39 -0
  520. package/dist/lib/types/menu/positioner/MenuPositionerContext.d.ts +5 -0
  521. package/dist/lib/types/menu/radio-group/MenuRadioGroup.d.ts +24 -0
  522. package/dist/lib/types/menu/radio-group/MenuRadioGroupContext.d.ts +11 -0
  523. package/dist/lib/types/menu/radio-item/MenuRadioItem.d.ts +30 -0
  524. package/dist/lib/types/menu/radio-item/MenuRadioItemContext.d.ts +6 -0
  525. package/dist/lib/types/menu/radio-item-indicator/MenuRadioItemIndicator.d.ts +18 -0
  526. package/dist/lib/types/menu/root/MenuRoot.d.ts +56 -0
  527. package/dist/lib/types/menu/root/MenuRootContext.d.ts +23 -0
  528. package/dist/lib/types/menu/store/MenuCollection.d.ts +19 -0
  529. package/dist/lib/types/menu/store/MenuHandle.d.ts +10 -0
  530. package/dist/lib/types/menu/store/MenuStore.d.ts +110 -0
  531. package/dist/lib/types/menu/submenu-root/MenuSubmenuRoot.d.ts +17 -0
  532. package/dist/lib/types/menu/submenu-root/MenuSubmenuRootContext.d.ts +8 -0
  533. package/dist/lib/types/menu/submenu-trigger/MenuSubmenuTrigger.d.ts +33 -0
  534. package/dist/lib/types/menu/trigger/MenuTrigger.d.ts +36 -0
  535. package/dist/lib/types/menu/utils/mergeMenuStyles.d.ts +2 -0
  536. package/dist/lib/types/menu/utils/stateAttributesMapping.d.ts +39 -0
  537. package/dist/lib/types/menu/viewport/MenuViewport.d.ts +15 -0
  538. package/dist/lib/types/menubar/Menubar.d.ts +23 -0
  539. package/dist/lib/types/menubar/MenubarContext.d.ts +34 -0
  540. package/dist/lib/types/menubar/index.d.ts +2 -0
  541. package/dist/lib/types/meter/index.d.ts +6 -0
  542. package/dist/lib/types/meter/index.parts.d.ts +5 -0
  543. package/dist/lib/types/meter/indicator/MeterIndicator.d.ts +12 -0
  544. package/dist/lib/types/meter/label/MeterLabel.d.ts +17 -0
  545. package/dist/lib/types/meter/root/MeterRoot.d.ts +28 -0
  546. package/dist/lib/types/meter/root/MeterRootContext.d.ts +12 -0
  547. package/dist/lib/types/meter/track/MeterTrack.d.ts +12 -0
  548. package/dist/lib/types/meter/value/MeterValue.d.ts +16 -0
  549. package/dist/lib/types/navigation-menu/arrow/NavigationMenuArrow.d.ts +16 -0
  550. package/dist/lib/types/navigation-menu/backdrop/NavigationMenuBackdrop.d.ts +14 -0
  551. package/dist/lib/types/navigation-menu/composite/NavigationMenuCompositeContext.d.ts +22 -0
  552. package/dist/lib/types/navigation-menu/content/NavigationMenuContent.d.ts +21 -0
  553. package/dist/lib/types/navigation-menu/icon/NavigationMenuIcon.d.ts +12 -0
  554. package/dist/lib/types/navigation-menu/index.d.ts +14 -0
  555. package/dist/lib/types/navigation-menu/index.parts.d.ts +13 -0
  556. package/dist/lib/types/navigation-menu/item/NavigationMenuItem.d.ts +15 -0
  557. package/dist/lib/types/navigation-menu/item/NavigationMenuItemContext.d.ts +8 -0
  558. package/dist/lib/types/navigation-menu/link/NavigationMenuLink.d.ts +20 -0
  559. package/dist/lib/types/navigation-menu/list/NavigationMenuList.d.ts +12 -0
  560. package/dist/lib/types/navigation-menu/popup/NavigationMenuPopup.d.ts +23 -0
  561. package/dist/lib/types/navigation-menu/portal/NavigationMenuPortal.d.ts +17 -0
  562. package/dist/lib/types/navigation-menu/portal/NavigationMenuPortalContext.d.ts +8 -0
  563. package/dist/lib/types/navigation-menu/positioner/NavigationMenuPositioner.d.ts +37 -0
  564. package/dist/lib/types/navigation-menu/positioner/NavigationMenuPositionerContext.d.ts +5 -0
  565. package/dist/lib/types/navigation-menu/root/NavigationMenuRoot.d.ts +39 -0
  566. package/dist/lib/types/navigation-menu/root/NavigationMenuRootContext.d.ts +19 -0
  567. package/dist/lib/types/navigation-menu/store/NavigationMenuStore.d.ts +64 -0
  568. package/dist/lib/types/navigation-menu/trigger/NavigationMenuTrigger.d.ts +27 -0
  569. package/dist/lib/types/navigation-menu/utils/mergeNavigationMenuStyles.d.ts +2 -0
  570. package/dist/lib/types/navigation-menu/viewport/NavigationMenuViewport.d.ts +11 -0
  571. package/dist/lib/types/number-field/decrement/NumberFieldDecrement.d.ts +12 -0
  572. package/dist/lib/types/number-field/group/NumberFieldGroup.d.ts +12 -0
  573. package/dist/lib/types/number-field/increment/NumberFieldIncrement.d.ts +12 -0
  574. package/dist/lib/types/number-field/increment/NumberFieldStepperButton.d.ts +26 -0
  575. package/dist/lib/types/number-field/index.d.ts +8 -0
  576. package/dist/lib/types/number-field/index.parts.d.ts +7 -0
  577. package/dist/lib/types/number-field/input/NumberFieldInput.d.ts +25 -0
  578. package/dist/lib/types/number-field/root/NumberFieldRoot.d.ts +55 -0
  579. package/dist/lib/types/number-field/root/NumberFieldRootContext.d.ts +39 -0
  580. package/dist/lib/types/number-field/root/createPressAndHold.d.ts +24 -0
  581. package/dist/lib/types/number-field/scrub-area/NumberFieldScrubArea.d.ts +20 -0
  582. package/dist/lib/types/number-field/scrub-area/NumberFieldScrubAreaContext.d.ts +13 -0
  583. package/dist/lib/types/number-field/scrub-area-cursor/NumberFieldScrubAreaCursor.d.ts +12 -0
  584. package/dist/lib/types/number-field/utils/format.d.ts +2 -0
  585. package/dist/lib/types/number-field/utils/getViewportRect.d.ts +6 -0
  586. package/dist/lib/types/number-field/utils/parse.d.ts +40 -0
  587. package/dist/lib/types/number-field/utils/platform.d.ts +3 -0
  588. package/dist/lib/types/number-field/utils/stateAttributesMapping.d.ts +10 -0
  589. package/dist/lib/types/number-field/utils/types.d.ts +16 -0
  590. package/dist/lib/types/number-field/utils/validate.d.ts +9 -0
  591. package/dist/lib/types/otp-field/index.d.ts +3 -0
  592. package/dist/lib/types/otp-field/index.parts.d.ts +3 -0
  593. package/dist/lib/types/otp-field/input/OTPFieldInput.d.ts +29 -0
  594. package/dist/lib/types/otp-field/root/OTPFieldRoot.d.ts +56 -0
  595. package/dist/lib/types/otp-field/root/OTPFieldRootContext.d.ts +45 -0
  596. package/dist/lib/types/otp-field/utils/otp.d.ts +14 -0
  597. package/dist/lib/types/otp-field/utils/stateAttributesMapping.d.ts +5 -0
  598. package/dist/lib/types/popover/arrow/PopoverArrow.d.ts +16 -0
  599. package/dist/lib/types/popover/backdrop/PopoverBackdrop.d.ts +14 -0
  600. package/dist/lib/types/popover/close/PopoverClose.d.ts +25 -0
  601. package/dist/lib/types/popover/description/PopoverDescription.d.ts +11 -0
  602. package/dist/lib/types/popover/index.d.ts +12 -0
  603. package/dist/lib/types/popover/index.parts.d.ts +12 -0
  604. package/dist/lib/types/popover/popup/PopoverPopup.d.ts +26 -0
  605. package/dist/lib/types/popover/portal/PopoverPortal.d.ts +17 -0
  606. package/dist/lib/types/popover/portal/PopoverPortalContext.d.ts +8 -0
  607. package/dist/lib/types/popover/positioner/PopoverPositioner.d.ts +38 -0
  608. package/dist/lib/types/popover/positioner/PopoverPositionerContext.d.ts +5 -0
  609. package/dist/lib/types/popover/root/PopoverRoot.d.ts +38 -0
  610. package/dist/lib/types/popover/root/PopoverRootContext.d.ts +25 -0
  611. package/dist/lib/types/popover/store/PopoverHandle.d.ts +10 -0
  612. package/dist/lib/types/popover/store/PopoverStore.d.ts +65 -0
  613. package/dist/lib/types/popover/title/PopoverTitle.d.ts +11 -0
  614. package/dist/lib/types/popover/trigger/PopoverTrigger.d.ts +33 -0
  615. package/dist/lib/types/popover/utils/ClosePartContext.d.ts +10 -0
  616. package/dist/lib/types/popover/utils/mergePopoverStyles.d.ts +2 -0
  617. package/dist/lib/types/popover/utils/stateAttributesMapping.d.ts +26 -0
  618. package/dist/lib/types/popover/viewport/PopoverViewport.d.ts +15 -0
  619. package/dist/lib/types/preview-card/arrow/PreviewCardArrow.d.ts +16 -0
  620. package/dist/lib/types/preview-card/backdrop/PreviewCardBackdrop.d.ts +14 -0
  621. package/dist/lib/types/preview-card/index.d.ts +9 -0
  622. package/dist/lib/types/preview-card/index.parts.d.ts +9 -0
  623. package/dist/lib/types/preview-card/popup/PreviewCardPopup.d.ts +23 -0
  624. package/dist/lib/types/preview-card/portal/PreviewCardPortal.d.ts +17 -0
  625. package/dist/lib/types/preview-card/portal/PreviewCardPortalContext.d.ts +8 -0
  626. package/dist/lib/types/preview-card/positioner/PreviewCardPositioner.d.ts +38 -0
  627. package/dist/lib/types/preview-card/positioner/PreviewCardPositionerContext.d.ts +5 -0
  628. package/dist/lib/types/preview-card/root/PreviewCardRoot.d.ts +37 -0
  629. package/dist/lib/types/preview-card/root/PreviewCardRootContext.d.ts +12 -0
  630. package/dist/lib/types/preview-card/store/PreviewCardHandle.d.ts +10 -0
  631. package/dist/lib/types/preview-card/store/PreviewCardStore.d.ts +34 -0
  632. package/dist/lib/types/preview-card/trigger/PreviewCardTrigger.d.ts +20 -0
  633. package/dist/lib/types/preview-card/utils/mergePreviewCardStyles.d.ts +2 -0
  634. package/dist/lib/types/preview-card/utils/stateAttributesMapping.d.ts +32 -0
  635. package/dist/lib/types/preview-card/viewport/PreviewCardViewport.d.ts +14 -0
  636. package/dist/lib/types/progress/index.d.ts +6 -0
  637. package/dist/lib/types/progress/index.parts.d.ts +6 -0
  638. package/dist/lib/types/progress/indicator/ProgressIndicator.d.ts +12 -0
  639. package/dist/lib/types/progress/label/ProgressLabel.d.ts +17 -0
  640. package/dist/lib/types/progress/root/ProgressRoot.d.ts +31 -0
  641. package/dist/lib/types/progress/root/ProgressRootContext.d.ts +13 -0
  642. package/dist/lib/types/progress/root/stateAttributesMapping.d.ts +3 -0
  643. package/dist/lib/types/progress/track/ProgressTrack.d.ts +12 -0
  644. package/dist/lib/types/progress/value/ProgressValue.d.ts +16 -0
  645. package/dist/lib/types/radio/index.d.ts +3 -0
  646. package/dist/lib/types/radio/index.parts.d.ts +2 -0
  647. package/dist/lib/types/radio/indicator/RadioIndicator.d.ts +20 -0
  648. package/dist/lib/types/radio/root/RadioRoot.d.ts +39 -0
  649. package/dist/lib/types/radio/root/RadioRootContext.d.ts +7 -0
  650. package/dist/lib/types/radio-group/RadioGroup.d.ts +43 -0
  651. package/dist/lib/types/radio-group/RadioGroupContext.d.ts +33 -0
  652. package/dist/lib/types/radio-group/index.d.ts +2 -0
  653. package/dist/lib/types/scroll-area/constants.d.ts +2 -0
  654. package/dist/lib/types/scroll-area/content/ScrollAreaContent.d.ts +12 -0
  655. package/dist/lib/types/scroll-area/corner/ScrollAreaCorner.d.ts +11 -0
  656. package/dist/lib/types/scroll-area/index.d.ts +7 -0
  657. package/dist/lib/types/scroll-area/index.parts.d.ts +6 -0
  658. package/dist/lib/types/scroll-area/root/ScrollAreaRoot.d.ts +58 -0
  659. package/dist/lib/types/scroll-area/root/ScrollAreaRootContext.d.ts +44 -0
  660. package/dist/lib/types/scroll-area/root/stateAttributes.d.ts +3 -0
  661. package/dist/lib/types/scroll-area/scrollbar/ScrollAreaScrollbar.d.ts +28 -0
  662. package/dist/lib/types/scroll-area/scrollbar/ScrollAreaScrollbarContext.d.ts +7 -0
  663. package/dist/lib/types/scroll-area/thumb/ScrollAreaThumb.d.ts +22 -0
  664. package/dist/lib/types/scroll-area/utils/dom.d.ts +2 -0
  665. package/dist/lib/types/scroll-area/utils/eventTarget.d.ts +2 -0
  666. package/dist/lib/types/scroll-area/utils/getOffset.d.ts +1 -0
  667. package/dist/lib/types/scroll-area/utils/scrollEdges.d.ts +1 -0
  668. package/dist/lib/types/scroll-area/viewport/ScrollAreaViewport.d.ts +22 -0
  669. package/dist/lib/types/scroll-area/viewport/ScrollAreaViewportContext.d.ts +7 -0
  670. package/dist/lib/types/select/arrow/SelectArrow.d.ts +16 -0
  671. package/dist/lib/types/select/backdrop/SelectBackdrop.d.ts +14 -0
  672. package/dist/lib/types/select/group/SelectGroup.d.ts +11 -0
  673. package/dist/lib/types/select/group/SelectGroupContext.d.ts +9 -0
  674. package/dist/lib/types/select/group-label/SelectGroupLabel.d.ts +11 -0
  675. package/dist/lib/types/select/icon/SelectIcon.d.ts +12 -0
  676. package/dist/lib/types/select/index.d.ts +20 -0
  677. package/dist/lib/types/select/index.parts.d.ts +19 -0
  678. package/dist/lib/types/select/item/SelectItem.d.ts +32 -0
  679. package/dist/lib/types/select/item/SelectItemContext.d.ts +12 -0
  680. package/dist/lib/types/select/item-indicator/SelectItemIndicator.d.ts +18 -0
  681. package/dist/lib/types/select/item-text/SelectItemText.d.ts +11 -0
  682. package/dist/lib/types/select/label/SelectLabel.d.ts +17 -0
  683. package/dist/lib/types/select/list/SelectList.d.ts +16 -0
  684. package/dist/lib/types/select/popup/SelectPopup.d.ts +26 -0
  685. package/dist/lib/types/select/portal/SelectPortal.d.ts +16 -0
  686. package/dist/lib/types/select/portal/SelectPortalContext.d.ts +4 -0
  687. package/dist/lib/types/select/positioner/SelectPositioner.d.ts +37 -0
  688. package/dist/lib/types/select/positioner/SelectPositionerContext.d.ts +16 -0
  689. package/dist/lib/types/select/root/SelectRoot.d.ts +52 -0
  690. package/dist/lib/types/select/root/SelectRootContext.d.ts +63 -0
  691. package/dist/lib/types/select/scroll-arrow/SelectScrollArrow.d.ts +22 -0
  692. package/dist/lib/types/select/scroll-down-arrow/SelectScrollDownArrow.d.ts +15 -0
  693. package/dist/lib/types/select/scroll-up-arrow/SelectScrollUpArrow.d.ts +15 -0
  694. package/dist/lib/types/select/separator/SelectSeparator.d.ts +17 -0
  695. package/dist/lib/types/select/store/SelectCollection.d.ts +25 -0
  696. package/dist/lib/types/select/store/SelectStore.d.ts +82 -0
  697. package/dist/lib/types/select/trigger/SelectTrigger.d.ts +35 -0
  698. package/dist/lib/types/select/types.d.ts +10 -0
  699. package/dist/lib/types/select/utils/equality.d.ts +2 -0
  700. package/dist/lib/types/select/utils/mergeSelectStyles.d.ts +1 -0
  701. package/dist/lib/types/select/utils/scrollEdges.d.ts +3 -0
  702. package/dist/lib/types/select/utils/stateAttributesMapping.d.ts +37 -0
  703. package/dist/lib/types/select/utils/value.d.ts +7 -0
  704. package/dist/lib/types/select/value/SelectValue.d.ts +18 -0
  705. package/dist/lib/types/separator/Separator.d.ts +19 -0
  706. package/dist/lib/types/separator/index.d.ts +2 -0
  707. package/dist/lib/types/slider/control/SliderControl.d.ts +18 -0
  708. package/dist/lib/types/slider/index.d.ts +8 -0
  709. package/dist/lib/types/slider/index.parts.d.ts +7 -0
  710. package/dist/lib/types/slider/indicator/SliderIndicator.d.ts +12 -0
  711. package/dist/lib/types/slider/label/SliderLabel.d.ts +17 -0
  712. package/dist/lib/types/slider/root/SliderRoot.d.ts +57 -0
  713. package/dist/lib/types/slider/root/SliderRootContext.d.ts +63 -0
  714. package/dist/lib/types/slider/stateAttributesMapping.d.ts +14 -0
  715. package/dist/lib/types/slider/thumb/SliderThumb.d.ts +31 -0
  716. package/dist/lib/types/slider/thumb/SliderThumbDataAttributes.d.ts +11 -0
  717. package/dist/lib/types/slider/thumb/prehydrationScript.d.ts +1 -0
  718. package/dist/lib/types/slider/track/SliderTrack.d.ts +12 -0
  719. package/dist/lib/types/slider/utils/dom.d.ts +4 -0
  720. package/dist/lib/types/slider/utils/getPushedThumbValues.d.ts +1 -0
  721. package/dist/lib/types/slider/utils/getSliderValue.d.ts +1 -0
  722. package/dist/lib/types/slider/utils/math.d.ts +4 -0
  723. package/dist/lib/types/slider/utils/resolveThumbCollision.d.ts +7 -0
  724. package/dist/lib/types/slider/utils/roundValueToStep.d.ts +2 -0
  725. package/dist/lib/types/slider/utils/validateMinimumDistance.d.ts +1 -0
  726. package/dist/lib/types/slider/value/SliderValue.d.ts +16 -0
  727. package/dist/lib/types/switch/index.d.ts +3 -0
  728. package/dist/lib/types/switch/index.parts.d.ts +2 -0
  729. package/dist/lib/types/switch/root/SwitchRoot.d.ts +55 -0
  730. package/dist/lib/types/switch/root/SwitchRootContext.d.ts +7 -0
  731. package/dist/lib/types/switch/stateAttributesMapping.d.ts +9 -0
  732. package/dist/lib/types/switch/thumb/SwitchThumb.d.ts +12 -0
  733. package/dist/lib/types/tabs/index.d.ts +6 -0
  734. package/dist/lib/types/tabs/index.parts.d.ts +5 -0
  735. package/dist/lib/types/tabs/indicator/TabsIndicator.d.ts +22 -0
  736. package/dist/lib/types/tabs/indicator/TabsIndicatorCssVars.d.ts +8 -0
  737. package/dist/lib/types/tabs/indicator/prehydrationScript.d.ts +1 -0
  738. package/dist/lib/types/tabs/list/TabsList.d.ts +21 -0
  739. package/dist/lib/types/tabs/list/TabsListContext.d.ts +14 -0
  740. package/dist/lib/types/tabs/panel/TabsPanel.d.ts +30 -0
  741. package/dist/lib/types/tabs/panel/TabsPanelDataAttributes.d.ts +6 -0
  742. package/dist/lib/types/tabs/root/TabsRoot.d.ts +38 -0
  743. package/dist/lib/types/tabs/root/TabsRootContext.d.ts +43 -0
  744. package/dist/lib/types/tabs/root/TabsRootDataAttributes.d.ts +4 -0
  745. package/dist/lib/types/tabs/root/stateAttributesMapping.d.ts +8 -0
  746. package/dist/lib/types/tabs/tab/TabsTab.d.ts +59 -0
  747. package/dist/lib/types/tabs/tab/TabsTabDataAttributes.d.ts +6 -0
  748. package/dist/lib/types/toast/action/ToastAction.d.ts +30 -0
  749. package/dist/lib/types/toast/arrow/ToastArrow.d.ts +18 -0
  750. package/dist/lib/types/toast/close/ToastClose.d.ts +29 -0
  751. package/dist/lib/types/toast/content/ToastContent.d.ts +15 -0
  752. package/dist/lib/types/toast/createToastManager.d.ts +15 -0
  753. package/dist/lib/types/toast/description/ToastDescription.d.ts +16 -0
  754. package/dist/lib/types/toast/index.d.ts +17 -0
  755. package/dist/lib/types/toast/index.parts.d.ts +11 -0
  756. package/dist/lib/types/toast/portal/ToastPortal.d.ts +20 -0
  757. package/dist/lib/types/toast/positioner/ToastPositioner.d.ts +42 -0
  758. package/dist/lib/types/toast/positioner/ToastPositionerContext.d.ts +6 -0
  759. package/dist/lib/types/toast/provider/ToastProvider.d.ts +28 -0
  760. package/dist/lib/types/toast/provider/ToastProviderContext.d.ts +5 -0
  761. package/dist/lib/types/toast/root/ToastRoot.d.ts +39 -0
  762. package/dist/lib/types/toast/root/ToastRootContext.d.ts +14 -0
  763. package/dist/lib/types/toast/store/ToastStore.d.ts +60 -0
  764. package/dist/lib/types/toast/title/ToastTitle.d.ts +13 -0
  765. package/dist/lib/types/toast/types.d.ts +77 -0
  766. package/dist/lib/types/toast/useToastManager.d.ts +11 -0
  767. package/dist/lib/types/toast/utils/createToastLabelPart.d.ts +17 -0
  768. package/dist/lib/types/toast/utils/focusVisible.d.ts +6 -0
  769. package/dist/lib/types/toast/utils/generateToastId.d.ts +5 -0
  770. package/dist/lib/types/toast/utils/isRenderableNode.d.ts +6 -0
  771. package/dist/lib/types/toast/utils/mergeToastStyles.d.ts +2 -0
  772. package/dist/lib/types/toast/utils/resolvePromiseOptions.d.ts +2 -0
  773. package/dist/lib/types/toast/viewport/ToastViewport.d.ts +13 -0
  774. package/dist/lib/types/toggle/Toggle.d.ts +40 -0
  775. package/dist/lib/types/toggle/index.d.ts +2 -0
  776. package/dist/lib/types/toggle-group/ToggleGroup.d.ts +37 -0
  777. package/dist/lib/types/toggle-group/ToggleGroupContext.d.ts +25 -0
  778. package/dist/lib/types/toggle-group/index.d.ts +2 -0
  779. package/dist/lib/types/toolbar/ToolbarItemOwnerContext.d.ts +10 -0
  780. package/dist/lib/types/toolbar/button/ToolbarButton.d.ts +32 -0
  781. package/dist/lib/types/toolbar/createToolbarItem.d.ts +13 -0
  782. package/dist/lib/types/toolbar/group/ToolbarGroup.d.ts +16 -0
  783. package/dist/lib/types/toolbar/group/ToolbarGroupContext.d.ts +8 -0
  784. package/dist/lib/types/toolbar/index.d.ts +8 -0
  785. package/dist/lib/types/toolbar/index.parts.d.ts +7 -0
  786. package/dist/lib/types/toolbar/input/ToolbarInput.d.ts +29 -0
  787. package/dist/lib/types/toolbar/link/ToolbarLink.d.ts +14 -0
  788. package/dist/lib/types/toolbar/root/ToolbarRoot.d.ts +29 -0
  789. package/dist/lib/types/toolbar/root/ToolbarRootContext.d.ts +23 -0
  790. package/dist/lib/types/toolbar/separator/ToolbarSeparator.d.ts +16 -0
  791. package/dist/lib/types/tooltip/arrow/TooltipArrow.d.ts +17 -0
  792. package/dist/lib/types/tooltip/index.d.ts +9 -0
  793. package/dist/lib/types/tooltip/index.parts.d.ts +9 -0
  794. package/dist/lib/types/tooltip/popup/TooltipPopup.d.ts +23 -0
  795. package/dist/lib/types/tooltip/portal/TooltipPortal.d.ts +17 -0
  796. package/dist/lib/types/tooltip/portal/TooltipPortalContext.d.ts +8 -0
  797. package/dist/lib/types/tooltip/positioner/TooltipPositioner.d.ts +37 -0
  798. package/dist/lib/types/tooltip/positioner/TooltipPositionerContext.d.ts +14 -0
  799. package/dist/lib/types/tooltip/provider/TooltipProvider.d.ts +15 -0
  800. package/dist/lib/types/tooltip/provider/TooltipProviderContext.d.ts +10 -0
  801. package/dist/lib/types/tooltip/root/TooltipRoot.d.ts +40 -0
  802. package/dist/lib/types/tooltip/root/TooltipRootContext.d.ts +11 -0
  803. package/dist/lib/types/tooltip/store/TooltipHandle.d.ts +10 -0
  804. package/dist/lib/types/tooltip/store/TooltipStore.d.ts +60 -0
  805. package/dist/lib/types/tooltip/trigger/TooltipTrigger.d.ts +35 -0
  806. package/dist/lib/types/tooltip/utils/mergeTooltipStyles.d.ts +2 -0
  807. package/dist/lib/types/tooltip/utils/stateAttributesMapping.d.ts +68 -0
  808. package/dist/lib/types/tooltip/viewport/TooltipViewport.d.ts +14 -0
  809. package/dist/lib/types/types/index.d.ts +29 -0
  810. package/package.json +583 -0
@@ -0,0 +1,2630 @@
1
+ import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.js";
2
+ import { getStateAttributesProps } from "../internals/getStateAttributesProps.js";
3
+ import { F as windowResize, S as listNavigation, t as cancelOpen, w as none, y as itemPress } from "../internals/reasons.js";
4
+ import { n as resolveClass, t as resolveStyle } from "../resolveStyle-XCSFDHAL.js";
5
+ import { createChangeEventDetails } from "../internals/createBaseUIEventDetails.js";
6
+ import { transitionStatusMapping } from "../internals/stateAttributesMapping.js";
7
+ import { composeEventHandlers } from "../internals/composeEventHandlers.js";
8
+ import { t as runOnceAnimationsFinish } from "../runOnceAnimationsFinish-DCHzXWZU.js";
9
+ import { m as ownerWindow, n as contains, p as ownerDocument } from "../dom-Crg_2R-j.js";
10
+ import { t as createAnchorPositioning } from "../createAnchorPositioning-C-cVOPwz.js";
11
+ import { t as InternalBackdrop } from "../InternalBackdrop-C_iDPVR-.js";
12
+ import { t as createAnchoredPopupScrollLock } from "../createAnchoredPopupScrollLock-DFuUrykR.js";
13
+ import { t as createClickInteraction } from "../createClickInteraction-BYsMgvup.js";
14
+ import { c as useFloatingTree, i as createFloatingNode, n as FloatingTreeContext, r as FloatingTreeStore, s as useFloatingParentNodeId, t as FloatingParentNodeContext } from "../FloatingTree-z1JPD1dR.js";
15
+ import { a as createPopupPresence, n as createTriggerRegistration, o as createDismiss, t as PopupStore } from "../PopupStore-DEs3FAEe.js";
16
+ import { t as createTransitionStatus } from "../createTransitionStatus-BTlrerSS.js";
17
+ import { a as triggerOpenStateMapping, i as pressableTriggerOpenStateMapping, n as popupStateMapping, o as PopupPortal, r as popupTransitionStateMapping } from "../popupStateMapping-nKoUwoke.js";
18
+ import { t as FocusManager } from "../FocusManager-BrbZVWME.js";
19
+ import { t as TriggerFocusGuards } from "../TriggerFocusGuards-sbGwf45f.js";
20
+ import { a as stopButtonInteraction, i as preventDisabledButtonKeyDown, n as handleNonNativeButtonKeyUp, r as preventButtonInteraction, t as handleNonNativeButtonKeyDown } from "../buttonSemantics-BSwDxJhh.js";
21
+ import { t as setRef } from "../setRef-Bt70sW7c.js";
22
+ import { n as useDirection } from "../DirectionContext-YORWLF08.js";
23
+ import { fieldStateAttributesMapping } from "../internals/field-constants.js";
24
+ import { n as useFieldRootContext } from "../FieldRootContext-IC-LWzVp.js";
25
+ import { n as useFormContext } from "../FormContext-pvESt85v.js";
26
+ import { a as defaultItemEquality, c as removeItem, i as compareItemEquality, n as isSolidAccessor, o as findItemIndex, r as areItemArraysEqual, t as mergeStyleValue } from "../mergeStyleValue-Db8bRCM4.js";
27
+ import { r as useLabelableContext } from "../LabelableContext-DZP3rgAY.js";
28
+ import { n as useToolbarRootContext } from "../ToolbarRootContext-DD-qe7s8.js";
29
+ import { Dynamic, escape, memo, mergeProps, scope, ssr, ssrAttribute, ssrElement, ssrGroup, ssrHydrationKey, ssrStyle } from "@solidjs/web";
30
+ import { For, Show, createContext, createEffect, createMemo, createSignal, createUniqueId, flush, merge, omit, onCleanup, untrack, useContext } from "solid-js";
31
+ //#region src/select/utils/value.ts
32
+ function serializeValue(value, itemToStringValue) {
33
+ if (value == null) return "";
34
+ if (itemToStringValue) return itemToStringValue(value) ?? "";
35
+ if (typeof value === "object" && hasOwn(value, "value") && hasOwn(value, "label")) return serializeUnknown(value.value);
36
+ return serializeUnknown(value);
37
+ }
38
+ function stringifyAsLabel(value, itemToStringLabel) {
39
+ if (value == null) return "";
40
+ if (itemToStringLabel) return itemToStringLabel(value) ?? "";
41
+ if (typeof value === "object") {
42
+ if (hasOwn(value, "label") && value.label != null) return String(value.label);
43
+ if (hasOwn(value, "value") && value.value != null) return String(value.value);
44
+ }
45
+ return serializeUnknown(value);
46
+ }
47
+ function resolveSelectedLabel(value, items, itemToStringLabel) {
48
+ if (value != null && itemToStringLabel) return itemToStringLabel(value);
49
+ if (value != null && typeof value === "object" && hasOwn(value, "label") && value.label != null) return value.label;
50
+ const resolved = findItemLabel(value, items);
51
+ return resolved.found ? resolved.label : stringifyAsLabel(value, itemToStringLabel);
52
+ }
53
+ function resolveMultipleLabels(values, items, itemToStringLabel) {
54
+ return values.map((value) => resolveSelectedLabel(value, items, itemToStringLabel)).flatMap((label, index) => index === 0 ? [label] : [", ", label]);
55
+ }
56
+ function hasNullItemLabel(items) {
57
+ return findItemLabel(null, items).found && findItemLabel(null, items).label != null;
58
+ }
59
+ function findItemLabel(value, items) {
60
+ if (!items) return {
61
+ found: false,
62
+ label: void 0
63
+ };
64
+ if (!Array.isArray(items)) {
65
+ const key = String(value);
66
+ return Object.prototype.hasOwnProperty.call(items, key) ? {
67
+ found: true,
68
+ label: items[key]
69
+ } : {
70
+ found: false,
71
+ label: void 0
72
+ };
73
+ }
74
+ const definitions = flattenItems(items);
75
+ for (const item of definitions) if (Object.is(item.value, value) || value != null && typeof value === "object" && hasOwn(value, "value") && Object.is(item.value, value.value)) return {
76
+ found: true,
77
+ label: item.label
78
+ };
79
+ return {
80
+ found: false,
81
+ label: void 0
82
+ };
83
+ }
84
+ function flattenItems(items) {
85
+ const first = items[0];
86
+ if (first && typeof first === "object" && "items" in first) return items.flatMap((group) => group.items);
87
+ return items;
88
+ }
89
+ function serializeUnknown(value) {
90
+ if (typeof value === "string") return value;
91
+ try {
92
+ return JSON.stringify(value) ?? String(value);
93
+ } catch {
94
+ return String(value);
95
+ }
96
+ }
97
+ function hasOwn(value, key) {
98
+ return Object.prototype.hasOwnProperty.call(value, key);
99
+ }
100
+ function getMaxScrollOffset(scrollSize, clientSize) {
101
+ return Math.max(0, scrollSize - clientSize);
102
+ }
103
+ function normalizeScrollOffset(offset, maximum) {
104
+ if (offset <= 1) return 0;
105
+ if (maximum - offset <= 1) return maximum;
106
+ return Math.max(0, Math.min(maximum, offset));
107
+ }
108
+ //#endregion
109
+ //#region src/select/store/SelectCollection.ts
110
+ var SelectCollection = class {
111
+ registrations = /* @__PURE__ */ new Map();
112
+ revision;
113
+ setRevision;
114
+ order = 0;
115
+ constructor() {
116
+ const [revision, setRevision] = createSignal(0, { ownedWrite: true });
117
+ this.revision = revision;
118
+ this.setRevision = setRevision;
119
+ }
120
+ register(item) {
121
+ const registration = {
122
+ ...item,
123
+ order: this.order
124
+ };
125
+ this.order += 1;
126
+ this.registrations.set(item.token, registration);
127
+ this.touch();
128
+ return () => {
129
+ if (this.registrations.delete(item.token)) this.touch();
130
+ };
131
+ }
132
+ touch() {
133
+ this.setRevision((value) => value + 1);
134
+ }
135
+ items() {
136
+ this.revision();
137
+ return Array.from(this.registrations.values()).sort(compareItems);
138
+ }
139
+ indexOf(token) {
140
+ return this.items().findIndex((item) => item.token === token);
141
+ }
142
+ elements() {
143
+ return this.items().map((item) => item.element());
144
+ }
145
+ labels() {
146
+ return this.items().map((item) => {
147
+ const explicit = item.label();
148
+ if (explicit !== void 0) return explicit;
149
+ return item.textElement()?.textContent ?? item.element()?.textContent ?? null;
150
+ });
151
+ }
152
+ values() {
153
+ return this.items().map((item) => item.value());
154
+ }
155
+ disabledIndices() {
156
+ return this.items().flatMap((item, index) => item.disabled() ? [index] : []);
157
+ }
158
+ };
159
+ function compareItems(first, second) {
160
+ const firstElement = first.element();
161
+ const secondElement = second.element();
162
+ if (firstElement && secondElement && firstElement !== secondElement) {
163
+ const position = firstElement.compareDocumentPosition(secondElement);
164
+ if (position & Node.DOCUMENT_POSITION_FOLLOWING) return -1;
165
+ if (position & Node.DOCUMENT_POSITION_PRECEDING) return 1;
166
+ }
167
+ return first.order - second.order;
168
+ }
169
+ //#endregion
170
+ //#region src/select/store/SelectStore.ts
171
+ var SelectStore = class extends PopupStore {
172
+ collection = new SelectCollection();
173
+ selection = {
174
+ allowSelectedMouseUp: false,
175
+ allowUnselectedMouseUp: false,
176
+ dragY: 0
177
+ };
178
+ activeElementAccessor;
179
+ setActiveElementSignal;
180
+ activeElementValue = null;
181
+ openMethodAccessor;
182
+ setOpenMethodSignal;
183
+ openReasonAccessor;
184
+ setOpenReasonSignal;
185
+ forceMountAccessor;
186
+ setForceMountSignal;
187
+ labelIdAccessor;
188
+ setLabelIdSignal;
189
+ listElementAccessor;
190
+ setListElementSignal;
191
+ popupSideAccessor;
192
+ setPopupSideSignal;
193
+ scrollUpVisibleAccessor;
194
+ setScrollUpVisibleSignal;
195
+ scrollDownVisibleAccessor;
196
+ setScrollDownVisibleSignal;
197
+ hasScrollArrowsAccessor;
198
+ setHasScrollArrowsSignal;
199
+ alignItemAccessor;
200
+ setAlignItemSignal;
201
+ typingAccessor;
202
+ setTypingSignal;
203
+ forceMountAllowed = true;
204
+ focusSequence = 0;
205
+ scrollFrame;
206
+ pointerX = null;
207
+ pointerY = null;
208
+ pointerHoverBlocked = false;
209
+ pointerMovements = /* @__PURE__ */ new WeakMap();
210
+ pointerHoverFrame;
211
+ constructor(options) {
212
+ super(options);
213
+ const [activeElement, setActiveElement] = createSignal(null, { ownedWrite: true });
214
+ this.activeElementAccessor = activeElement;
215
+ this.setActiveElementSignal = setActiveElement;
216
+ const [openMethod, setOpenMethod] = createSignal(null, { ownedWrite: true });
217
+ this.openMethodAccessor = openMethod;
218
+ this.setOpenMethodSignal = setOpenMethod;
219
+ const [openReason, setOpenReason] = createSignal(null, { ownedWrite: true });
220
+ this.openReasonAccessor = openReason;
221
+ this.setOpenReasonSignal = setOpenReason;
222
+ const [forceMount, setForceMount] = createSignal(false, { ownedWrite: true });
223
+ this.forceMountAccessor = forceMount;
224
+ this.setForceMountSignal = setForceMount;
225
+ const [labelId, setLabelId] = createSignal();
226
+ this.labelIdAccessor = labelId;
227
+ this.setLabelIdSignal = setLabelId;
228
+ const [listElement, setListElement] = createSignal(null, { ownedWrite: true });
229
+ this.listElementAccessor = listElement;
230
+ this.setListElementSignal = setListElement;
231
+ const [popupSide, setPopupSide] = createSignal(null, { ownedWrite: true });
232
+ this.popupSideAccessor = popupSide;
233
+ this.setPopupSideSignal = setPopupSide;
234
+ const [scrollUpVisible, setScrollUpVisible] = createSignal(false, { ownedWrite: true });
235
+ this.scrollUpVisibleAccessor = scrollUpVisible;
236
+ this.setScrollUpVisibleSignal = setScrollUpVisible;
237
+ const [scrollDownVisible, setScrollDownVisible] = createSignal(false, { ownedWrite: true });
238
+ this.scrollDownVisibleAccessor = scrollDownVisible;
239
+ this.setScrollDownVisibleSignal = setScrollDownVisible;
240
+ const [hasScrollArrows, setHasScrollArrows] = createSignal(false, { ownedWrite: true });
241
+ this.hasScrollArrowsAccessor = hasScrollArrows;
242
+ this.setHasScrollArrowsSignal = setHasScrollArrows;
243
+ const [alignItem, setAlignItem] = createSignal(false, { ownedWrite: true });
244
+ this.alignItemAccessor = alignItem;
245
+ this.setAlignItemSignal = setAlignItem;
246
+ const [typing, setTyping] = createSignal(false, { ownedWrite: true });
247
+ this.typingAccessor = typing;
248
+ this.setTypingSignal = setTyping;
249
+ }
250
+ activeIndex() {
251
+ this.activeElementAccessor();
252
+ const element = this.activeElementValue;
253
+ if (!element) return null;
254
+ const index = this.collection.elements().indexOf(element);
255
+ return index === -1 ? null : index;
256
+ }
257
+ activeElement() {
258
+ this.activeElementAccessor();
259
+ return this.activeElementValue;
260
+ }
261
+ setActiveIndex(index, focus = false) {
262
+ const element = index === null ? null : this.collection.elements()[index] ?? null;
263
+ const sequence = ++this.focusSequence;
264
+ this.activeElementValue = element;
265
+ this.setActiveElementSignal(element);
266
+ if (this.scrollFrame) {
267
+ this.scrollFrame.window.cancelAnimationFrame(this.scrollFrame.id);
268
+ this.scrollFrame = void 0;
269
+ }
270
+ if (focus && element) {
271
+ flush();
272
+ element.focus({ preventScroll: true });
273
+ const windowNode = element.ownerDocument.defaultView;
274
+ if (windowNode) {
275
+ const id = windowNode.requestAnimationFrame(() => {
276
+ if (sequence === this.focusSequence && this.activeElementValue === element && element.isConnected) element.scrollIntoView?.({
277
+ block: "nearest",
278
+ inline: "nearest"
279
+ });
280
+ });
281
+ this.scrollFrame = {
282
+ window: windowNode,
283
+ id
284
+ };
285
+ }
286
+ }
287
+ }
288
+ setActiveElement(element) {
289
+ this.activeElementValue = element;
290
+ this.setActiveElementSignal(element);
291
+ flush();
292
+ }
293
+ trackPointer(event) {
294
+ if ("pointerType" in event && event.pointerType !== "mouse") return;
295
+ const moved = this.pointerX !== null && this.pointerY !== null ? event.clientX !== this.pointerX || event.clientY !== this.pointerY : !this.pointerHoverBlocked;
296
+ this.pointerX = event.clientX;
297
+ this.pointerY = event.clientY;
298
+ this.pointerMovements.set(event, moved);
299
+ }
300
+ pointerMoved(event) {
301
+ if (!this.pointerMovements.has(event)) this.trackPointer(event);
302
+ const moved = this.pointerMovements.get(event) ?? false;
303
+ if (this.pointerHoverBlocked && !moved) return false;
304
+ if (moved) this.pointerHoverBlocked = false;
305
+ return moved;
306
+ }
307
+ blockPointerHover(windowNode) {
308
+ this.pointerHoverBlocked = true;
309
+ if (this.pointerHoverFrame) {
310
+ this.pointerHoverFrame.window.cancelAnimationFrame(this.pointerHoverFrame.id);
311
+ this.pointerHoverFrame = void 0;
312
+ }
313
+ if (this.pointerX !== null || !windowNode) return;
314
+ const firstFrame = windowNode.requestAnimationFrame(() => {
315
+ const secondFrame = windowNode.requestAnimationFrame(() => {
316
+ this.pointerHoverFrame = void 0;
317
+ if (this.pointerX === null) this.pointerHoverBlocked = false;
318
+ });
319
+ this.pointerHoverFrame = {
320
+ window: windowNode,
321
+ id: secondFrame
322
+ };
323
+ });
324
+ this.pointerHoverFrame = {
325
+ window: windowNode,
326
+ id: firstFrame
327
+ };
328
+ }
329
+ openMethod() {
330
+ return this.openMethodAccessor();
331
+ }
332
+ setOpenMethod(method) {
333
+ this.setOpenMethodSignal(method);
334
+ }
335
+ openChangeReason() {
336
+ return this.openReasonAccessor();
337
+ }
338
+ forceMount() {
339
+ return this.forceMountAccessor();
340
+ }
341
+ setForceMount(value) {
342
+ if (!value || this.forceMountAllowed) this.setForceMountSignal(value);
343
+ }
344
+ suppressForceMount() {
345
+ this.forceMountAllowed = false;
346
+ this.setForceMountSignal(false);
347
+ }
348
+ labelId() {
349
+ return this.labelIdAccessor();
350
+ }
351
+ setLabelId(value) {
352
+ this.setLabelIdSignal(value);
353
+ }
354
+ listElement() {
355
+ return this.listElementAccessor();
356
+ }
357
+ setListElement(value) {
358
+ this.setListElementSignal(value);
359
+ }
360
+ popupSide() {
361
+ return this.popupSideAccessor();
362
+ }
363
+ setPopupSide(value) {
364
+ this.setPopupSideSignal(value);
365
+ }
366
+ scrollUpVisible() {
367
+ return this.scrollUpVisibleAccessor();
368
+ }
369
+ setScrollUpVisible(value) {
370
+ this.setScrollUpVisibleSignal(value);
371
+ }
372
+ scrollDownVisible() {
373
+ return this.scrollDownVisibleAccessor();
374
+ }
375
+ setScrollDownVisible(value) {
376
+ this.setScrollDownVisibleSignal(value);
377
+ }
378
+ hasScrollArrows() {
379
+ return this.hasScrollArrowsAccessor();
380
+ }
381
+ setHasScrollArrows(value) {
382
+ this.setHasScrollArrowsSignal(value);
383
+ }
384
+ alignItemWithTrigger() {
385
+ return this.alignItemAccessor();
386
+ }
387
+ setAlignItemWithTrigger(value) {
388
+ this.setAlignItemSignal(value);
389
+ }
390
+ typing() {
391
+ return this.typingAccessor();
392
+ }
393
+ setTyping(value) {
394
+ this.setTypingSignal(value);
395
+ }
396
+ resetAfterClose() {
397
+ this.setActiveIndex(null);
398
+ this.setOpenMethod(null);
399
+ this.setScrollUpVisible(false);
400
+ this.setScrollDownVisible(false);
401
+ this.setTyping(false);
402
+ this.selection.allowSelectedMouseUp = false;
403
+ this.selection.allowUnselectedMouseUp = false;
404
+ this.selection.dragY = 0;
405
+ }
406
+ dispose() {
407
+ this.focusSequence += 1;
408
+ if (this.scrollFrame) {
409
+ this.scrollFrame.window.cancelAnimationFrame(this.scrollFrame.id);
410
+ this.scrollFrame = void 0;
411
+ }
412
+ if (this.pointerHoverFrame) {
413
+ this.pointerHoverFrame.window.cancelAnimationFrame(this.pointerHoverFrame.id);
414
+ this.pointerHoverFrame = void 0;
415
+ }
416
+ }
417
+ setOpen(open, details) {
418
+ const accepted = super.setOpen(open, details);
419
+ if (accepted) {
420
+ if (open) this.forceMountAllowed = true;
421
+ this.setOpenReasonSignal(details.reason);
422
+ }
423
+ return accepted;
424
+ }
425
+ };
426
+ //#endregion
427
+ //#region src/select/root/SelectRootContext.ts
428
+ var MISSING_CONTEXT$4 = Symbol("SelectRootContext");
429
+ var SelectRootContext = createContext(MISSING_CONTEXT$4);
430
+ function useSelectRootContext() {
431
+ const context = useContext(SelectRootContext);
432
+ if (context === MISSING_CONTEXT$4) throw new Error("Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>.");
433
+ return context;
434
+ }
435
+ //#endregion
436
+ //#region src/select/root/SelectRoot.tsx
437
+ var _tmpl$ = [
438
+ "<input",
439
+ "",
440
+ "",
441
+ "",
442
+ "",
443
+ "",
444
+ "",
445
+ "",
446
+ "",
447
+ " tabindex=\"-1\" style=\"",
448
+ "\" aria-hidden=\"true\"",
449
+ "",
450
+ ">"
451
+ ];
452
+ var _tmpl$2 = [
453
+ "<input",
454
+ " type=\"hidden\"",
455
+ "",
456
+ "",
457
+ "",
458
+ ">"
459
+ ];
460
+ var HIDDEN_INPUT_STYLE = {
461
+ "clip-path": "inset(50%)",
462
+ overflow: "hidden",
463
+ "white-space": "nowrap",
464
+ border: "0",
465
+ padding: "0",
466
+ width: "1px",
467
+ height: "1px",
468
+ margin: "-1px",
469
+ position: "fixed",
470
+ top: "0",
471
+ left: "0"
472
+ };
473
+ var HIDDEN_NAMED_INPUT_STYLE = {
474
+ ...HIDDEN_INPUT_STYLE,
475
+ position: "absolute"
476
+ };
477
+ /** Groups all parts of the select without rendering a wrapper element. */
478
+ function SelectRoot(props) {
479
+ var _v$, _g$2, _g$, _v$6;
480
+ const field = useFieldRootContext(true);
481
+ const formContext = useFormContext();
482
+ const labelable = useLabelableContext();
483
+ const inheritedTree = useFloatingTree();
484
+ const inheritedParentNodeId = useFloatingParentNodeId();
485
+ const tree = inheritedTree ?? new FloatingTreeStore();
486
+ const fieldControlSource = Symbol("Select");
487
+ const generatedId = `base-ui-${createUniqueId()}`;
488
+ const floatingId = `base-ui-${createUniqueId()}`;
489
+ const nodeId = createUniqueId();
490
+ const controlledValue = untrack(() => props.value !== void 0);
491
+ const controlledOpen = untrack(() => props.open !== void 0);
492
+ const multiple = createMemo(() => props.multiple ?? false);
493
+ const initialValue = untrack(() => {
494
+ const defaultValue = props.defaultValue;
495
+ if (defaultValue != null) return cloneValue(defaultValue);
496
+ return props.multiple ? [] : null;
497
+ });
498
+ const [uncontrolledValue, setUncontrolledValue] = createSignal(() => initialValue);
499
+ const [triggerElement, setTriggerElement] = createSignal(null, { ownedWrite: true });
500
+ const [inputElement, setInputElement] = createSignal(null, { ownedWrite: true });
501
+ const [valueElement, setValueElement] = createSignal(null, { ownedWrite: true });
502
+ const [firstItemText, setFirstItemText] = createSignal(null, { ownedWrite: true });
503
+ const [selectedItemText, setSelectedItemText] = createSignal(null, { ownedWrite: true });
504
+ const [backdropElement, setBackdropElement] = createSignal(null, { ownedWrite: true });
505
+ const [internalBackdropElement, setInternalBackdropElement] = createSignal(null, { ownedWrite: true });
506
+ const [beforeContentGuard, setBeforeContentGuard] = createSignal(null, { ownedWrite: true });
507
+ const [afterTriggerGuard, setAfterTriggerGuard] = createSignal(null, { ownedWrite: true });
508
+ const id = createMemo(() => props.id ?? generatedId);
509
+ const value = createMemo(() => controlledValue ? props.value : uncontrolledValue());
510
+ const comparator = createMemo(() => props.isItemEqualToValue ?? defaultItemEquality);
511
+ const disabled = createMemo(() => field.disabled() || (props.disabled ?? false));
512
+ const readOnly = createMemo(() => props.readOnly ?? false);
513
+ const required = createMemo(() => props.required ?? false);
514
+ const modal = createMemo(() => props.modal ?? true);
515
+ const highlightItemOnHover = createMemo(() => props.highlightItemOnHover ?? true);
516
+ const name = createMemo(() => field.name() ?? props.name);
517
+ const serializedValue = createMemo(() => multiple() ? "" : serializeValue(value(), props.itemToStringValue));
518
+ const serializedFieldValue = createMemo(() => {
519
+ const current = value();
520
+ return multiple() && Array.isArray(current) ? current.map((item) => serializeValue(item, props.itemToStringValue)) : serializeValue(current, props.itemToStringValue);
521
+ });
522
+ const hasSelectedValue = createMemo(() => {
523
+ const current = value();
524
+ return multiple() ? Array.isArray(current) && current.length > 0 : current != null && serializedValue() !== "";
525
+ });
526
+ let previousValue = cloneValue(untrack(value));
527
+ let previousOpen = Boolean(untrack(() => props.open ?? props.defaultOpen));
528
+ let selectionTimer;
529
+ let typeaheadTimer;
530
+ let typed = "";
531
+ let typeaheadMatch = -1;
532
+ let pendingInitialFocus = null;
533
+ let initializedOpen = false;
534
+ let focusEpoch = 0;
535
+ let previousElements = [];
536
+ const scrollHandler = { current: null };
537
+ const store = new SelectStore({
538
+ controlledOpen: () => controlledOpen ? props.open : void 0,
539
+ floatingId,
540
+ nodeId,
541
+ onOpenChange: () => (open, details) => {
542
+ if (!open && props.actionsRef) details.preventUnmountOnClose();
543
+ props.onOpenChange?.(open, details);
544
+ if (!details.isCanceled && !open && (details.reason === "focus-out" || details.reason === "outside-press")) {
545
+ field.setTouched(true);
546
+ field.setFocused(false);
547
+ if (field.validationMode() === "onBlur") field.validation.commit(untrack(value));
548
+ }
549
+ },
550
+ onOpenChangeComplete: () => props.onOpenChangeComplete
551
+ });
552
+ store.update({ open: previousOpen });
553
+ store.configureTriggerUnmount({ closeOnActiveTriggerUnmount: false });
554
+ const node = createFloatingNode({
555
+ tree,
556
+ id: nodeId,
557
+ parentId: inheritedParentNodeId,
558
+ context: () => store.context.floatingRoot
559
+ });
560
+ const presence = createPopupPresence(store, () => store.track().popupElement, { onUnmount: () => store.resetAfterClose() });
561
+ const selectedIndex = createMemo(() => {
562
+ const values = store.collection.values();
563
+ const current = value();
564
+ if (multiple()) {
565
+ if (!Array.isArray(current) || current.length === 0) return null;
566
+ const index = findItemIndex(values, current[current.length - 1], comparator());
567
+ return index === -1 ? null : index;
568
+ }
569
+ const index = findItemIndex(values, current, comparator());
570
+ return index === -1 ? null : index;
571
+ });
572
+ function setValue(nextValue, details) {
573
+ props.onValueChange?.(nextValue, details);
574
+ if (details.isCanceled) return false;
575
+ if (!controlledValue) setUncontrolledValue(() => nextValue);
576
+ return true;
577
+ }
578
+ function setOpen(open, details) {
579
+ return store.setOpen(open, details);
580
+ }
581
+ const dismiss = createDismiss({
582
+ context: store.context.floatingRoot,
583
+ tree: () => tree,
584
+ outsidePressEvent: () => ({
585
+ mouse: "sloppy",
586
+ touch: "sloppy"
587
+ })
588
+ });
589
+ function handleKeyDown(event) {
590
+ store.blockPointerHover(event.currentTarget?.ownerDocument.defaultView ?? null);
591
+ dismiss.onKeyDown(event);
592
+ if (event.baseUIHandlerPrevented || event.key === "Escape" && event.defaultPrevented) return;
593
+ handleTypeahead(event);
594
+ handleNavigation(event);
595
+ }
596
+ function handleNavigation(event) {
597
+ if (disabled() || readOnly() || ![
598
+ "ArrowDown",
599
+ "ArrowUp",
600
+ "Home",
601
+ "End"
602
+ ].includes(event.key)) return;
603
+ event.preventDefault();
604
+ event.stopPropagation();
605
+ if (!store.open()) {
606
+ if (event.key !== "ArrowDown" && event.key !== "ArrowUp") return;
607
+ pendingInitialFocus = event.key === "ArrowDown" ? "first" : "last";
608
+ store.setOpenMethod("keyboard");
609
+ setOpen(true, createChangeEventDetails(listNavigation, event, triggerElement() ?? void 0));
610
+ return;
611
+ }
612
+ const elements = store.collection.elements();
613
+ if (elements.length === 0) return;
614
+ const current = store.activeIndex() ?? selectedIndex() ?? -1;
615
+ const next = event.key === "Home" ? 0 : event.key === "End" ? elements.length - 1 : Math.max(0, Math.min(elements.length - 1, current + (event.key === "ArrowDown" ? 1 : -1)));
616
+ store.setActiveIndex(next, true);
617
+ }
618
+ function resetTypeahead() {
619
+ clearTimeout(typeaheadTimer);
620
+ typed = "";
621
+ typeaheadMatch = -1;
622
+ store.setTyping(false);
623
+ }
624
+ function handleTypeahead(event) {
625
+ if (disabled() || readOnly() || !store.open() && multiple() || event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) return;
626
+ if (typed && event.key === " ") {
627
+ event.preventDefault();
628
+ event.stopPropagation();
629
+ }
630
+ typed = typed.length > 0 && [...typed].every((character) => character.toLocaleLowerCase() === event.key.toLocaleLowerCase()) ? event.key : typed + event.key;
631
+ store.setTyping(true);
632
+ clearTimeout(typeaheadTimer);
633
+ typeaheadTimer = setTimeout(resetTypeahead, 750);
634
+ const labels = store.collection.labels();
635
+ const disabledItems = new Set(store.collection.disabledIndices());
636
+ const start = (typeaheadMatch >= 0 ? typeaheadMatch : store.activeIndex() ?? selectedIndex() ?? -1) + 1;
637
+ const query = typed.toLocaleLowerCase();
638
+ for (let offset = 0; offset < labels.length; offset += 1) {
639
+ const index = (start + offset) % labels.length;
640
+ if (!disabledItems.has(index) && labels[index]?.toLocaleLowerCase().startsWith(query)) {
641
+ typeaheadMatch = index;
642
+ if (store.open()) {
643
+ event.preventDefault();
644
+ event.stopPropagation();
645
+ store.setActiveIndex(index, true);
646
+ } else {
647
+ const nextValue = store.collection.values()[index];
648
+ if (nextValue !== void 0) setValue(nextValue, createChangeEventDetails(none, event));
649
+ }
650
+ return;
651
+ }
652
+ }
653
+ }
654
+ function handleTypeaheadBlur(event) {
655
+ untrack(() => {
656
+ const next = event.relatedTarget;
657
+ const positioner = store.track().positionerElement;
658
+ if (!triggerElement()?.contains(next) && !positioner?.contains(next)) resetTypeahead();
659
+ });
660
+ }
661
+ function handleScroll(scroller) {
662
+ if (scrollHandler.current) {
663
+ scrollHandler.current(scroller);
664
+ return;
665
+ }
666
+ updateScrollArrowVisibility(scroller);
667
+ }
668
+ function updateScrollArrowVisibility(scroller) {
669
+ const maximum = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);
670
+ const offset = normalizeScrollOffset(scroller.scrollTop, maximum);
671
+ if (offset !== scroller.scrollTop) scroller.scrollTop = offset;
672
+ store.setScrollUpVisible(offset > 0);
673
+ store.setScrollDownVisible(offset < maximum);
674
+ }
675
+ const context = {
676
+ store,
677
+ tree,
678
+ node,
679
+ presence,
680
+ id,
681
+ value,
682
+ items: () => props.items,
683
+ multiple,
684
+ disabled,
685
+ readOnly,
686
+ required,
687
+ modal,
688
+ highlightItemOnHover,
689
+ itemToStringLabel: () => props.itemToStringLabel,
690
+ itemToStringValue: () => props.itemToStringValue,
691
+ comparator,
692
+ hasSelectedValue,
693
+ selectedIndex,
694
+ setValue,
695
+ setOpen,
696
+ triggerElement,
697
+ setTriggerElement,
698
+ valueElement,
699
+ setValueElement,
700
+ firstItemText,
701
+ selectedItemText,
702
+ setFirstItemText,
703
+ setSelectedItemText,
704
+ handleKeyDown,
705
+ handleTypeaheadBlur,
706
+ handleScroll,
707
+ updateScrollArrowVisibility,
708
+ scrollHandler,
709
+ scrollArrowsMounted: { count: 0 },
710
+ field,
711
+ formContext,
712
+ backdropElement,
713
+ setBackdropElement,
714
+ internalBackdropElement,
715
+ setInternalBackdropElement,
716
+ beforeContentGuard,
717
+ setBeforeContentGuard,
718
+ afterTriggerGuard,
719
+ setAfterTriggerGuard,
720
+ initialValue
721
+ };
722
+ const registration = {
723
+ id: generatedId,
724
+ name: void 0,
725
+ value,
726
+ getValue: serializedFieldValue,
727
+ getControl: () => triggerElement()
728
+ };
729
+ const actions = { unmount() {
730
+ store.suppressForceMount();
731
+ presence.forceUnmount();
732
+ } };
733
+ store.context.floatingRoot.context.data.insideElements = () => [backdropElement(), internalBackdropElement()];
734
+ store.setInteractionProps({
735
+ activeTriggerProps: { onKeyDown: handleKeyDown },
736
+ inactiveTriggerProps: { onKeyDown: handleKeyDown },
737
+ popupProps: { onKeyDown: handleKeyDown }
738
+ });
739
+ createEffect(() => ({
740
+ open: store.open(),
741
+ activeTriggerId: store.activeTriggerId()
742
+ }), () => untrack(() => store.reconcileTriggers()));
743
+ createEffect(() => triggerElement()?.ownerDocument, (documentNode) => {
744
+ if (!documentNode) return;
745
+ const trackPointer = (event) => store.trackPointer(event);
746
+ documentNode.addEventListener("pointermove", trackPointer, true);
747
+ documentNode.addEventListener("mousemove", trackPointer, true);
748
+ return () => {
749
+ documentNode.removeEventListener("pointermove", trackPointer, true);
750
+ documentNode.removeEventListener("mousemove", trackPointer, true);
751
+ };
752
+ });
753
+ createEffect(() => store.open(), (open) => {
754
+ clearTimeout(selectionTimer);
755
+ if (open) selectionTimer = setTimeout(() => {
756
+ store.selection.allowSelectedMouseUp = true;
757
+ store.selection.allowUnselectedMouseUp = true;
758
+ }, 400);
759
+ else if (previousOpen) {
760
+ store.selection.allowSelectedMouseUp = false;
761
+ store.selection.allowUnselectedMouseUp = false;
762
+ store.selection.dragY = 0;
763
+ }
764
+ previousOpen = open;
765
+ });
766
+ createEffect(() => ({
767
+ open: store.open(),
768
+ reason: store.openChangeReason(),
769
+ trigger: triggerElement()
770
+ }), (current, previous) => {
771
+ if (previous?.open && !current.open && current.trigger && (current.reason === "item-press" || current.reason === "escape-key")) queueMicrotask(() => current.trigger?.focus({ preventScroll: true }));
772
+ });
773
+ createEffect(() => ({
774
+ open: store.open(),
775
+ mounted: presence.mounted(),
776
+ itemCount: store.collection.items().length
777
+ }), ({ open, mounted, itemCount }) => {
778
+ if (!open) {
779
+ initializedOpen = false;
780
+ focusEpoch += 1;
781
+ return;
782
+ }
783
+ if (!mounted || itemCount === 0 || initializedOpen) return;
784
+ initializedOpen = true;
785
+ const epoch = ++focusEpoch;
786
+ queueMicrotask(() => {
787
+ untrack(() => {
788
+ if (epoch !== focusEpoch || !store.open()) return;
789
+ const selected = selectedIndex();
790
+ const available = store.collection.items().flatMap((item, index) => item.disabled() ? [] : [index]);
791
+ const index = selected ?? (pendingInitialFocus === "last" ? available[available.length - 1] : available[0]) ?? null;
792
+ pendingInitialFocus = null;
793
+ store.setActiveIndex(index, true);
794
+ });
795
+ });
796
+ });
797
+ createEffect(() => store.collection.elements(), (elements) => {
798
+ const previous = previousElements;
799
+ previousElements = elements;
800
+ untrack(() => {
801
+ const active = store.activeElement();
802
+ if (!store.open() || !presence.mounted() || !active || elements.includes(active)) return;
803
+ const previousIndex = previous.indexOf(active);
804
+ const available = store.collection.items().flatMap((item, index) => item.disabled() ? [] : [index]);
805
+ const next = available.find((index) => index >= Math.max(0, previousIndex)) ?? available[available.length - 1] ?? null;
806
+ store.setActiveIndex(next, next !== null);
807
+ });
808
+ });
809
+ createEffect(() => ({
810
+ current: value(),
811
+ filled: hasSelectedValue(),
812
+ comparator: comparator()
813
+ }), ({ current, filled, comparator: currentComparator }) => {
814
+ field.setFilled(filled);
815
+ if (sameValue(current, previousValue, currentComparator)) return;
816
+ previousValue = cloneValue(current);
817
+ untrack(() => {
818
+ formContext.clearError(name());
819
+ field.setDirty(!sameDirtyValue(current, field.validityData().initialValue, currentComparator));
820
+ field.validation.change(current);
821
+ });
822
+ });
823
+ createEffect(() => ({
824
+ disabled: disabled(),
825
+ id: id(),
826
+ name: props.name,
827
+ trigger: triggerElement()
828
+ }), (current) => {
829
+ registration.id = current.id;
830
+ registration.name = current.name;
831
+ field.registerFieldControl(fieldControlSource, current.disabled || !current.trigger ? void 0 : registration);
832
+ });
833
+ createEffect(inputElement, (input) => {
834
+ if (!input) return;
835
+ return field.validation.registerInput(fieldControlSource, input, () => triggerElement());
836
+ });
837
+ createEffect(() => props.actionsRef, (actionsRef) => {
838
+ actionsRef?.(actions);
839
+ });
840
+ onCleanup(() => {
841
+ clearTimeout(selectionTimer);
842
+ clearTimeout(typeaheadTimer);
843
+ field.registerFieldControl(fieldControlSource, void 0);
844
+ store.dispose();
845
+ store.clearInteractionProps();
846
+ delete store.context.floatingRoot.context.data.insideElements;
847
+ });
848
+ return SelectRootContext({
849
+ value: context,
850
+ get children() {
851
+ return FloatingTreeContext({
852
+ value: tree,
853
+ get children() {
854
+ return FloatingParentNodeContext({
855
+ get value() {
856
+ return node.id ?? null;
857
+ },
858
+ get children() {
859
+ return [
860
+ memo(() => {
861
+ return escape(props.children);
862
+ }),
863
+ (_v$ = ssrHydrationKey(), props.inputRef, _g$2 = ssrGroup(() => {
864
+ return [
865
+ ssrAttribute("id", name() == null ? `${escape(id(), true)}-hidden-input` : escape(void 0, true)),
866
+ ssrAttribute("form", escape(props.form, true)),
867
+ ssrAttribute("name", multiple() ? escape(void 0, true) : escape(name(), true)),
868
+ ssrAttribute("autocomplete", escape(props.autoComplete, true))
869
+ ];
870
+ }, 4), _g$ = ssrGroup(() => {
871
+ return [
872
+ ssrAttribute("disabled", escape(disabled(), true)),
873
+ ssrAttribute("required", required() && !(multiple() && hasSelectedValue())),
874
+ ssrAttribute("readonly", escape(readOnly(), true)),
875
+ ssrStyle(name() ? HIDDEN_NAMED_INPUT_STYLE : HIDDEN_INPUT_STYLE),
876
+ ssrAttribute("aria-describedby", escape(labelable.getAriaDescribedBy(void 0), true)),
877
+ ssrAttribute("aria-invalid", field.state().valid === false && !disabled() ? "true" : escape(void 0, true))
878
+ ];
879
+ }, 6), _v$6 = () => {
880
+ return ssrAttribute("value", escape(serializedValue(), true));
881
+ }, ssr(_tmpl$, _v$, _g$2, _g$2, _g$2, _g$2, _v$6, _g$, _g$, _g$, _g$, _g$, _g$)),
882
+ For({
883
+ get each() {
884
+ return memo(() => {
885
+ return !!(multiple() && Array.isArray(value()));
886
+ })() ? value() : [];
887
+ },
888
+ children: (item) => {
889
+ var _v$13, _g$3, _v$17, _v$16;
890
+ return _v$13 = ssrHydrationKey(), _g$3 = ssrGroup(() => {
891
+ return [ssrAttribute("form", escape(props.form, true)), ssrAttribute("name", escape(name(), true))];
892
+ }, 2), _v$17 = () => {
893
+ return ssrAttribute("disabled", escape(disabled(), true));
894
+ }, _v$16 = () => {
895
+ return ssrAttribute("value", escape(serializeValue(item, props.itemToStringValue), true));
896
+ }, ssr(_tmpl$2, _v$13, _g$3, _g$3, _v$16, _v$17);
897
+ }
898
+ })
899
+ ];
900
+ }
901
+ });
902
+ }
903
+ });
904
+ }
905
+ });
906
+ }
907
+ function cloneValue(value) {
908
+ return Array.isArray(value) ? value.slice() : value;
909
+ }
910
+ function sameValue(first, second, comparator) {
911
+ if (Array.isArray(first) && Array.isArray(second)) return areItemArraysEqual(first, second, comparator);
912
+ return Object.is(first, second);
913
+ }
914
+ function sameDirtyValue(current, initial, comparator) {
915
+ if (Array.isArray(current) && Array.isArray(initial)) return areItemArraysEqual(current, initial, comparator);
916
+ return current === initial;
917
+ }
918
+ //#endregion
919
+ //#region src/select/label/SelectLabel.tsx
920
+ /** An accessible label automatically associated with the select trigger. */
921
+ function SelectLabel(props) {
922
+ const context = useSelectRootContext();
923
+ const labelable = useLabelableContext();
924
+ const internalProps = props;
925
+ const allProps = props;
926
+ const id = createMemo(() => `${context.id()}-label`);
927
+ const state = createMemo(() => context.field.state());
928
+ const classValue = createMemo(() => resolveClass(props.class, state()));
929
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
930
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), fieldStateAttributesMapping));
931
+ const others = omit(allProps, "as", "class", "id", "onClick", "onPointerDown", "ref", "style");
932
+ function focusTrigger(event) {
933
+ const target = event.composedPath()[0];
934
+ if (target instanceof Element && target.closest("button,input,select,textarea,a[href]")) return;
935
+ if (!event.defaultPrevented && event.detail > 1) event.preventDefault();
936
+ context.triggerElement()?.focus({ focusVisible: true });
937
+ }
938
+ function preventPointerFocus(event) {
939
+ event.preventDefault();
940
+ }
941
+ const onClick = composeEventHandlers(() => internalProps.onClick, () => focusTrigger);
942
+ const onPointerDown = composeEventHandlers(() => internalProps.onPointerDown, () => preventPointerFocus);
943
+ createEffect(id, (currentId) => {
944
+ context.store.setLabelId(currentId);
945
+ const unregister = labelable.registerLabelId(currentId);
946
+ return () => {
947
+ unregister();
948
+ if (untrack(() => context.store.labelId()) === currentId) context.store.setLabelId(void 0);
949
+ };
950
+ });
951
+ return Dynamic(mergeProps({
952
+ get component() {
953
+ return props.as ?? "div";
954
+ },
955
+ ref: [internalProps.ref],
956
+ get id() {
957
+ return id();
958
+ },
959
+ get ["class"]() {
960
+ return classValue();
961
+ },
962
+ get style() {
963
+ return styleValue();
964
+ },
965
+ onClick,
966
+ onPointerDown
967
+ }, stateAttributes, others));
968
+ }
969
+ //#endregion
970
+ //#region src/select/utils/stateAttributesMapping.ts
971
+ var selectTriggerStateMapping = {
972
+ ...pressableTriggerOpenStateMapping,
973
+ ...fieldStateAttributesMapping,
974
+ popupSide: (value) => value ? { "data-popup-side": value } : null,
975
+ value: () => null
976
+ };
977
+ var selectPositionerStateMapping = { ...popupStateMapping };
978
+ var selectPopupStateMapping = { ...popupTransitionStateMapping };
979
+ //#endregion
980
+ //#region src/select/trigger/SelectTrigger.tsx
981
+ /** A button that opens the select popup. */
982
+ function SelectTrigger(props) {
983
+ const context = useSelectRootContext();
984
+ const labelable = useLabelableContext();
985
+ const internalProps = props;
986
+ const allProps = props;
987
+ const labelSource = Symbol("SelectTrigger");
988
+ const [element, setElement] = createSignal(null, { ownedWrite: true });
989
+ const id = createMemo(() => internalProps.id ?? context.id());
990
+ const nativeButton = createMemo(() => internalProps.nativeButton ?? true);
991
+ const disabled = createMemo(() => context.disabled() || (internalProps.disabled ?? false));
992
+ const open = createMemo(() => context.store.open());
993
+ const popupSide = createMemo(() => context.presence.mounted() && context.store.track().positionerElement ? context.store.popupSide() : null);
994
+ const state = createMemo(() => ({
995
+ ...context.field.state(),
996
+ open: open(),
997
+ disabled: disabled(),
998
+ readOnly: context.readOnly(),
999
+ popupSide: popupSide(),
1000
+ value: context.value(),
1001
+ placeholder: !context.hasSelectedValue()
1002
+ }));
1003
+ const classValue = createMemo(() => resolveClass(props.class, state()));
1004
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
1005
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), selectTriggerStateMapping));
1006
+ const ariaLabelledBy = createMemo(() => internalProps["aria-labelledby"] ?? labelable.labelId() ?? context.store.labelId());
1007
+ const ariaDescribedBy = createMemo(() => labelable.getAriaDescribedBy(internalProps["aria-describedby"]));
1008
+ const others = omit(allProps, "aria-describedby", "aria-labelledby", "as", "class", "disabled", "id", "nativeButton", "onBlur", "onClick", "onFocus", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "ref", "style");
1009
+ const click = createClickInteraction({
1010
+ context: context.store.context.floatingRoot,
1011
+ enabled: () => !disabled() && !context.readOnly(),
1012
+ event: () => "mousedown"
1013
+ });
1014
+ let pointerType = "";
1015
+ let mouseUpTimer;
1016
+ let removeMouseUp;
1017
+ createTriggerRegistration(() => context.store, id, element);
1018
+ function handlePointerDown(event) {
1019
+ pointerType = event.pointerType || "";
1020
+ click.onPointerDown(event);
1021
+ }
1022
+ function handleMouseDown(event) {
1023
+ if (!open()) {
1024
+ context.store.setOpenMethod(pointerType || (isIOS() ? "touch" : "mouse"));
1025
+ installReleaseListener(event.currentTarget);
1026
+ }
1027
+ click.onMouseDown(event);
1028
+ }
1029
+ function installReleaseListener(trigger) {
1030
+ clearTimeout(mouseUpTimer);
1031
+ removeMouseUp?.();
1032
+ mouseUpTimer = setTimeout(() => {
1033
+ const onMouseUp = (event) => {
1034
+ const target = event.target;
1035
+ const positioner = context.store.track().positionerElement;
1036
+ if (contains(trigger, target) || contains(positioner, target)) return;
1037
+ const rect = trigger.getBoundingClientRect();
1038
+ if (!(event.clientX >= rect.left - 5 && event.clientX <= rect.right + 5 && event.clientY >= rect.top - 5 && event.clientY <= rect.bottom + 5)) context.setOpen(false, createChangeEventDetails(cancelOpen, event));
1039
+ };
1040
+ trigger.ownerDocument.addEventListener("mouseup", onMouseUp, { once: true });
1041
+ removeMouseUp = () => trigger.ownerDocument.removeEventListener("mouseup", onMouseUp);
1042
+ });
1043
+ }
1044
+ function handleClick(event) {
1045
+ if (event.detail === 0) context.store.setOpenMethod("keyboard");
1046
+ click.onClick(event);
1047
+ }
1048
+ function handleFocus() {
1049
+ context.field.setFocused(true);
1050
+ if (open() && context.store.alignItemWithTrigger()) context.setOpen(false, createChangeEventDetails(none));
1051
+ queueMicrotask(() => context.store.setForceMount(true));
1052
+ }
1053
+ function handleBlur(event) {
1054
+ untrack(() => {
1055
+ if (contains(context.store.track().positionerElement, event.relatedTarget)) return;
1056
+ context.field.setTouched(true);
1057
+ context.field.setFocused(false);
1058
+ if (context.field.validationMode() === "onBlur") context.field.validation.commit(context.value());
1059
+ context.handleTypeaheadBlur(event);
1060
+ });
1061
+ }
1062
+ function handleKeyDown(event) {
1063
+ if (event.target !== event.currentTarget) return;
1064
+ pointerType = "keyboard";
1065
+ context.handleKeyDown(event);
1066
+ }
1067
+ const onBlur = composeEventHandlers(() => internalProps.onBlur, () => handleBlur);
1068
+ const onClick = composeEventHandlers(() => untrack(() => disabled() ? preventButtonInteraction : void 0), () => internalProps.onClick, () => handleClick);
1069
+ const onFocus = composeEventHandlers(() => internalProps.onFocus, () => handleFocus);
1070
+ const onKeyDown = composeEventHandlers(() => untrack(() => disabled() ? preventDisabledButtonKeyDown : void 0), () => internalProps.onKeyDown, () => handleKeyDown, () => untrack(() => nativeButton() ? void 0 : handleNonNativeButtonKeyDown));
1071
+ const onKeyUp = composeEventHandlers(() => untrack(() => disabled() ? stopButtonInteraction : void 0), () => internalProps.onKeyUp, () => untrack(() => nativeButton() ? void 0 : handleNonNativeButtonKeyUp));
1072
+ const onMouseDown = composeEventHandlers(() => untrack(() => disabled() ? stopButtonInteraction : void 0), () => internalProps.onMouseDown, () => handleMouseDown);
1073
+ const onPointerDown = composeEventHandlers(() => untrack(() => disabled() ? preventButtonInteraction : void 0), () => internalProps.onPointerDown, () => handlePointerDown);
1074
+ createEffect(() => ({
1075
+ id: id(),
1076
+ element: element()
1077
+ }), (current) => {
1078
+ context.setTriggerElement(current.element);
1079
+ labelable.registerControlId(labelSource, current.id);
1080
+ return () => {
1081
+ if (context.triggerElement() === current.element) context.setTriggerElement(null);
1082
+ };
1083
+ });
1084
+ onCleanup(() => {
1085
+ clearTimeout(mouseUpTimer);
1086
+ removeMouseUp?.();
1087
+ labelable.registerControlId(labelSource, void 0);
1088
+ });
1089
+ const trigger = Dynamic(mergeProps({
1090
+ get component() {
1091
+ return props.as ?? "button";
1092
+ },
1093
+ ref: [((value) => setElement(value)), internalProps.ref],
1094
+ get id() {
1095
+ return id();
1096
+ },
1097
+ get type() {
1098
+ return nativeButton() ? "button" : void 0;
1099
+ },
1100
+ role: "combobox",
1101
+ get tabindex() {
1102
+ return disabled() ? -1 : 0;
1103
+ },
1104
+ get disabled() {
1105
+ return nativeButton() && disabled() ? true : void 0;
1106
+ },
1107
+ get ["aria-disabled"]() {
1108
+ return !nativeButton() && disabled() ? "true" : void 0;
1109
+ },
1110
+ get ["aria-expanded"]() {
1111
+ return open() ? "true" : "false";
1112
+ },
1113
+ "aria-haspopup": "listbox",
1114
+ get ["aria-controls"]() {
1115
+ return memo(() => {
1116
+ return !!open();
1117
+ })() ? context.store.listElement()?.id || context.store.popupId() : void 0;
1118
+ },
1119
+ get ["aria-labelledby"]() {
1120
+ return ariaLabelledBy();
1121
+ },
1122
+ get ["aria-describedby"]() {
1123
+ return ariaDescribedBy();
1124
+ },
1125
+ get ["aria-readonly"]() {
1126
+ return context.readOnly() ? "true" : void 0;
1127
+ },
1128
+ get ["aria-required"]() {
1129
+ return context.required() ? "true" : void 0;
1130
+ },
1131
+ get ["aria-invalid"]() {
1132
+ return state().valid === false && !disabled() ? "true" : void 0;
1133
+ },
1134
+ "data-base-ui-click-trigger": "",
1135
+ get ["data-trigger-disabled"]() {
1136
+ return disabled() ? "" : void 0;
1137
+ },
1138
+ get ["class"]() {
1139
+ return classValue();
1140
+ },
1141
+ get style() {
1142
+ return styleValue();
1143
+ },
1144
+ onBlur,
1145
+ onClick,
1146
+ onFocus,
1147
+ onKeyDown,
1148
+ onKeyUp,
1149
+ onMouseDown,
1150
+ onPointerDown
1151
+ }, stateAttributes, others));
1152
+ return TriggerFocusGuards({
1153
+ get context() {
1154
+ return context.store.context.floatingRoot;
1155
+ },
1156
+ get enabled() {
1157
+ return context.presence.mounted();
1158
+ },
1159
+ trigger: element,
1160
+ positioner: () => context.store.track().positionerElement,
1161
+ get beforeContentGuard() {
1162
+ return context.beforeContentGuard;
1163
+ },
1164
+ get afterGuardRef() {
1165
+ return context.setAfterTriggerGuard;
1166
+ },
1167
+ children: trigger
1168
+ });
1169
+ }
1170
+ function isIOS() {
1171
+ if (typeof navigator === "undefined") return false;
1172
+ const platform = navigator.platform.toLowerCase();
1173
+ return /^i(os$|p)/.test(platform) || platform === "macintel" && navigator.maxTouchPoints > 1;
1174
+ }
1175
+ //#endregion
1176
+ //#region src/select/value/SelectValue.tsx
1177
+ /** Displays the selected value or a placeholder. */
1178
+ function SelectValue(props) {
1179
+ const context = useSelectRootContext();
1180
+ const internalProps = props;
1181
+ const allProps = props;
1182
+ const state = createMemo(() => ({
1183
+ value: context.value(),
1184
+ placeholder: !context.hasSelectedValue()
1185
+ }));
1186
+ const classValue = createMemo(() => resolveClass(props.class, state()));
1187
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
1188
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), { value: () => null }));
1189
+ const others = omit(allProps, "as", "children", "class", "placeholder", "ref", "style");
1190
+ const content = createMemo(() => {
1191
+ const child = props.children;
1192
+ if (typeof child === "function") return isSolidAccessor(child) ? untrack(() => child()) : child(context.value());
1193
+ if (child != null) return child;
1194
+ if (!context.hasSelectedValue() && props.placeholder != null && !hasNullItemLabel(context.items())) return props.placeholder;
1195
+ const current = context.value();
1196
+ if (Array.isArray(current)) return resolveMultipleLabels(current, context.items(), context.itemToStringLabel());
1197
+ return resolveSelectedLabel(current, context.items(), context.itemToStringLabel());
1198
+ });
1199
+ const ref = [((element) => context.setValueElement(element)), internalProps.ref];
1200
+ return Show({
1201
+ get when() {
1202
+ return props.as;
1203
+ },
1204
+ get fallback() {
1205
+ return ssrElement("span", () => {
1206
+ return mergeProps({
1207
+ get ["class"]() {
1208
+ return classValue();
1209
+ },
1210
+ get style() {
1211
+ return styleValue();
1212
+ }
1213
+ }, stateAttributes, others);
1214
+ }, () => {
1215
+ return scope(() => {
1216
+ return escape(content());
1217
+ });
1218
+ }, true);
1219
+ },
1220
+ children: (component) => Dynamic(mergeProps({
1221
+ get component() {
1222
+ return component();
1223
+ },
1224
+ ref,
1225
+ get ["class"]() {
1226
+ return classValue();
1227
+ },
1228
+ get style() {
1229
+ return styleValue();
1230
+ }
1231
+ }, stateAttributes, others, { get children() {
1232
+ return content();
1233
+ } }))
1234
+ });
1235
+ }
1236
+ //#endregion
1237
+ //#region src/select/icon/SelectIcon.tsx
1238
+ /** Displays a decorative select indicator. */
1239
+ function SelectIcon(props) {
1240
+ const context = useSelectRootContext();
1241
+ const internalProps = props;
1242
+ const allProps = props;
1243
+ const state = createMemo(() => ({ open: context.store.open() }));
1244
+ const classValue = createMemo(() => resolveClass(props.class, state()));
1245
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
1246
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), triggerOpenStateMapping));
1247
+ const others = omit(allProps, "as", "class", "ref", "style");
1248
+ return Show({
1249
+ get when() {
1250
+ return props.as;
1251
+ },
1252
+ get fallback() {
1253
+ return ssrElement("span", () => {
1254
+ return mergeProps({
1255
+ "aria-hidden": "true",
1256
+ get ["class"]() {
1257
+ return classValue();
1258
+ },
1259
+ get style() {
1260
+ return styleValue();
1261
+ }
1262
+ }, stateAttributes, others);
1263
+ }, () => {
1264
+ return () => {
1265
+ return escape(props.children ?? "▼");
1266
+ };
1267
+ }, true);
1268
+ },
1269
+ children: (component) => Dynamic(mergeProps({
1270
+ get component() {
1271
+ return component();
1272
+ },
1273
+ ref: [internalProps.ref],
1274
+ "aria-hidden": "true",
1275
+ get ["class"]() {
1276
+ return classValue();
1277
+ },
1278
+ get style() {
1279
+ return styleValue();
1280
+ }
1281
+ }, stateAttributes, others, { get children() {
1282
+ return props.children ?? "▼";
1283
+ } }))
1284
+ });
1285
+ }
1286
+ //#endregion
1287
+ //#region src/select/portal/SelectPortalContext.ts
1288
+ var MISSING_CONTEXT$3 = Symbol("SelectPortalContext");
1289
+ var SelectPortalContext = createContext(MISSING_CONTEXT$3);
1290
+ function useSelectPortalContext() {
1291
+ if (useContext(SelectPortalContext) === MISSING_CONTEXT$3) throw new Error("Base UI: SelectPositioner must be placed within <Select.Portal>.");
1292
+ }
1293
+ //#endregion
1294
+ //#region src/select/portal/SelectPortal.tsx
1295
+ /** Moves the select layer into a portal appended to the document body by default. */
1296
+ function SelectPortal(props) {
1297
+ const context = useSelectRootContext();
1298
+ const internalProps = props;
1299
+ const allProps = props;
1300
+ const shouldRender = createMemo(() => context.presence.mounted() || context.store.forceMount());
1301
+ const state = {};
1302
+ const classValue = createMemo(() => resolveClass(props.class, state));
1303
+ const styleValue = createMemo(() => resolveStyle(props.style, state));
1304
+ const others = omit(allProps, "as", "class", "container", "ref", "style");
1305
+ return Show({
1306
+ get when() {
1307
+ return shouldRender();
1308
+ },
1309
+ get children() {
1310
+ return SelectPortalContext({
1311
+ value: true,
1312
+ get children() {
1313
+ return PopupPortal(mergeProps({
1314
+ get as() {
1315
+ return props.as;
1316
+ },
1317
+ get container() {
1318
+ return internalProps.container;
1319
+ },
1320
+ ref: (element) => setRef(internalProps.ref, element),
1321
+ get ["class"]() {
1322
+ return classValue();
1323
+ },
1324
+ get style() {
1325
+ return styleValue();
1326
+ }
1327
+ }, others, { get children() {
1328
+ return props.children;
1329
+ } }));
1330
+ }
1331
+ });
1332
+ }
1333
+ });
1334
+ }
1335
+ //#endregion
1336
+ //#region src/select/backdrop/SelectBackdrop.tsx
1337
+ /** A presentational overlay displayed beneath the select popup. */
1338
+ function SelectBackdrop(props) {
1339
+ const context = useSelectRootContext();
1340
+ const internalProps = props;
1341
+ const allProps = props;
1342
+ const state = createMemo(() => ({
1343
+ open: context.store.open(),
1344
+ transitionStatus: context.store.track().transitionStatus
1345
+ }));
1346
+ const classValue = createMemo(() => resolveClass(props.class, state()));
1347
+ const styleValue = createMemo(() => mergeStyleValue({
1348
+ "user-select": "none",
1349
+ "-webkit-user-select": "none"
1350
+ }, resolveStyle(props.style, state())));
1351
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), popupTransitionStateMapping));
1352
+ const others = omit(allProps, "as", "class", "ref", "style");
1353
+ let backdrop = null;
1354
+ onCleanup(() => {
1355
+ if (context.backdropElement() === backdrop) context.setBackdropElement(null);
1356
+ });
1357
+ return Dynamic(mergeProps({
1358
+ get component() {
1359
+ return props.as ?? "div";
1360
+ },
1361
+ ref: [((element) => {
1362
+ backdrop = element;
1363
+ context.setBackdropElement(element);
1364
+ }), internalProps.ref],
1365
+ role: "presentation",
1366
+ get hidden() {
1367
+ return !context.presence.mounted();
1368
+ },
1369
+ get ["class"]() {
1370
+ return classValue();
1371
+ },
1372
+ get style() {
1373
+ return styleValue();
1374
+ }
1375
+ }, stateAttributes, others));
1376
+ }
1377
+ //#endregion
1378
+ //#region src/select/positioner/SelectPositionerContext.ts
1379
+ var MISSING_CONTEXT$2 = Symbol("SelectPositionerContext");
1380
+ var SelectPositionerContext = createContext(MISSING_CONTEXT$2);
1381
+ function useSelectPositionerContext() {
1382
+ const context = useContext(SelectPositionerContext);
1383
+ if (context === MISSING_CONTEXT$2) throw new Error("Base UI: SelectPositionerContext is missing. Select popup parts must be placed within <Select.Positioner>.");
1384
+ return context;
1385
+ }
1386
+ //#endregion
1387
+ //#region src/select/positioner/SelectPositioner.tsx
1388
+ /** Positions the select popup against its trigger or a custom anchor. */
1389
+ function SelectPositioner(props) {
1390
+ useSelectPortalContext();
1391
+ const context = useSelectRootContext();
1392
+ const direction = useDirection();
1393
+ const internalProps = props;
1394
+ const allProps = props;
1395
+ const [element, setElement] = createSignal(null, { ownedWrite: true });
1396
+ const [controlledAlign, setControlledAlign] = createSignal(untrack(() => internalProps.alignItemWithTrigger ?? true));
1397
+ const [scrollUpArrow, setScrollUpArrow] = createSignal(null, { ownedWrite: true });
1398
+ const [scrollDownArrow, setScrollDownArrow] = createSignal(null, { ownedWrite: true });
1399
+ const reference = createMemo(() => resolveAnchor(internalProps.anchor) ?? context.store.context.floatingRoot.referenceElement());
1400
+ const alignItemWithTriggerActive = createMemo(() => context.presence.mounted() && controlledAlign() && context.store.openMethod() !== "touch");
1401
+ const positioning = createAnchorPositioning({
1402
+ reference,
1403
+ floating: element,
1404
+ mounted: context.presence.mounted,
1405
+ direction,
1406
+ positionMethod: () => internalProps.positionMethod ?? "absolute",
1407
+ side: () => internalProps.side ?? "bottom",
1408
+ sideOffset: () => internalProps.sideOffset ?? 0,
1409
+ align: () => internalProps.align ?? "center",
1410
+ alignOffset: () => internalProps.alignOffset ?? 0,
1411
+ collisionBoundary: () => internalProps.collisionBoundary ?? "clipping-ancestors",
1412
+ collisionPadding: () => internalProps.collisionPadding ?? 5,
1413
+ arrowPadding: () => internalProps.arrowPadding ?? 5,
1414
+ sticky: () => internalProps.sticky ?? false,
1415
+ disableAnchorTracking: () => internalProps.disableAnchorTracking ?? alignItemWithTriggerActive(),
1416
+ collisionAvoidance: () => internalProps.collisionAvoidance ?? {
1417
+ side: "flip",
1418
+ align: "flip",
1419
+ fallbackAxisSide: "none"
1420
+ }
1421
+ });
1422
+ const renderedSide = createMemo(() => alignItemWithTriggerActive() ? "none" : positioning.renderedSide());
1423
+ const state = createMemo(() => ({
1424
+ open: context.store.open(),
1425
+ side: renderedSide(),
1426
+ align: positioning.renderedAlign(),
1427
+ anchorHidden: positioning.anchorHidden()
1428
+ }));
1429
+ const classValue = createMemo(() => resolveClass(props.class, state()));
1430
+ const styleValue = createMemo(() => mergeStyleValue({
1431
+ ...positioning.styles(),
1432
+ position: alignItemWithTriggerActive() ? "fixed" : positioning.styles().position,
1433
+ "pointer-events": context.store.open() ? void 0 : "none",
1434
+ transition: context.store.track().transitionStatus === "starting" ? "none" : void 0
1435
+ }, resolveStyle(props.style, state())));
1436
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), selectPositionerStateMapping));
1437
+ const others = omit(allProps, "align", "alignItemWithTrigger", "alignOffset", "anchor", "arrowPadding", "as", "class", "collisionAvoidance", "collisionBoundary", "collisionPadding", "disableAnchorTracking", "positionMethod", "ref", "side", "sideOffset", "sticky", "style");
1438
+ let previousSize = 0;
1439
+ createAnchoredPopupScrollLock({
1440
+ enabled: () => context.store.open() && (alignItemWithTriggerActive() || context.modal()),
1441
+ touchOpen: () => context.store.openMethod() === "touch",
1442
+ positioner: element,
1443
+ reference: context.triggerElement
1444
+ });
1445
+ createEffect(() => ({
1446
+ mounted: context.presence.mounted(),
1447
+ requested: internalProps.alignItemWithTrigger
1448
+ }), (current) => {
1449
+ if (!current.mounted) setControlledAlign(current.requested ?? true);
1450
+ });
1451
+ createEffect(alignItemWithTriggerActive, (active) => context.store.setAlignItemWithTrigger(active));
1452
+ createEffect(positioning.renderedSide, (side) => context.store.setPopupSide(side));
1453
+ createEffect(() => ({
1454
+ size: context.store.collection.items().length,
1455
+ values: context.store.collection.values()
1456
+ }), ({ size, values }) => {
1457
+ const oldSize = previousSize;
1458
+ previousSize = size;
1459
+ if (oldSize === 0 || size === oldSize || values.length === 0) return;
1460
+ untrack(() => {
1461
+ const current = context.value();
1462
+ if (context.multiple()) {
1463
+ if (!Array.isArray(current)) return;
1464
+ const next = current.filter((selected) => findItemIndex(values, selected, context.comparator()) !== -1);
1465
+ if (next.length !== current.length) {
1466
+ context.setValue(next, createChangeEventDetails(none));
1467
+ if (next.length === 0) context.setSelectedItemText(null);
1468
+ }
1469
+ } else if (current !== null && findItemIndex(values, current, context.comparator()) === -1) {
1470
+ const initial = context.initialValue;
1471
+ const next = initial != null && !Array.isArray(initial) && findItemIndex(values, initial, context.comparator()) !== -1 ? initial : null;
1472
+ context.setValue(next, createChangeEventDetails(none));
1473
+ if (next === null) context.setSelectedItemText(null);
1474
+ }
1475
+ if (context.store.open() && alignItemWithTriggerActive()) {
1476
+ context.store.setScrollUpVisible(false);
1477
+ context.store.setScrollDownVisible(false);
1478
+ element()?.style.removeProperty("height");
1479
+ context.store.track().popupElement?.style.removeProperty("height");
1480
+ }
1481
+ });
1482
+ });
1483
+ onCleanup(() => {
1484
+ context.store.setAlignItemWithTrigger(false);
1485
+ if (context.store.state.positionerElement === untrack(element)) context.store.setPositionerElement(null);
1486
+ });
1487
+ const positionerContext = {
1488
+ ...positioning,
1489
+ side: renderedSide,
1490
+ align: positioning.renderedAlign,
1491
+ alignItemWithTriggerActive,
1492
+ setControlledAlignItemWithTrigger: setControlledAlign,
1493
+ scrollUpArrow,
1494
+ setScrollUpArrow,
1495
+ scrollDownArrow,
1496
+ setScrollDownArrow
1497
+ };
1498
+ function ModalBackdrop() {
1499
+ let backdrop = null;
1500
+ onCleanup(() => {
1501
+ if (context.internalBackdropElement() === backdrop) context.setInternalBackdropElement(null);
1502
+ });
1503
+ return InternalBackdrop({
1504
+ ref: (element) => {
1505
+ backdrop = element;
1506
+ context.setInternalBackdropElement(element);
1507
+ },
1508
+ get cutout() {
1509
+ return context.triggerElement();
1510
+ },
1511
+ get open() {
1512
+ return context.store.open();
1513
+ }
1514
+ });
1515
+ }
1516
+ return SelectPositionerContext({
1517
+ value: positionerContext,
1518
+ get children() {
1519
+ return [Show({
1520
+ get when() {
1521
+ return memo(() => {
1522
+ return !!context.presence.mounted();
1523
+ })() ? context.modal() : context.presence.mounted();
1524
+ },
1525
+ get children() {
1526
+ return ModalBackdrop({});
1527
+ }
1528
+ }), Dynamic(mergeProps({
1529
+ get component() {
1530
+ return props.as ?? "div";
1531
+ },
1532
+ ref: [((value) => {
1533
+ setElement(value);
1534
+ context.store.setPositionerElement(value);
1535
+ }), internalProps.ref],
1536
+ role: "presentation",
1537
+ get hidden() {
1538
+ return !context.presence.mounted();
1539
+ },
1540
+ get inert() {
1541
+ return !context.store.open() || void 0;
1542
+ },
1543
+ get ["class"]() {
1544
+ return classValue();
1545
+ },
1546
+ get style() {
1547
+ return styleValue();
1548
+ }
1549
+ }, stateAttributes, others))];
1550
+ }
1551
+ });
1552
+ }
1553
+ function resolveAnchor(anchor) {
1554
+ if (typeof anchor === "function") return anchor();
1555
+ if (anchor && "current" in anchor) return anchor.current;
1556
+ return anchor;
1557
+ }
1558
+ //#endregion
1559
+ //#region src/select/popup/SelectPopup.tsx
1560
+ var COMPOSITE_KEYS = /* @__PURE__ */ new Set([
1561
+ "ArrowUp",
1562
+ "ArrowDown",
1563
+ "ArrowLeft",
1564
+ "ArrowRight",
1565
+ "Home",
1566
+ "End"
1567
+ ]);
1568
+ var SELECT_LIST_FUNCTIONAL_STYLES = {
1569
+ position: "relative",
1570
+ "max-height": "100%",
1571
+ "overflow-x": "hidden",
1572
+ "overflow-y": "auto"
1573
+ };
1574
+ /** A container for the select list. */
1575
+ function SelectPopup(props) {
1576
+ const context = useSelectRootContext();
1577
+ const positioner = useSelectPositionerContext();
1578
+ const insideToolbar = useToolbarRootContext(true) !== void 0;
1579
+ const direction = useDirection();
1580
+ const internalProps = props;
1581
+ const allProps = props;
1582
+ const state = createMemo(() => ({
1583
+ side: positioner.side(),
1584
+ align: positioner.align(),
1585
+ open: context.store.open(),
1586
+ transitionStatus: context.store.track().transitionStatus
1587
+ }));
1588
+ const classValue = createMemo(() => resolveClass(props.class, state()));
1589
+ const styleValue = createMemo(() => mergeStyleValue({
1590
+ ...positioner.alignItemWithTriggerActive() ? context.store.listElement() ? { height: "100%" } : {
1591
+ ...SELECT_LIST_FUNCTIONAL_STYLES,
1592
+ "scrollbar-width": context.store.openMethod() === "touch" ? void 0 : "none"
1593
+ } : {},
1594
+ transition: state().transitionStatus === "starting" ? "none" : void 0
1595
+ }, resolveStyle(props.style, state())));
1596
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), selectPopupStateMapping));
1597
+ const id = createMemo(() => internalProps.id ?? `${context.id()}-list`);
1598
+ const others = omit(allProps, "as", "class", "finalFocus", "id", "onBlur", "onKeyDown", "onScroll", "ref", "style");
1599
+ let popupElement = null;
1600
+ let initialPlaced = false;
1601
+ let reachedMaxHeight = false;
1602
+ let originalPositionerStyles;
1603
+ let originalPopupStyles;
1604
+ function setArrowVisibility(scroller) {
1605
+ const maximum = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);
1606
+ const offset = normalizeScrollOffset(scroller.scrollTop, maximum);
1607
+ if (offset !== scroller.scrollTop) scroller.scrollTop = offset;
1608
+ context.store.setScrollUpVisible(offset > 0);
1609
+ context.store.setScrollDownVisible(offset < maximum);
1610
+ }
1611
+ function handleScroll(scroller) {
1612
+ const positionerElement = context.store.track().positionerElement;
1613
+ if (!positionerElement || !popupElement || !initialPlaced) return;
1614
+ const topAnchored = positionerElement.style.top === "0px";
1615
+ const bottomAnchored = positionerElement.style.bottom === "0px";
1616
+ if (reachedMaxHeight || !positioner.alignItemWithTriggerActive() || !topAnchored && !bottomAnchored) {
1617
+ setArrowVisibility(scroller);
1618
+ return;
1619
+ }
1620
+ const scale = getScale(positionerElement);
1621
+ const currentHeight = positionerElement.getBoundingClientRect().height / scale.y;
1622
+ const styles = ownerWindow(positionerElement).getComputedStyle(positionerElement);
1623
+ const marginTop = parseFloat(styles.marginTop) || 0;
1624
+ const marginBottom = parseFloat(styles.marginBottom) || 0;
1625
+ const maximumHeight = Math.min(ownerDocument(positionerElement).documentElement.clientHeight - marginTop - marginBottom, getMaxPopupHeight(ownerWindow(popupElement).getComputedStyle(popupElement)));
1626
+ const scrollTop = scroller.scrollTop;
1627
+ const maximumScroll = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);
1628
+ const difference = topAnchored ? maximumScroll - scrollTop : scrollTop;
1629
+ const nextHeight = Math.min(currentHeight + difference, maximumHeight);
1630
+ let nextScrollTop = null;
1631
+ if (difference <= 1) {
1632
+ const delta = clamp(difference, 0, maximumHeight - currentHeight);
1633
+ if (delta > 0) positionerElement.style.height = `${currentHeight + delta}px`;
1634
+ scroller.scrollTop = topAnchored ? maximumScroll : 0;
1635
+ reachedMaxHeight = maximumHeight - (currentHeight + delta) <= 1;
1636
+ setArrowVisibility(scroller);
1637
+ return;
1638
+ }
1639
+ const roundedHeight = Math.ceil(nextHeight);
1640
+ if (roundedHeight > 0) positionerElement.style.height = `${roundedHeight}px`;
1641
+ if (maximumHeight - nextHeight > 1) nextScrollTop = topAnchored ? Infinity : 0;
1642
+ else if (bottomAnchored && scrollTop < maximumScroll) nextScrollTop = scrollTop - (difference - (currentHeight + difference - maximumHeight));
1643
+ if (nextScrollTop !== null) {
1644
+ const target = clamp(nextScrollTop, 0, getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight));
1645
+ if (Math.abs(scroller.scrollTop - target) > 1) scroller.scrollTop = target;
1646
+ }
1647
+ reachedMaxHeight = roundedHeight >= maximumHeight - 1;
1648
+ setArrowVisibility(scroller);
1649
+ }
1650
+ const onBlur = composeEventHandlers(() => internalProps.onBlur, () => context.handleTypeaheadBlur);
1651
+ const onKeyDown = composeEventHandlers(() => internalProps.onKeyDown, () => (event) => {
1652
+ const handler = context.store.state.popupProps.onKeyDown;
1653
+ if (typeof handler === "function") Reflect.apply(handler, event.currentTarget, [event]);
1654
+ }, () => (event) => {
1655
+ if (insideToolbar && COMPOSITE_KEYS.has(event.key)) event.stopPropagation();
1656
+ });
1657
+ const onScroll = composeEventHandlers(() => internalProps.onScroll, () => (event) => {
1658
+ if (!context.store.listElement()) handleScroll(event.currentTarget);
1659
+ });
1660
+ createEffect(() => id(), (currentId) => context.store.setPopupId(currentId));
1661
+ createEffect(() => ({
1662
+ open: context.store.open(),
1663
+ positioned: positioner.state().isPositioned,
1664
+ active: positioner.alignItemWithTriggerActive(),
1665
+ trigger: context.triggerElement(),
1666
+ positioner: context.store.track().positionerElement,
1667
+ popup: popupElement,
1668
+ list: context.store.listElement(),
1669
+ selectedText: context.selectedItemText(),
1670
+ firstText: context.firstItemText(),
1671
+ valueElement: context.valueElement(),
1672
+ transitionStatus: context.store.track().transitionStatus,
1673
+ hasSelectedValue: context.hasSelectedValue(),
1674
+ direction: direction()
1675
+ }), (current) => {
1676
+ if (!current.open || !current.trigger || !current.positioner || !current.popup || current.active && !current.positioned || current.transitionStatus === "ending") return;
1677
+ initialPlaced = true;
1678
+ current.popup.style.removeProperty("--transform-origin");
1679
+ const scroller = current.list ?? current.popup;
1680
+ if (!current.active) {
1681
+ requestAnimationFrame(() => setArrowVisibility(scroller));
1682
+ return;
1683
+ }
1684
+ applyItemAlignment({
1685
+ trigger: current.trigger,
1686
+ positioner: current.positioner,
1687
+ popup: current.popup,
1688
+ scroller,
1689
+ text: current.selectedText?.isConnected ? current.selectedText : !current.hasSelectedValue && current.firstText?.isConnected ? current.firstText : null,
1690
+ valueElement: current.valueElement,
1691
+ direction: current.direction
1692
+ });
1693
+ });
1694
+ createEffect(() => ({
1695
+ open: context.store.open(),
1696
+ active: positioner.alignItemWithTriggerActive(),
1697
+ positionerElement: context.store.track().positionerElement
1698
+ }), (current) => {
1699
+ if (!current.open && !current.active) {
1700
+ initialPlaced = false;
1701
+ reachedMaxHeight = false;
1702
+ restoreItemAlignment(current.positionerElement);
1703
+ }
1704
+ });
1705
+ createEffect(() => ({
1706
+ open: context.store.open(),
1707
+ active: positioner.alignItemWithTriggerActive(),
1708
+ positioner: context.store.track().positionerElement
1709
+ }), (current) => {
1710
+ if (!current.open || !current.active || !current.positioner) return;
1711
+ const windowNode = ownerWindow(current.positioner);
1712
+ const resize = (event) => context.setOpen(false, createChangeEventDetails(windowResize, event));
1713
+ windowNode.addEventListener("resize", resize);
1714
+ return () => windowNode.removeEventListener("resize", resize);
1715
+ });
1716
+ createEffect(() => context.store.track().popupElement, (element) => {
1717
+ if (!element || typeof MutationObserver === "undefined") return;
1718
+ const observer = new MutationObserver(() => context.store.collection.touch());
1719
+ observer.observe(element, {
1720
+ childList: true,
1721
+ subtree: true,
1722
+ characterData: true
1723
+ });
1724
+ return () => observer.disconnect();
1725
+ });
1726
+ context.scrollHandler.current = handleScroll;
1727
+ onCleanup(() => {
1728
+ untrack(() => {
1729
+ restoreItemAlignment(context.store.track().positionerElement);
1730
+ if (context.scrollHandler.current === handleScroll) context.scrollHandler.current = null;
1731
+ if (context.store.state.popupElement === popupElement) context.store.setPopupElement(null);
1732
+ });
1733
+ });
1734
+ function applyItemAlignment(options) {
1735
+ const { trigger, positioner: positionerElement, popup, scroller, text, valueElement: valueNode } = options;
1736
+ snapshotStyles(positionerElement, popup);
1737
+ const restoreTransforms = unsetTransformStyles(popup);
1738
+ try {
1739
+ positionerElement.style.transform = "none";
1740
+ positionerElement.style.right = "";
1741
+ const scale = getScale(trigger);
1742
+ const triggerRect = normalizeRect(trigger.getBoundingClientRect(), scale);
1743
+ const positionerRect = normalizeRect(positionerElement.getBoundingClientRect(), scale);
1744
+ const popupStyles = ownerWindow(popup).getComputedStyle(popup);
1745
+ const positionerStyles = ownerWindow(positionerElement).getComputedStyle(positionerElement);
1746
+ const documentNode = ownerDocument(trigger);
1747
+ const marginTop = parseFloat(positionerStyles.marginTop) || 10;
1748
+ const marginBottom = parseFloat(positionerStyles.marginBottom) || 10;
1749
+ const minimumHeight = parseFloat(positionerStyles.minHeight) || 100;
1750
+ const viewportHeight = documentNode.documentElement.clientHeight - marginTop - marginBottom;
1751
+ const viewportWidth = documentNode.documentElement.clientWidth;
1752
+ const availableBelow = viewportHeight - triggerRect.bottom + triggerRect.height;
1753
+ let alignedLeft = options.direction === "rtl" ? triggerRect.right - positionerRect.width : triggerRect.left;
1754
+ let offsetY = 0;
1755
+ let textRect;
1756
+ if (text && valueNode) {
1757
+ textRect = normalizeRect(text.getBoundingClientRect(), scale);
1758
+ const valueRect = normalizeRect(valueNode.getBoundingClientRect(), scale);
1759
+ alignedLeft = positionerRect.left + (options.direction === "rtl" ? valueRect.right - textRect.right : valueRect.left - textRect.left);
1760
+ offsetY = textRect.top - positionerRect.top + textRect.height / 2 - (valueRect.top - triggerRect.top + valueRect.height / 2);
1761
+ }
1762
+ const idealHeight = availableBelow + offsetY + marginBottom + (parseFloat(popupStyles.borderBottomWidth) || 0);
1763
+ let height = Math.min(viewportHeight, idealHeight);
1764
+ const initialScrollTop = idealHeight - height;
1765
+ positionerElement.style.left = `${clamp(alignedLeft, 5, viewportWidth - 5 - positionerRect.width)}px`;
1766
+ if (text && valueNode) {
1767
+ const nextTextRect = normalizeRect(text.getBoundingClientRect(), scale);
1768
+ const nextValueRect = normalizeRect(valueNode.getBoundingClientRect(), scale);
1769
+ const correction = options.direction === "rtl" ? nextValueRect.right - nextTextRect.right : nextValueRect.left - nextTextRect.left;
1770
+ const positionedLeft = parseFloat(positionerElement.style.left) || 0;
1771
+ positionerElement.style.left = `${clamp(positionedLeft + correction, 5, viewportWidth - 5 - positionerRect.width)}px`;
1772
+ requestAnimationFrame(() => {
1773
+ if (!text.isConnected || !valueNode.isConnected || !positionerElement.isConnected) return;
1774
+ const finalTextRect = text.getBoundingClientRect();
1775
+ const finalValueRect = valueNode.getBoundingClientRect();
1776
+ const finalCorrection = options.direction === "rtl" ? finalValueRect.right - finalTextRect.right : finalValueRect.left - finalTextRect.left;
1777
+ const finalLeft = parseFloat(positionerElement.style.left) || 0;
1778
+ positionerElement.style.left = `${clamp(finalLeft + finalCorrection, 5, viewportWidth - 5 - positionerRect.width)}px`;
1779
+ });
1780
+ }
1781
+ positionerElement.style.height = `${height}px`;
1782
+ positionerElement.style.maxHeight = "none";
1783
+ positionerElement.style.marginTop = `${marginTop}px`;
1784
+ positionerElement.style.marginBottom = `${marginBottom}px`;
1785
+ popup.style.height = "100%";
1786
+ const maximumScroll = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);
1787
+ const topPositioned = initialScrollTop >= maximumScroll - 1;
1788
+ if (topPositioned) height = Math.min(viewportHeight, positionerRect.height) - (initialScrollTop - maximumScroll);
1789
+ if (triggerRect.top < 20 || triggerRect.bottom > viewportHeight - 20 || Math.ceil(height) + 1 < Math.min(scroller.scrollHeight, minimumHeight) || (ownerWindow(positionerElement).visualViewport?.scale ?? 1) !== 1 && isWebKit()) {
1790
+ restoreItemAlignment(positionerElement);
1791
+ positioner.setControlledAlignItemWithTrigger(false);
1792
+ return;
1793
+ }
1794
+ if (topPositioned) {
1795
+ const topOffset = Math.max(0, viewportHeight - idealHeight);
1796
+ positionerElement.style.top = positionerRect.height >= viewportHeight ? "0px" : `${topOffset}px`;
1797
+ positionerElement.style.bottom = "";
1798
+ positionerElement.style.height = `${height}px`;
1799
+ scroller.scrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);
1800
+ } else {
1801
+ positionerElement.style.top = "";
1802
+ positionerElement.style.bottom = "0px";
1803
+ scroller.scrollTop = initialScrollTop;
1804
+ }
1805
+ if (textRect) {
1806
+ const center = positionerRect.height > 0 ? clamp((textRect.top + textRect.height / 2 - positionerRect.top) / positionerRect.height * 100, 0, 100) : 50;
1807
+ popup.style.setProperty("--transform-origin", `50% ${center}%`);
1808
+ }
1809
+ reachedMaxHeight = height >= getMaxPopupHeight(popupStyles) || height >= viewportHeight;
1810
+ setArrowVisibility(scroller);
1811
+ } finally {
1812
+ restoreTransforms();
1813
+ }
1814
+ }
1815
+ function snapshotStyles(positionerElement, popup) {
1816
+ originalPositionerStyles ??= captureStyles(positionerElement, [
1817
+ "top",
1818
+ "left",
1819
+ "right",
1820
+ "bottom",
1821
+ "height",
1822
+ "min-height",
1823
+ "max-height",
1824
+ "margin-top",
1825
+ "margin-bottom",
1826
+ "transform"
1827
+ ]);
1828
+ originalPopupStyles ??= captureStyles(popup, ["height", "--transform-origin"]);
1829
+ }
1830
+ function restoreItemAlignment(positionerElement) {
1831
+ if (positionerElement && originalPositionerStyles) restoreStyles(positionerElement, originalPositionerStyles);
1832
+ if (popupElement && originalPopupStyles) restoreStyles(popupElement, originalPopupStyles);
1833
+ originalPositionerStyles = void 0;
1834
+ originalPopupStyles = void 0;
1835
+ }
1836
+ function PopupElement() {
1837
+ const list = () => context.store.listElement();
1838
+ return Dynamic(mergeProps({
1839
+ get component() {
1840
+ return props.as ?? "div";
1841
+ },
1842
+ ref: [((element) => {
1843
+ popupElement = element;
1844
+ context.store.setPopupElement(element);
1845
+ }), internalProps.ref],
1846
+ get id() {
1847
+ return memo(() => {
1848
+ return !!list();
1849
+ })() ? internalProps.id : id();
1850
+ },
1851
+ get role() {
1852
+ return list() ? "presentation" : "listbox";
1853
+ },
1854
+ tabindex: -1,
1855
+ "data-base-ui-focusable": "",
1856
+ get ["data-rootownerid"]() {
1857
+ return context.node.id;
1858
+ },
1859
+ get ["aria-orientation"]() {
1860
+ return list() ? void 0 : "vertical";
1861
+ },
1862
+ get ["aria-multiselectable"]() {
1863
+ return !list() && context.multiple() ? "true" : void 0;
1864
+ },
1865
+ get ["class"]() {
1866
+ return classValue();
1867
+ },
1868
+ get style() {
1869
+ return styleValue();
1870
+ },
1871
+ onBlur,
1872
+ onKeyDown,
1873
+ onScroll
1874
+ }, stateAttributes, others));
1875
+ }
1876
+ return FocusManager({
1877
+ get context() {
1878
+ return context.store.context.floatingRoot;
1879
+ },
1880
+ get tree() {
1881
+ return context.tree;
1882
+ },
1883
+ get disabled() {
1884
+ return !context.presence.mounted();
1885
+ },
1886
+ initialFocus: () => untrack(() => context.store.activeElement()) ?? true,
1887
+ get returnFocus() {
1888
+ return internalProps.finalFocus ?? true;
1889
+ },
1890
+ restoreFocus: true,
1891
+ modal: false,
1892
+ get openInteractionType() {
1893
+ return context.store.openMethod();
1894
+ },
1895
+ get previousFocusableElement() {
1896
+ return context.triggerElement;
1897
+ },
1898
+ get beforeContentGuardRef() {
1899
+ return context.setBeforeContentGuard;
1900
+ },
1901
+ get children() {
1902
+ return PopupElement({});
1903
+ }
1904
+ });
1905
+ }
1906
+ function getScale(element) {
1907
+ const rect = element.getBoundingClientRect();
1908
+ return {
1909
+ x: element.offsetWidth ? rect.width / element.offsetWidth : 1,
1910
+ y: element.offsetHeight ? rect.height / element.offsetHeight : 1
1911
+ };
1912
+ }
1913
+ function normalizeRect(rect, scale) {
1914
+ const x = rect.x / scale.x;
1915
+ const y = rect.y / scale.y;
1916
+ const width = rect.width / scale.x;
1917
+ const height = rect.height / scale.y;
1918
+ return {
1919
+ x,
1920
+ y,
1921
+ top: y,
1922
+ left: x,
1923
+ right: x + width,
1924
+ bottom: y + height,
1925
+ width,
1926
+ height
1927
+ };
1928
+ }
1929
+ function getMaxPopupHeight(styles) {
1930
+ return styles.maxHeight.endsWith("px") ? parseFloat(styles.maxHeight) || Infinity : Infinity;
1931
+ }
1932
+ function clamp(value, minimum, maximum) {
1933
+ return Math.max(minimum, Math.min(maximum, value));
1934
+ }
1935
+ function captureStyles(element, properties) {
1936
+ return Object.fromEntries(properties.map((property) => [property, element.style.getPropertyValue(property)]));
1937
+ }
1938
+ function restoreStyles(element, styles) {
1939
+ for (const [property, value] of Object.entries(styles)) if (value) element.style.setProperty(property, value);
1940
+ else element.style.removeProperty(property);
1941
+ }
1942
+ function unsetTransformStyles(element) {
1943
+ const original = captureStyles(element, [
1944
+ "transform",
1945
+ "scale",
1946
+ "translate"
1947
+ ]);
1948
+ element.style.setProperty("transform", "none", "important");
1949
+ element.style.setProperty("scale", "1", "important");
1950
+ element.style.setProperty("translate", "0 0", "important");
1951
+ return () => restoreStyles(element, original);
1952
+ }
1953
+ function isWebKit() {
1954
+ return typeof navigator !== "undefined" && /AppleWebKit/.test(navigator.userAgent) && !/Chrome|Chromium/.test(navigator.userAgent);
1955
+ }
1956
+ //#endregion
1957
+ //#region src/select/list/SelectList.tsx
1958
+ /** A scrolling container for select items. */
1959
+ function SelectList(props) {
1960
+ const context = useSelectRootContext();
1961
+ const positioner = useSelectPositionerContext();
1962
+ const internalProps = props;
1963
+ const allProps = props;
1964
+ const state = {};
1965
+ const classValue = createMemo(() => resolveClass(props.class, state));
1966
+ const styleValue = createMemo(() => mergeStyleValue({
1967
+ ...positioner.alignItemWithTriggerActive() ? SELECT_LIST_FUNCTIONAL_STYLES : {},
1968
+ "scrollbar-width": context.store.hasScrollArrows() && context.store.openMethod() !== "touch" ? "none" : void 0
1969
+ }, resolveStyle(props.style, state)));
1970
+ const others = omit(allProps, "as", "class", "id", "onScroll", "ref", "style");
1971
+ const onScroll = composeEventHandlers(() => internalProps.onScroll, () => (event) => context.handleScroll(event.currentTarget));
1972
+ let listElement = null;
1973
+ onCleanup(() => {
1974
+ if (context.store.listElement() === listElement) context.store.setListElement(null);
1975
+ });
1976
+ return Dynamic(mergeProps({
1977
+ get component() {
1978
+ return props.as ?? "div";
1979
+ },
1980
+ ref: [((element) => {
1981
+ listElement = element;
1982
+ context.store.setListElement(element);
1983
+ }), internalProps.ref],
1984
+ get id() {
1985
+ return internalProps.id ?? `${context.id()}-list`;
1986
+ },
1987
+ role: "listbox",
1988
+ get ["aria-multiselectable"]() {
1989
+ return context.multiple() ? "true" : void 0;
1990
+ },
1991
+ get ["class"]() {
1992
+ return classValue();
1993
+ },
1994
+ get style() {
1995
+ return styleValue();
1996
+ },
1997
+ onScroll
1998
+ }, others));
1999
+ }
2000
+ //#endregion
2001
+ //#region src/select/item/SelectItemContext.ts
2002
+ var MISSING_CONTEXT$1 = Symbol("SelectItemContext");
2003
+ var SelectItemContext = createContext(MISSING_CONTEXT$1);
2004
+ function useSelectItemContext() {
2005
+ const context = useContext(SelectItemContext);
2006
+ if (context === MISSING_CONTEXT$1) throw new Error("Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>.");
2007
+ return context;
2008
+ }
2009
+ //#endregion
2010
+ //#region src/select/item/SelectItem.tsx
2011
+ /** An individual option in the select popup. */
2012
+ function SelectItem(props) {
2013
+ const context = useSelectRootContext();
2014
+ const internalProps = props;
2015
+ const allProps = props;
2016
+ const token = Symbol("SelectItem");
2017
+ const itemValue = createMemo(() => internalProps.value ?? null);
2018
+ const disabled = createMemo(() => context.disabled() || (internalProps.disabled ?? false));
2019
+ const nativeButton = createMemo(() => internalProps.nativeButton ?? false);
2020
+ const [element, setElement] = createSignal(null, { ownedWrite: true });
2021
+ const [textElement, setTextElement] = createSignal(null, { ownedWrite: true });
2022
+ const unregister = context.store.collection.register({
2023
+ token,
2024
+ element,
2025
+ textElement,
2026
+ value: itemValue,
2027
+ label: () => internalProps.label,
2028
+ disabled
2029
+ });
2030
+ const index = createMemo(() => context.store.collection.indexOf(token));
2031
+ const selected = createMemo(() => {
2032
+ const current = context.value();
2033
+ if (context.multiple()) return Array.isArray(current) && current.some((value) => compareItemEquality(itemValue(), value, context.comparator()));
2034
+ return compareItemEquality(itemValue(), current, context.comparator());
2035
+ });
2036
+ const highlighted = createMemo(() => context.store.activeElement() === element());
2037
+ const selectedByFocus = createMemo(() => context.selectedIndex() === index());
2038
+ const state = createMemo(() => ({
2039
+ disabled: disabled(),
2040
+ selected: selected(),
2041
+ highlighted: highlighted()
2042
+ }));
2043
+ const classValue = createMemo(() => resolveClass(props.class, state()));
2044
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
2045
+ const stateAttributes = createMemo(() => getStateAttributesProps(state()));
2046
+ const others = omit(allProps, "as", "class", "disabled", "id", "label", "nativeButton", "onBlur", "onClick", "onFocus", "onKeyDown", "onKeyUp", "onMouseMove", "onMouseUp", "onPointerDown", "onPointerEnter", "onPointerMove", "ref", "style", "value");
2047
+ let pointerType = "mouse";
2048
+ let allowMouseSelection = false;
2049
+ let dispatchedClickHandled = false;
2050
+ function commitSelection(event) {
2051
+ if (context.disabled() || context.readOnly()) return;
2052
+ const current = context.value();
2053
+ if (context.multiple()) {
2054
+ const values = Array.isArray(current) ? current : [];
2055
+ const next = selected() ? removeItem(values, itemValue(), context.comparator()) : [...values, itemValue()];
2056
+ context.setValue(next, createChangeEventDetails(itemPress, event));
2057
+ } else {
2058
+ context.setValue(itemValue(), createChangeEventDetails(itemPress, event));
2059
+ context.setOpen(false, createChangeEventDetails(itemPress, event));
2060
+ }
2061
+ }
2062
+ function handleClick(event) {
2063
+ dispatchedClickHandled = true;
2064
+ const clickPointerType = event.pointerType;
2065
+ const virtual = event.detail === 0 && (clickPointerType !== void 0 || highlighted() || element()?.ownerDocument.activeElement === element());
2066
+ const invalidMouseClick = pointerType !== "touch" && !virtual && !allowMouseSelection;
2067
+ allowMouseSelection = false;
2068
+ if (!disabled() && !invalidMouseClick) commitSelection(event);
2069
+ }
2070
+ function handleFocus(event) {
2071
+ context.store.setActiveElement(event.currentTarget);
2072
+ context.field.setFocused(true);
2073
+ }
2074
+ function handleBlur(event) {
2075
+ untrack(() => {
2076
+ if (context.store.activeElement() === event.currentTarget && event.relatedTarget !== event.currentTarget) context.store.setActiveElement(null);
2077
+ context.handleTypeaheadBlur(event);
2078
+ });
2079
+ }
2080
+ function handleKeyDown(event) {
2081
+ context.store.setActiveElement(event.currentTarget);
2082
+ if (event.key === " " && context.store.typing()) {
2083
+ event.preventDefault();
2084
+ event.preventBaseUIHandler();
2085
+ return;
2086
+ }
2087
+ context.handleKeyDown(event);
2088
+ if (event.defaultPrevented) {
2089
+ event.preventBaseUIHandler();
2090
+ return;
2091
+ }
2092
+ if (event.target !== event.currentTarget || event.key !== "Enter" && event.key !== " ") return;
2093
+ const current = event.currentTarget;
2094
+ if (nativeButton() && current.tagName === "BUTTON") return;
2095
+ event.preventDefault();
2096
+ event.preventBaseUIHandler();
2097
+ dispatchedClickHandled = false;
2098
+ const clickEvent = dispatchClick(current, event);
2099
+ if (!dispatchedClickHandled && !clickEvent.baseUIHandlerPrevented) commitSelection(event);
2100
+ }
2101
+ function handleKeyUp(event) {
2102
+ if (nativeButton() && event.key === " ") event.preventDefault();
2103
+ }
2104
+ function handlePointerMove(event) {
2105
+ pointerType = event.pointerType;
2106
+ if (event.pointerType === "mouse" && event.buttons === 1) {
2107
+ context.store.selection.dragY += event.movementY;
2108
+ if (context.store.selection.dragY ** 2 >= 64) context.store.selection.allowUnselectedMouseUp = true;
2109
+ }
2110
+ if (event.pointerType === "mouse" && context.store.pointerMoved(event)) highlightHoveredItem(event.currentTarget);
2111
+ }
2112
+ function handleMouseMove(event) {
2113
+ if (context.store.pointerMoved(event)) highlightHoveredItem(event.currentTarget);
2114
+ }
2115
+ function highlightHoveredItem(current) {
2116
+ if (!context.highlightItemOnHover()) return;
2117
+ context.store.setActiveElement(current);
2118
+ flush();
2119
+ current.focus({ preventScroll: true });
2120
+ }
2121
+ function handlePointerDown(event) {
2122
+ pointerType = event.pointerType;
2123
+ allowMouseSelection = true;
2124
+ context.store.selection.dragY = 0;
2125
+ }
2126
+ function handleMouseUp() {
2127
+ context.store.selection.dragY = 0;
2128
+ if (disabled() || pointerType === "touch" || allowMouseSelection) return;
2129
+ if (selected() ? !context.store.selection.allowSelectedMouseUp : !context.store.selection.allowUnselectedMouseUp) return;
2130
+ allowMouseSelection = true;
2131
+ element()?.click();
2132
+ allowMouseSelection = false;
2133
+ }
2134
+ const onBlur = composeEventHandlers(() => internalProps.onBlur, () => handleBlur);
2135
+ const onClick = composeEventHandlers(() => untrack(() => disabled() ? preventButtonInteraction : void 0), () => internalProps.onClick, () => handleClick);
2136
+ const onFocus = composeEventHandlers(() => internalProps.onFocus, () => handleFocus);
2137
+ const onKeyDown = composeEventHandlers(() => internalProps.onKeyDown, () => handleKeyDown);
2138
+ const onKeyUp = composeEventHandlers(() => internalProps.onKeyUp, () => handleKeyUp);
2139
+ const onMouseUp = composeEventHandlers(() => internalProps.onMouseUp, () => handleMouseUp);
2140
+ const onMouseMove = composeEventHandlers(() => internalProps.onMouseMove, () => handleMouseMove);
2141
+ const onPointerDown = composeEventHandlers(() => internalProps.onPointerDown, () => handlePointerDown);
2142
+ const onPointerEnter = composeEventHandlers(() => internalProps.onPointerEnter, () => (event) => {
2143
+ pointerType = event.pointerType;
2144
+ });
2145
+ const onPointerMove = composeEventHandlers(() => internalProps.onPointerMove, () => handlePointerMove);
2146
+ createEffect(() => ({
2147
+ index: index(),
2148
+ selectedByFocus: selectedByFocus(),
2149
+ text: textElement()
2150
+ }), (current) => {
2151
+ if (current.index === 0) context.setFirstItemText(current.text);
2152
+ if (current.selectedByFocus && current.text) context.setSelectedItemText(current.text);
2153
+ });
2154
+ onCleanup(() => {
2155
+ unregister();
2156
+ if (context.firstItemText() === untrack(textElement)) context.setFirstItemText(null);
2157
+ if (context.selectedItemText() === untrack(textElement)) context.setSelectedItemText(null);
2158
+ });
2159
+ return SelectItemContext({
2160
+ value: {
2161
+ selected,
2162
+ selectedByFocus,
2163
+ index,
2164
+ textElement,
2165
+ setTextElement
2166
+ },
2167
+ get children() {
2168
+ return Dynamic(mergeProps({
2169
+ get component() {
2170
+ return props.as ?? "div";
2171
+ },
2172
+ ref: [((value) => {
2173
+ setElement(value);
2174
+ context.store.collection.touch();
2175
+ }), internalProps.ref],
2176
+ get type() {
2177
+ return nativeButton() ? "button" : void 0;
2178
+ },
2179
+ role: "option",
2180
+ get tabindex() {
2181
+ return context.store.open() && highlighted() ? 0 : -1;
2182
+ },
2183
+ get ["aria-selected"]() {
2184
+ return selected() ? "true" : "false";
2185
+ },
2186
+ get ["aria-disabled"]() {
2187
+ return disabled() ? "true" : void 0;
2188
+ },
2189
+ get ["class"]() {
2190
+ return classValue();
2191
+ },
2192
+ get style() {
2193
+ return styleValue();
2194
+ },
2195
+ onBlur,
2196
+ onClick,
2197
+ onFocus,
2198
+ onKeyDown,
2199
+ onKeyUp,
2200
+ onMouseMove,
2201
+ onMouseUp,
2202
+ onPointerDown,
2203
+ onPointerEnter,
2204
+ onPointerMove
2205
+ }, stateAttributes, others));
2206
+ }
2207
+ });
2208
+ }
2209
+ function dispatchClick(target, source) {
2210
+ const event = new ((target.ownerDocument.defaultView?.MouseEvent) ?? MouseEvent)("click", {
2211
+ bubbles: true,
2212
+ cancelable: true,
2213
+ composed: true,
2214
+ detail: 0,
2215
+ shiftKey: source.shiftKey,
2216
+ ctrlKey: source.ctrlKey,
2217
+ altKey: source.altKey,
2218
+ metaKey: source.metaKey
2219
+ });
2220
+ target.dispatchEvent(event);
2221
+ return event;
2222
+ }
2223
+ //#endregion
2224
+ //#region src/select/item-indicator/SelectItemIndicator.tsx
2225
+ /** Indicates whether the enclosing select item is selected. */
2226
+ function SelectItemIndicator(props) {
2227
+ const item = useSelectItemContext();
2228
+ const internalProps = props;
2229
+ const allProps = props;
2230
+ const transition = createTransitionStatus(item.selected);
2231
+ const shouldRender = createMemo(() => (internalProps.keepMounted ?? false) || transition.mounted());
2232
+ const state = createMemo(() => ({
2233
+ selected: item.selected(),
2234
+ transitionStatus: transition.transitionStatus()
2235
+ }));
2236
+ const classValue = createMemo(() => resolveClass(props.class, state()));
2237
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
2238
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), transitionStatusMapping));
2239
+ const others = omit(allProps, "as", "class", "keepMounted", "ref", "style");
2240
+ let element;
2241
+ createEffect(() => ({
2242
+ selected: item.selected(),
2243
+ status: transition.transitionStatus(),
2244
+ element
2245
+ }), (current) => {
2246
+ if (current.selected || current.status !== "ending" || !current.element) return;
2247
+ const controller = new AbortController();
2248
+ runOnceAnimationsFinish(current.element, () => {
2249
+ if (!untrack(item.selected)) transition.setMounted(false);
2250
+ }, controller.signal);
2251
+ return () => controller.abort();
2252
+ });
2253
+ return Show({
2254
+ get when() {
2255
+ return shouldRender();
2256
+ },
2257
+ get children() {
2258
+ return Dynamic(mergeProps({
2259
+ get component() {
2260
+ return props.as ?? "span";
2261
+ },
2262
+ ref: [((value) => element = value), internalProps.ref],
2263
+ "aria-hidden": "true",
2264
+ get ["class"]() {
2265
+ return classValue();
2266
+ },
2267
+ get style() {
2268
+ return styleValue();
2269
+ }
2270
+ }, stateAttributes, others, { get children() {
2271
+ return props.children ?? "✔️";
2272
+ } }));
2273
+ }
2274
+ });
2275
+ }
2276
+ //#endregion
2277
+ //#region src/select/item-text/SelectItemText.tsx
2278
+ /** The primary text of a select item. */
2279
+ function SelectItemText(props) {
2280
+ const item = useSelectItemContext();
2281
+ const root = useSelectRootContext();
2282
+ const internalProps = props;
2283
+ const allProps = props;
2284
+ const state = {};
2285
+ const classValue = createMemo(() => resolveClass(props.class, state));
2286
+ const styleValue = createMemo(() => resolveStyle(props.style, state));
2287
+ const others = omit(allProps, "as", "class", "ref", "style");
2288
+ createEffect(() => ({
2289
+ index: item.index(),
2290
+ selected: item.selectedByFocus(),
2291
+ text: item.textElement()
2292
+ }), (current) => {
2293
+ root.store.collection.touch();
2294
+ if (current.index === 0) root.setFirstItemText(current.text);
2295
+ if (current.selected && current.text) root.setSelectedItemText(current.text);
2296
+ });
2297
+ onCleanup(() => {
2298
+ untrack(() => {
2299
+ const text = item.textElement();
2300
+ if (root.firstItemText() === text) root.setFirstItemText(null);
2301
+ if (root.selectedItemText() === text) root.setSelectedItemText(null);
2302
+ });
2303
+ });
2304
+ return Dynamic(mergeProps({
2305
+ get component() {
2306
+ return props.as ?? "div";
2307
+ },
2308
+ ref: [((element) => item.setTextElement(element)), internalProps.ref],
2309
+ get ["class"]() {
2310
+ return classValue();
2311
+ },
2312
+ get style() {
2313
+ return styleValue();
2314
+ }
2315
+ }, others));
2316
+ }
2317
+ //#endregion
2318
+ //#region src/select/arrow/SelectArrow.tsx
2319
+ /** Displays an arrow positioned against the select anchor. */
2320
+ function SelectArrow(props) {
2321
+ const root = useSelectRootContext();
2322
+ const positioner = useSelectPositionerContext();
2323
+ const internalProps = props;
2324
+ const allProps = props;
2325
+ const state = createMemo(() => ({
2326
+ open: root.store.open(),
2327
+ side: positioner.side(),
2328
+ align: positioner.align(),
2329
+ uncentered: positioner.arrowUncentered()
2330
+ }));
2331
+ const classValue = createMemo(() => resolveClass(props.class, state()));
2332
+ const styleValue = createMemo(() => mergeStyleValue(positioner.arrowStyles(), resolveStyle(props.style, state())));
2333
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), popupStateMapping));
2334
+ const others = omit(allProps, "as", "class", "ref", "style");
2335
+ let arrow = null;
2336
+ onCleanup(() => {
2337
+ if (arrow) positioner.setArrowElement(null);
2338
+ });
2339
+ return Show({
2340
+ get when() {
2341
+ return !positioner.alignItemWithTriggerActive();
2342
+ },
2343
+ get children() {
2344
+ return Dynamic(mergeProps({
2345
+ get component() {
2346
+ return props.as ?? "div";
2347
+ },
2348
+ ref: [((element) => {
2349
+ arrow = element;
2350
+ positioner.setArrowElement(element);
2351
+ }), internalProps.ref],
2352
+ "aria-hidden": "true",
2353
+ get ["class"]() {
2354
+ return classValue();
2355
+ },
2356
+ get style() {
2357
+ return styleValue();
2358
+ }
2359
+ }, stateAttributes, others));
2360
+ }
2361
+ });
2362
+ }
2363
+ //#endregion
2364
+ //#region src/select/scroll-arrow/SelectScrollArrow.tsx
2365
+ /** @internal */
2366
+ function SelectScrollArrow(props) {
2367
+ const root = useSelectRootContext();
2368
+ const positioner = useSelectPositionerContext();
2369
+ const internalProps = props;
2370
+ const allProps = props;
2371
+ const isUp = createMemo(() => internalProps.direction === "up");
2372
+ const stateVisible = createMemo(() => isUp() ? root.store.scrollUpVisible() : root.store.scrollDownVisible());
2373
+ const visible = createMemo(() => stateVisible() && root.store.openMethod() !== "touch");
2374
+ const transition = createTransitionStatus(visible);
2375
+ const shouldRender = createMemo(() => (internalProps.keepMounted ?? false) || transition.mounted());
2376
+ const state = createMemo(() => ({
2377
+ direction: internalProps.direction,
2378
+ visible: visible(),
2379
+ side: positioner.side(),
2380
+ transitionStatus: transition.transitionStatus()
2381
+ }));
2382
+ const classValue = createMemo(() => resolveClass(props.class, state()));
2383
+ const styleValue = createMemo(() => mergeStyleValue({ position: "absolute" }, resolveStyle(props.style, state())));
2384
+ const stateAttributes = createMemo(() => getStateAttributesProps(state(), transitionStatusMapping));
2385
+ const others = omit(allProps, "as", "class", "direction", "keepMounted", "onMouseLeave", "onMouseMove", "ref", "style");
2386
+ let element = null;
2387
+ let timer;
2388
+ function stop() {
2389
+ clearTimeout(timer);
2390
+ timer = void 0;
2391
+ }
2392
+ function start(event) {
2393
+ if (event.movementX === 0 && event.movementY === 0 || timer !== void 0) return;
2394
+ root.store.setActiveIndex(null);
2395
+ timer = setTimeout(scrollNext, 40);
2396
+ }
2397
+ function scrollNext() {
2398
+ timer = void 0;
2399
+ const scroller = root.store.listElement() ?? root.store.track().popupElement;
2400
+ if (!scroller) return;
2401
+ root.store.setActiveIndex(null);
2402
+ root.updateScrollArrowVisibility(scroller);
2403
+ const maximum = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);
2404
+ const offset = normalizeScrollOffset(scroller.scrollTop, maximum);
2405
+ if (offset !== scroller.scrollTop) scroller.scrollTop = offset;
2406
+ if (offset === (isUp() ? 0 : maximum)) return;
2407
+ const items = root.store.collection.elements();
2408
+ if (items.length > 0) scroller.scrollTop = getTargetScrollTop(items, isUp(), offset, scroller.clientHeight, element?.offsetHeight ?? 0, maximum);
2409
+ timer = setTimeout(scrollNext, 40);
2410
+ }
2411
+ const onMouseLeave = composeEventHandlers(() => internalProps.onMouseLeave, () => stop);
2412
+ const onMouseMove = composeEventHandlers(() => internalProps.onMouseMove, () => start);
2413
+ root.scrollArrowsMounted.count += 1;
2414
+ root.store.setHasScrollArrows(true);
2415
+ createEffect(() => ({
2416
+ visible: visible(),
2417
+ status: transition.transitionStatus(),
2418
+ element
2419
+ }), (current) => {
2420
+ if (current.visible || current.status !== "ending" || !current.element) return;
2421
+ const controller = new AbortController();
2422
+ runOnceAnimationsFinish(current.element, () => {
2423
+ if (!untrack(visible)) transition.setMounted(false);
2424
+ }, controller.signal);
2425
+ return () => controller.abort();
2426
+ });
2427
+ onCleanup(() => {
2428
+ stop();
2429
+ root.scrollArrowsMounted.count = Math.max(0, root.scrollArrowsMounted.count - 1);
2430
+ if (root.scrollArrowsMounted.count === 0) root.store.setHasScrollArrows(false);
2431
+ if (isUp()) positioner.setScrollUpArrow(null);
2432
+ else positioner.setScrollDownArrow(null);
2433
+ });
2434
+ return Show({
2435
+ get when() {
2436
+ return shouldRender();
2437
+ },
2438
+ get children() {
2439
+ return Dynamic(mergeProps({
2440
+ get component() {
2441
+ return props.as ?? "div";
2442
+ },
2443
+ ref: [((value) => {
2444
+ element = value;
2445
+ if (isUp()) positioner.setScrollUpArrow(value);
2446
+ else positioner.setScrollDownArrow(value);
2447
+ }), internalProps.ref],
2448
+ "aria-hidden": "true",
2449
+ get ["class"]() {
2450
+ return classValue();
2451
+ },
2452
+ get style() {
2453
+ return styleValue();
2454
+ },
2455
+ onMouseLeave,
2456
+ onMouseMove
2457
+ }, stateAttributes, others, { get children() {
2458
+ return props.children ?? (isUp() ? "▲" : "▼");
2459
+ } }));
2460
+ }
2461
+ });
2462
+ }
2463
+ function getTargetScrollTop(items, isUp, scrollTop, clientHeight, arrowHeight, maximum) {
2464
+ if (isUp) {
2465
+ let firstVisible = 0;
2466
+ const visibleTop = scrollTop + arrowHeight - 1;
2467
+ for (let index = 0; index < items.length; index += 1) if (items[index] && items[index].offsetTop >= visibleTop) {
2468
+ firstVisible = index;
2469
+ break;
2470
+ }
2471
+ const targetIndex = Math.max(0, firstVisible - 1);
2472
+ const target = items[targetIndex];
2473
+ return targetIndex < firstVisible && target ? normalizeScrollOffset(target.offsetTop - arrowHeight, maximum) : 0;
2474
+ }
2475
+ let lastVisible = items.length - 1;
2476
+ const visibleBottom = scrollTop + clientHeight - arrowHeight + 1;
2477
+ for (let index = 0; index < items.length; index += 1) {
2478
+ const item = items[index];
2479
+ if (item && item.offsetTop + item.offsetHeight > visibleBottom) {
2480
+ lastVisible = Math.max(0, index - 1);
2481
+ break;
2482
+ }
2483
+ }
2484
+ const targetIndex = Math.min(items.length - 1, lastVisible + 1);
2485
+ const target = items[targetIndex];
2486
+ return targetIndex > lastVisible && target ? normalizeScrollOffset(target.offsetTop + target.offsetHeight - clientHeight + arrowHeight, maximum) : maximum;
2487
+ }
2488
+ //#endregion
2489
+ //#region src/select/scroll-down-arrow/SelectScrollDownArrow.tsx
2490
+ /** An element that scrolls the select popup down when hovered. */
2491
+ function SelectScrollDownArrow(props) {
2492
+ return SelectScrollArrow(merge(props, { direction: "down" }));
2493
+ }
2494
+ //#endregion
2495
+ //#region src/select/scroll-up-arrow/SelectScrollUpArrow.tsx
2496
+ /** An element that scrolls the select popup up when hovered. */
2497
+ function SelectScrollUpArrow(props) {
2498
+ return SelectScrollArrow(merge(props, { direction: "up" }));
2499
+ }
2500
+ //#endregion
2501
+ //#region src/select/group/SelectGroupContext.ts
2502
+ var MISSING_CONTEXT = Symbol("SelectGroupContext");
2503
+ var SelectGroupContext = createContext(MISSING_CONTEXT);
2504
+ function useSelectGroupContext() {
2505
+ const context = useContext(SelectGroupContext);
2506
+ if (context === MISSING_CONTEXT) throw new Error("Base UI: SelectGroupContext is missing. SelectGroup parts must be placed within <Select.Group>.");
2507
+ return context;
2508
+ }
2509
+ //#endregion
2510
+ //#region src/select/group/SelectGroup.tsx
2511
+ /** Groups related select items. */
2512
+ function SelectGroup(props) {
2513
+ const internalProps = props;
2514
+ const allProps = props;
2515
+ const [labelId, setLabelId] = createSignal();
2516
+ const state = {};
2517
+ const classValue = createMemo(() => resolveClass(props.class, state));
2518
+ const styleValue = createMemo(() => resolveStyle(props.style, state));
2519
+ const others = omit(allProps, "as", "class", "ref", "style");
2520
+ return SelectGroupContext({
2521
+ value: {
2522
+ labelId,
2523
+ setLabelId
2524
+ },
2525
+ get children() {
2526
+ return Dynamic(mergeProps({
2527
+ get component() {
2528
+ return props.as ?? "div";
2529
+ },
2530
+ ref: [internalProps.ref],
2531
+ role: "group",
2532
+ get ["aria-labelledby"]() {
2533
+ return labelId();
2534
+ },
2535
+ get ["class"]() {
2536
+ return classValue();
2537
+ },
2538
+ get style() {
2539
+ return styleValue();
2540
+ }
2541
+ }, others));
2542
+ }
2543
+ });
2544
+ }
2545
+ //#endregion
2546
+ //#region src/select/group-label/SelectGroupLabel.tsx
2547
+ /** An accessible label for a select group. */
2548
+ function SelectGroupLabel(props) {
2549
+ const context = useSelectGroupContext();
2550
+ const internalProps = props;
2551
+ const allProps = props;
2552
+ const generatedId = `base-ui-${createUniqueId()}`;
2553
+ const id = createMemo(() => internalProps.id ?? generatedId);
2554
+ const state = {};
2555
+ const classValue = createMemo(() => resolveClass(props.class, state));
2556
+ const styleValue = createMemo(() => resolveStyle(props.style, state));
2557
+ const others = omit(allProps, "as", "class", "id", "ref", "style");
2558
+ createEffect(id, (currentId) => {
2559
+ context.setLabelId(currentId);
2560
+ return () => {
2561
+ if (context.labelId() === currentId) context.setLabelId(void 0);
2562
+ };
2563
+ });
2564
+ return Dynamic(mergeProps({
2565
+ get component() {
2566
+ return props.as ?? "div";
2567
+ },
2568
+ ref: [internalProps.ref],
2569
+ get id() {
2570
+ return id();
2571
+ },
2572
+ get ["class"]() {
2573
+ return classValue();
2574
+ },
2575
+ get style() {
2576
+ return styleValue();
2577
+ }
2578
+ }, others));
2579
+ }
2580
+ //#endregion
2581
+ //#region src/select/separator/SelectSeparator.tsx
2582
+ /** A presentational divider between select items or groups. */
2583
+ function SelectSeparator(props) {
2584
+ const internalProps = props;
2585
+ const allProps = props;
2586
+ const orientation = createMemo(() => internalProps.orientation ?? "horizontal");
2587
+ const state = createMemo(() => ({ orientation: orientation() }));
2588
+ const classValue = createMemo(() => resolveClass(props.class, state()));
2589
+ const styleValue = createMemo(() => resolveStyle(props.style, state()));
2590
+ const stateAttributes = createMemo(() => getStateAttributesProps(state()));
2591
+ const others = omit(allProps, "as", "class", "orientation", "ref", "style");
2592
+ return Dynamic(mergeProps({
2593
+ get component() {
2594
+ return props.as ?? "div";
2595
+ },
2596
+ ref: [internalProps.ref],
2597
+ role: "presentation",
2598
+ get ["class"]() {
2599
+ return classValue();
2600
+ },
2601
+ get style() {
2602
+ return styleValue();
2603
+ }
2604
+ }, stateAttributes, others));
2605
+ }
2606
+ //#endregion
2607
+ //#region src/select/index.parts.ts
2608
+ var index_parts_exports = /* @__PURE__ */ __exportAll({
2609
+ Arrow: () => SelectArrow,
2610
+ Backdrop: () => SelectBackdrop,
2611
+ Group: () => SelectGroup,
2612
+ GroupLabel: () => SelectGroupLabel,
2613
+ Icon: () => SelectIcon,
2614
+ Item: () => SelectItem,
2615
+ ItemIndicator: () => SelectItemIndicator,
2616
+ ItemText: () => SelectItemText,
2617
+ Label: () => SelectLabel,
2618
+ List: () => SelectList,
2619
+ Popup: () => SelectPopup,
2620
+ Portal: () => SelectPortal,
2621
+ Positioner: () => SelectPositioner,
2622
+ Root: () => SelectRoot,
2623
+ ScrollDownArrow: () => SelectScrollDownArrow,
2624
+ ScrollUpArrow: () => SelectScrollUpArrow,
2625
+ Separator: () => SelectSeparator,
2626
+ Trigger: () => SelectTrigger,
2627
+ Value: () => SelectValue
2628
+ });
2629
+ //#endregion
2630
+ export { index_parts_exports as Select };