@mantine/core 9.3.1 → 9.4.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 (876) hide show
  1. package/cjs/components/Accordion/Accordion.cjs +1 -0
  2. package/cjs/components/Accordion/Accordion.cjs.map +1 -1
  3. package/cjs/components/Accordion/Accordion.context.cjs.map +1 -1
  4. package/cjs/components/Accordion/AccordionChevron.cjs.map +1 -1
  5. package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs.map +1 -1
  6. package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs.map +1 -1
  7. package/cjs/components/Accordion/AccordionItem.context.cjs.map +1 -1
  8. package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs.map +1 -1
  9. package/cjs/components/ActionIcon/ActionIcon.cjs +1 -0
  10. package/cjs/components/ActionIcon/ActionIcon.cjs.map +1 -1
  11. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs +1 -1
  12. package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs.map +1 -1
  13. package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs.map +1 -1
  14. package/cjs/components/Affix/Affix.cjs.map +1 -1
  15. package/cjs/components/Alert/Alert.cjs.map +1 -1
  16. package/cjs/components/Anchor/Anchor.cjs.map +1 -1
  17. package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
  18. package/cjs/components/AppShell/AppShell.cjs.map +1 -1
  19. package/cjs/components/AppShell/AppShell.context.cjs.map +1 -1
  20. package/cjs/components/AppShell/AppShellAside/AppShellAside.cjs.map +1 -1
  21. package/cjs/components/AppShell/AppShellFooter/AppShellFooter.cjs.map +1 -1
  22. package/cjs/components/AppShell/AppShellHeader/AppShellHeader.cjs.map +1 -1
  23. package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs.map +1 -1
  24. package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs.map +1 -1
  25. package/cjs/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.cjs.map +1 -1
  26. package/cjs/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.cjs.map +1 -1
  27. package/cjs/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.cjs.map +1 -1
  28. package/cjs/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.cjs.map +1 -1
  29. package/cjs/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.cjs.map +1 -1
  30. package/cjs/components/AppShell/AppShellMediaStyles/get-variables/get-variables.cjs.map +1 -1
  31. package/cjs/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.cjs.map +1 -1
  32. package/cjs/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.cjs.map +1 -1
  33. package/cjs/components/AppShell/AppShellNavbar/AppShellNavbar.cjs.map +1 -1
  34. package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs.map +1 -1
  35. package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
  36. package/cjs/components/AspectRatio/AspectRatio.cjs.map +1 -1
  37. package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
  38. package/cjs/components/Avatar/Avatar.cjs.map +1 -1
  39. package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
  40. package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs.map +1 -1
  41. package/cjs/components/Avatar/get-initials/get-initials.cjs.map +1 -1
  42. package/cjs/components/BackgroundImage/BackgroundImage.cjs.map +1 -1
  43. package/cjs/components/Badge/Badge.cjs.map +1 -1
  44. package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
  45. package/cjs/components/Blockquote/Blockquote.module.cjs.map +1 -1
  46. package/cjs/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  47. package/cjs/components/Burger/Burger.cjs.map +1 -1
  48. package/cjs/components/Button/Button.cjs.map +1 -1
  49. package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs.map +1 -1
  50. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
  51. package/cjs/components/Card/Card.cjs.map +1 -1
  52. package/cjs/components/Card/Card.context.cjs.map +1 -1
  53. package/cjs/components/Card/CardSection/CardSection.cjs.map +1 -1
  54. package/cjs/components/Center/Center.cjs.map +1 -1
  55. package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
  56. package/cjs/components/Checkbox/Checkbox.cjs +2 -1
  57. package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  58. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
  59. package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
  60. package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
  61. package/cjs/components/Chip/Chip.cjs.map +1 -1
  62. package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
  63. package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
  64. package/cjs/components/CloseButton/CloseIcon.cjs.map +1 -1
  65. package/cjs/components/Code/Code.cjs.map +1 -1
  66. package/cjs/components/Collapse/Collapse.cjs.map +1 -1
  67. package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
  68. package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
  69. package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs.map +1 -1
  70. package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
  71. package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
  72. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
  73. package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs.map +1 -1
  74. package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
  75. package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
  76. package/cjs/components/ColorPicker/Thumb/Thumb.cjs.map +1 -1
  77. package/cjs/components/ColorPicker/converters/converters.cjs.map +1 -1
  78. package/cjs/components/ColorPicker/converters/parsers.cjs.map +1 -1
  79. package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
  80. package/cjs/components/Combobox/Combobox.cjs +1 -0
  81. package/cjs/components/Combobox/Combobox.cjs.map +1 -1
  82. package/cjs/components/Combobox/Combobox.context.cjs.map +1 -1
  83. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
  84. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
  85. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs.map +1 -1
  86. package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs.map +1 -1
  87. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
  88. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
  89. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
  90. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs +3 -2
  91. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
  92. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
  93. package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs.map +1 -1
  94. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
  95. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
  96. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
  97. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
  98. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs +2 -2
  99. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
  100. package/cjs/components/Combobox/OptionsDropdown/default-options-filter.cjs.map +1 -1
  101. package/cjs/components/Combobox/use-combobox/get-index/get-index.cjs.map +1 -1
  102. package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
  103. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
  104. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  105. package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
  106. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs +218 -0
  107. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -0
  108. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs +45 -0
  109. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs.map +1 -0
  110. package/cjs/components/Container/Container.cjs.map +1 -1
  111. package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
  112. package/cjs/components/DataList/DataList.cjs +61 -0
  113. package/cjs/components/DataList/DataList.cjs.map +1 -0
  114. package/cjs/components/DataList/DataList.context.cjs +8 -0
  115. package/cjs/components/DataList/DataList.context.cjs.map +1 -0
  116. package/cjs/components/DataList/DataList.module.cjs +12 -0
  117. package/cjs/components/DataList/DataList.module.cjs.map +1 -0
  118. package/cjs/components/DataList/DataListItem/DataListItem.cjs +32 -0
  119. package/cjs/components/DataList/DataListItem/DataListItem.cjs.map +1 -0
  120. package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs +33 -0
  121. package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs.map +1 -0
  122. package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs +33 -0
  123. package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs.map +1 -0
  124. package/cjs/components/Dialog/Dialog.cjs.map +1 -1
  125. package/cjs/components/Divider/Divider.cjs.map +1 -1
  126. package/cjs/components/Drawer/Drawer.cjs.map +1 -1
  127. package/cjs/components/Drawer/Drawer.context.cjs.map +1 -1
  128. package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
  129. package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
  130. package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
  131. package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
  132. package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
  133. package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
  134. package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
  135. package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
  136. package/cjs/components/EmptyState/EmptyState.cjs +102 -0
  137. package/cjs/components/EmptyState/EmptyState.cjs.map +1 -0
  138. package/cjs/components/EmptyState/EmptyState.context.cjs +8 -0
  139. package/cjs/components/EmptyState/EmptyState.context.cjs.map +1 -0
  140. package/cjs/components/EmptyState/EmptyState.module.cjs +14 -0
  141. package/cjs/components/EmptyState/EmptyState.module.cjs.map +1 -0
  142. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs +28 -0
  143. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs.map +1 -0
  144. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs +29 -0
  145. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs.map +1 -0
  146. package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs +29 -0
  147. package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs.map +1 -0
  148. package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs +30 -0
  149. package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs.map +1 -0
  150. package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
  151. package/cjs/components/FileButton/FileButton.cjs.map +1 -1
  152. package/cjs/components/FileInput/FileInput.cjs.map +1 -1
  153. package/cjs/components/Flex/Flex.cjs.map +1 -1
  154. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
  155. package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
  156. package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
  157. package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
  158. package/cjs/components/Grid/Grid.cjs.map +1 -1
  159. package/cjs/components/Grid/Grid.context.cjs.map +1 -1
  160. package/cjs/components/Grid/GridCol/GridCol.cjs.map +1 -1
  161. package/cjs/components/Grid/GridCol/GridColVariables.cjs.map +1 -1
  162. package/cjs/components/Grid/GridVariables.cjs.map +1 -1
  163. package/cjs/components/Group/Group.cjs.map +1 -1
  164. package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs.map +1 -1
  165. package/cjs/components/Highlight/Highlight.cjs.map +1 -1
  166. package/cjs/components/Highlight/highlighter/highlighter.cjs.map +1 -1
  167. package/cjs/components/HoverCard/HoverCard.cjs +1 -0
  168. package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
  169. package/cjs/components/HoverCard/HoverCard.context.cjs.map +1 -1
  170. package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
  171. package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
  172. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs +10 -2
  173. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
  174. package/cjs/components/HoverCard/use-hover-card.cjs +24 -0
  175. package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
  176. package/cjs/components/Image/Image.cjs.map +1 -1
  177. package/cjs/components/Indicator/Indicator.cjs.map +1 -1
  178. package/cjs/components/Input/Input.cjs +7 -2
  179. package/cjs/components/Input/Input.cjs.map +1 -1
  180. package/cjs/components/Input/Input.context.cjs.map +1 -1
  181. package/cjs/components/Input/Input.module.cjs +1 -0
  182. package/cjs/components/Input/Input.module.cjs.map +1 -1
  183. package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
  184. package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
  185. package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
  186. package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
  187. package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
  188. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
  189. package/cjs/components/Input/InputSuccess/InputSuccess.cjs +48 -0
  190. package/cjs/components/Input/InputSuccess/InputSuccess.cjs.map +1 -0
  191. package/cjs/components/Input/InputWrapper/InputWrapper.cjs +22 -5
  192. package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
  193. package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
  194. package/cjs/components/Input/use-input-props.cjs +4 -1
  195. package/cjs/components/Input/use-input-props.cjs.map +1 -1
  196. package/cjs/components/InputBase/InputBase.cjs.map +1 -1
  197. package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
  198. package/cjs/components/JsonInput/validate-json/validate-json.cjs.map +1 -1
  199. package/cjs/components/Kbd/Kbd.cjs.map +1 -1
  200. package/cjs/components/List/List.cjs.map +1 -1
  201. package/cjs/components/List/List.context.cjs.map +1 -1
  202. package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
  203. package/cjs/components/Loader/Loader.cjs.map +1 -1
  204. package/cjs/components/Loader/loaders/Bars.cjs.map +1 -1
  205. package/cjs/components/Loader/loaders/Dots.cjs.map +1 -1
  206. package/cjs/components/Loader/loaders/Oval.cjs.map +1 -1
  207. package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
  208. package/cjs/components/Mark/Mark.cjs.map +1 -1
  209. package/cjs/components/Marquee/Marquee.cjs.map +1 -1
  210. package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
  211. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
  212. package/cjs/components/Menu/Menu.cjs.map +1 -1
  213. package/cjs/components/Menu/Menu.context.cjs.map +1 -1
  214. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -1
  215. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -1
  216. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -1
  217. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -1
  218. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
  219. package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
  220. package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
  221. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
  222. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -1
  223. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -1
  224. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -1
  225. package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -1
  226. package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -1
  227. package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
  228. package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
  229. package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
  230. package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
  231. package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs.map +1 -1
  232. package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
  233. package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -1
  234. package/cjs/components/Menubar/Menubar.cjs +146 -0
  235. package/cjs/components/Menubar/Menubar.cjs.map +1 -0
  236. package/cjs/components/Menubar/Menubar.context.cjs +12 -0
  237. package/cjs/components/Menubar/Menubar.context.cjs.map +1 -0
  238. package/cjs/components/Menubar/Menubar.module.cjs +10 -0
  239. package/cjs/components/Menubar/Menubar.module.cjs.map +1 -0
  240. package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs +61 -0
  241. package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs.map +1 -0
  242. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs +59 -0
  243. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs.map +1 -0
  244. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs +143 -0
  245. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs.map +1 -0
  246. package/cjs/components/Modal/Modal.cjs.map +1 -1
  247. package/cjs/components/Modal/Modal.context.cjs.map +1 -1
  248. package/cjs/components/Modal/ModalBody.cjs.map +1 -1
  249. package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
  250. package/cjs/components/Modal/ModalContent.cjs.map +1 -1
  251. package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
  252. package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
  253. package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
  254. package/cjs/components/Modal/ModalStack.cjs.map +1 -1
  255. package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
  256. package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
  257. package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
  258. package/cjs/components/ModalBase/ModalBase.context.cjs.map +1 -1
  259. package/cjs/components/ModalBase/ModalBaseBody.cjs.map +1 -1
  260. package/cjs/components/ModalBase/ModalBaseCloseButton.cjs.map +1 -1
  261. package/cjs/components/ModalBase/ModalBaseContent.cjs.map +1 -1
  262. package/cjs/components/ModalBase/ModalBaseHeader.cjs.map +1 -1
  263. package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
  264. package/cjs/components/ModalBase/ModalBaseTitle.cjs.map +1 -1
  265. package/cjs/components/ModalBase/NativeScrollArea.cjs.map +1 -1
  266. package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
  267. package/cjs/components/ModalBase/use-modal-body-id.cjs.map +1 -1
  268. package/cjs/components/ModalBase/use-modal-title-id.cjs.map +1 -1
  269. package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
  270. package/cjs/components/MultiSelect/MultiSelect.cjs +4 -1
  271. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  272. package/cjs/components/MultiSelect/filter-picked-values.cjs.map +1 -1
  273. package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
  274. package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
  275. package/cjs/components/NavLink/NavLink.cjs.map +1 -1
  276. package/cjs/components/Notification/Notification.cjs.map +1 -1
  277. package/cjs/components/NumberFormatter/NumberFormatter.cjs.map +1 -1
  278. package/cjs/components/NumberInput/NumberInput.cjs.map +1 -1
  279. package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
  280. package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
  281. package/cjs/components/OverflowList/get-row-position-data.cjs.map +1 -1
  282. package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
  283. package/cjs/components/Overlay/Overlay.cjs.map +1 -1
  284. package/cjs/components/Pagination/Pagination.cjs.map +1 -1
  285. package/cjs/components/Pagination/Pagination.context.cjs.map +1 -1
  286. package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
  287. package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs.map +1 -1
  288. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
  289. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
  290. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
  291. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -1
  292. package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
  293. package/cjs/components/Paper/Paper.cjs.map +1 -1
  294. package/cjs/components/PasswordInput/PasswordInput.cjs +13 -2
  295. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  296. package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
  297. package/cjs/components/Pill/Pill.cjs.map +1 -1
  298. package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
  299. package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
  300. package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
  301. package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
  302. package/cjs/components/PinInput/PinInput.cjs +2 -1
  303. package/cjs/components/PinInput/PinInput.cjs.map +1 -1
  304. package/cjs/components/PinInput/create-pin-array/create-pin-array.cjs.map +1 -1
  305. package/cjs/components/Popover/Popover.cjs +2 -1
  306. package/cjs/components/Popover/Popover.cjs.map +1 -1
  307. package/cjs/components/Popover/Popover.context.cjs.map +1 -1
  308. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -1
  309. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs +1 -0
  310. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
  311. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
  312. package/cjs/components/Popover/use-popover.cjs +23 -11
  313. package/cjs/components/Popover/use-popover.cjs.map +1 -1
  314. package/cjs/components/Portal/OptionalPortal.cjs.map +1 -1
  315. package/cjs/components/Portal/Portal.cjs.map +1 -1
  316. package/cjs/components/Progress/Progress.cjs.map +1 -1
  317. package/cjs/components/Progress/Progress.context.cjs.map +1 -1
  318. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
  319. package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
  320. package/cjs/components/Progress/ProgressSection/ProgressSection.cjs.map +1 -1
  321. package/cjs/components/Radio/Radio.cjs.map +1 -1
  322. package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
  323. package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
  324. package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
  325. package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
  326. package/cjs/components/Rating/Rating.cjs.map +1 -1
  327. package/cjs/components/Rating/Rating.context.cjs.map +1 -1
  328. package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
  329. package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
  330. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
  331. package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
  332. package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
  333. package/cjs/components/RingProgress/get-curves/get-curves.cjs.map +1 -1
  334. package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
  335. package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
  336. package/cjs/components/RollingNumber/get-digit-parts.cjs.map +1 -1
  337. package/cjs/components/RollingNumber/get-render-slots.cjs.map +1 -1
  338. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  339. package/cjs/components/ScrollArea/ScrollArea.context.cjs.map +1 -1
  340. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
  341. package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
  342. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs.map +1 -1
  343. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
  344. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
  345. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
  346. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
  347. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
  348. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.context.cjs.map +1 -1
  349. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
  350. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
  351. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
  352. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs +1 -0
  353. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
  354. package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
  355. package/cjs/components/ScrollArea/utils/add-unlinked-scroll-listener.cjs.map +1 -1
  356. package/cjs/components/ScrollArea/utils/get-scroll-position-from-pointer.cjs.map +1 -1
  357. package/cjs/components/ScrollArea/utils/get-thumb-offset-from-scroll.cjs.map +1 -1
  358. package/cjs/components/Scroller/Scroller.cjs.map +1 -1
  359. package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  360. package/cjs/components/Select/Select.cjs.map +1 -1
  361. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +4 -1
  362. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
  363. package/cjs/components/SemiCircleProgress/SemiCircleProgress.module.cjs.map +1 -1
  364. package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
  365. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
  366. package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
  367. package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
  368. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
  369. package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
  370. package/cjs/components/Slider/Slider.context.cjs.map +1 -1
  371. package/cjs/components/Slider/SliderRoot/SliderRoot.cjs.map +1 -1
  372. package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
  373. package/cjs/components/Slider/Track/Track.cjs.map +1 -1
  374. package/cjs/components/Slider/utils/get-precision/get-precision.cjs.map +1 -1
  375. package/cjs/components/Slider/utils/get-step-mark-value/get-step-mark-value.cjs.map +1 -1
  376. package/cjs/components/Space/Space.cjs.map +1 -1
  377. package/cjs/components/Splitter/GripIcon.cjs.map +1 -1
  378. package/cjs/components/Splitter/Splitter.cjs +27 -4
  379. package/cjs/components/Splitter/Splitter.cjs.map +1 -1
  380. package/cjs/components/Splitter/Splitter.context.cjs.map +1 -1
  381. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs +1 -2
  382. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs.map +1 -1
  383. package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
  384. package/cjs/components/Stack/Stack.cjs.map +1 -1
  385. package/cjs/components/Stepper/Stepper.cjs.map +1 -1
  386. package/cjs/components/Stepper/Stepper.context.cjs.map +1 -1
  387. package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
  388. package/cjs/components/Switch/Switch.cjs.map +1 -1
  389. package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
  390. package/cjs/components/Table/Table.cjs.map +1 -1
  391. package/cjs/components/Table/Table.components.cjs.map +1 -1
  392. package/cjs/components/Table/Table.context.cjs.map +1 -1
  393. package/cjs/components/Table/TableDataRenderer.cjs.map +1 -1
  394. package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
  395. package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
  396. package/cjs/components/Tabs/Tabs.cjs +16 -1
  397. package/cjs/components/Tabs/Tabs.cjs.map +1 -1
  398. package/cjs/components/Tabs/Tabs.context.cjs.map +1 -1
  399. package/cjs/components/Tabs/TabsList/TabsList.cjs.map +1 -1
  400. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +6 -0
  401. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
  402. package/cjs/components/Tabs/TabsTab/TabsTab.cjs +1 -1
  403. package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
  404. package/cjs/components/TagsInput/TagsInput.cjs +4 -1
  405. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  406. package/cjs/components/TagsInput/filter-picked-tags.cjs.map +1 -1
  407. package/cjs/components/TagsInput/get-splitted-tags.cjs.map +1 -1
  408. package/cjs/components/Text/Text.cjs.map +1 -1
  409. package/cjs/components/Text/Text.module.cjs.map +1 -1
  410. package/cjs/components/TextInput/TextInput.cjs.map +1 -1
  411. package/cjs/components/Textarea/Autosize.cjs +14 -0
  412. package/cjs/components/Textarea/Autosize.cjs.map +1 -1
  413. package/cjs/components/Textarea/Textarea.cjs.map +1 -1
  414. package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
  415. package/cjs/components/Timeline/Timeline.cjs.map +1 -1
  416. package/cjs/components/Timeline/Timeline.context.cjs.map +1 -1
  417. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
  418. package/cjs/components/Title/Title.cjs.map +1 -1
  419. package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  420. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
  421. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
  422. package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
  423. package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
  424. package/cjs/components/Transition/Transition.cjs +17 -10
  425. package/cjs/components/Transition/Transition.cjs.map +1 -1
  426. package/cjs/components/Transition/get-transition-styles/get-transition-styles.cjs.map +1 -1
  427. package/cjs/components/Transition/use-transition.cjs.map +1 -1
  428. package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
  429. package/cjs/components/Tree/Tree.cjs.map +1 -1
  430. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  431. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +1 -1
  432. package/cjs/components/Tree/is-node-checked/is-node-checked.cjs.map +1 -1
  433. package/cjs/components/Tree/is-node-indeterminate/is-node-indeterminate.cjs.map +1 -1
  434. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
  435. package/cjs/components/Tree/use-tree.cjs.map +1 -1
  436. package/cjs/components/TreeSelect/TreeSelect.cjs +7 -1
  437. package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
  438. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
  439. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs.map +1 -1
  440. package/cjs/components/Typography/Typography.cjs.map +1 -1
  441. package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
  442. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  443. package/cjs/core/Box/Box.cjs.map +1 -1
  444. package/cjs/core/Box/get-box-mod/get-box-mod.cjs.map +1 -1
  445. package/cjs/core/Box/get-box-style/get-box-style.cjs.map +1 -1
  446. package/cjs/core/Box/get-style-object/get-style-object.cjs.map +1 -1
  447. package/cjs/core/Box/style-props/parse-style-props/parse-style-props.cjs.map +1 -1
  448. package/cjs/core/Box/style-props/parse-style-props/sort-media-queries.cjs.map +1 -1
  449. package/cjs/core/Box/style-props/resolvers/border-resolver/border-resolver.cjs.map +1 -1
  450. package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
  451. package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
  452. package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
  453. package/cjs/core/InlineStyles/css-object-to-string/css-object-to-string.cjs.map +1 -1
  454. package/cjs/core/InlineStyles/hash-styles.cjs.map +1 -1
  455. package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs.map +1 -1
  456. package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
  457. package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs.map +1 -1
  458. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
  459. package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs +5 -1
  460. package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs.map +1 -1
  461. package/cjs/core/MantineProvider/MantineCssVariables/get-css-color-variables.cjs.map +1 -1
  462. package/cjs/core/MantineProvider/MantineCssVariables/remove-default-variables.cjs.map +1 -1
  463. package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs +3 -1
  464. package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs.map +1 -1
  465. package/cjs/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.cjs.map +1 -1
  466. package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
  467. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
  468. package/cjs/core/MantineProvider/color-functions/colors-tuple/colors-tuple.cjs.map +1 -1
  469. package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs +3 -1
  470. package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs.map +1 -1
  471. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs +19 -3
  472. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs.map +1 -1
  473. package/cjs/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.cjs.map +1 -1
  474. package/cjs/core/MantineProvider/color-functions/to-rgba/to-rgba.cjs.map +1 -1
  475. package/cjs/core/MantineProvider/convert-css-variables/convert-css-variables.cjs.map +1 -1
  476. package/cjs/core/MantineProvider/convert-css-variables/css-variables-object-to-string.cjs.map +1 -1
  477. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
  478. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
  479. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
  480. package/cjs/core/MantineProvider/use-props/use-props.cjs.map +1 -1
  481. package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs.map +1 -1
  482. package/cjs/core/factory/factory.cjs.map +1 -1
  483. package/cjs/core/factory/polymorphic-factory.cjs.map +1 -1
  484. package/cjs/core/styles-api/use-styles/get-class-name/get-class-name.cjs.map +1 -1
  485. package/cjs/core/styles-api/use-styles/get-class-name/get-global-class-names/get-global-class-names.cjs.map +1 -1
  486. package/cjs/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.cjs.map +1 -1
  487. package/cjs/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.cjs.map +1 -1
  488. package/cjs/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.cjs.map +1 -1
  489. package/cjs/core/styles-api/use-styles/get-style/get-style.cjs.map +1 -1
  490. package/cjs/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.cjs.map +1 -1
  491. package/cjs/core/styles-api/use-styles/use-styles.cjs.map +1 -1
  492. package/cjs/core/styles-api/use-styles/use-transformed-styles.cjs.map +1 -1
  493. package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
  494. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs +3 -5
  495. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs.map +1 -1
  496. package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs.map +1 -1
  497. package/cjs/core/utils/deep-merge/deep-merge.cjs.map +1 -1
  498. package/cjs/core/utils/filter-props/filter-props.cjs.map +1 -1
  499. package/cjs/core/utils/get-context-item-index/get-context-item-index.cjs.map +1 -1
  500. package/cjs/core/utils/get-safe-id/get-safe-id.cjs.map +1 -1
  501. package/cjs/core/utils/is-number-like/is-number-like.cjs.map +1 -1
  502. package/cjs/core/utils/units-converters/px.cjs.map +1 -1
  503. package/cjs/core/utils/units-converters/rem.cjs.map +1 -1
  504. package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
  505. package/cjs/index.cjs +42 -2
  506. package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs.map +1 -1
  507. package/cjs/utils/Floating/use-context-menu-handlers.cjs.map +1 -1
  508. package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
  509. package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
  510. package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
  511. package/esm/components/Accordion/Accordion.mjs +1 -0
  512. package/esm/components/Accordion/Accordion.mjs.map +1 -1
  513. package/esm/components/ActionIcon/ActionIcon.mjs +1 -0
  514. package/esm/components/ActionIcon/ActionIcon.mjs.map +1 -1
  515. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs +1 -1
  516. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  517. package/esm/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.mjs.map +1 -1
  518. package/esm/components/AppShell/AppShellFooter/AppShellFooter.mjs.map +1 -1
  519. package/esm/components/AppShell/AppShellHeader/AppShellHeader.mjs.map +1 -1
  520. package/esm/components/AppShell/AppShellMain/AppShellMain.mjs.map +1 -1
  521. package/esm/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.mjs.map +1 -1
  522. package/esm/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.mjs.map +1 -1
  523. package/esm/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.mjs.map +1 -1
  524. package/esm/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.mjs.map +1 -1
  525. package/esm/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.mjs.map +1 -1
  526. package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.mjs.map +1 -1
  527. package/esm/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.mjs.map +1 -1
  528. package/esm/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.mjs.map +1 -1
  529. package/esm/components/AspectRatio/AspectRatio.mjs.map +1 -1
  530. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  531. package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
  532. package/esm/components/Avatar/get-initials/get-initials.mjs.map +1 -1
  533. package/esm/components/BackgroundImage/BackgroundImage.mjs.map +1 -1
  534. package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
  535. package/esm/components/Blockquote/Blockquote.module.mjs.map +1 -1
  536. package/esm/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
  537. package/esm/components/Button/ButtonGroup/ButtonGroup.mjs.map +1 -1
  538. package/esm/components/Button/ButtonGroupSection/ButtonGroupSection.mjs.map +1 -1
  539. package/esm/components/Checkbox/Checkbox.mjs +2 -1
  540. package/esm/components/Checkbox/Checkbox.mjs.map +1 -1
  541. package/esm/components/Collapse/Collapse.mjs.map +1 -1
  542. package/esm/components/ColorInput/ColorInput.mjs.map +1 -1
  543. package/esm/components/ColorPicker/ColorSlider/ColorSlider.mjs.map +1 -1
  544. package/esm/components/ColorPicker/converters/converters.mjs.map +1 -1
  545. package/esm/components/ColorPicker/converters/parsers.mjs.map +1 -1
  546. package/esm/components/Combobox/Combobox.mjs +1 -0
  547. package/esm/components/Combobox/Combobox.mjs.map +1 -1
  548. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.mjs.map +1 -1
  549. package/esm/components/Combobox/ComboboxFooter/ComboboxFooter.mjs.map +1 -1
  550. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs +3 -2
  551. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs.map +1 -1
  552. package/esm/components/Combobox/ComboboxHeader/ComboboxHeader.mjs.map +1 -1
  553. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs +2 -2
  554. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
  555. package/esm/components/Combobox/OptionsDropdown/default-options-filter.mjs.map +1 -1
  556. package/esm/components/Combobox/use-combobox/get-index/get-index.mjs.map +1 -1
  557. package/esm/components/Combobox/use-combobox/use-combobox.mjs.map +1 -1
  558. package/esm/components/Combobox/use-pills-reorder/use-pills-reorder.mjs.map +1 -1
  559. package/esm/components/ComboboxPopover/ComboboxPopover.mjs +216 -0
  560. package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -0
  561. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs +45 -0
  562. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs.map +1 -0
  563. package/esm/components/DataList/DataList.context.mjs +8 -0
  564. package/esm/components/DataList/DataList.context.mjs.map +1 -0
  565. package/esm/components/DataList/DataList.mjs +61 -0
  566. package/esm/components/DataList/DataList.mjs.map +1 -0
  567. package/esm/components/DataList/DataList.module.mjs +12 -0
  568. package/esm/components/DataList/DataList.module.mjs.map +1 -0
  569. package/esm/components/DataList/DataListItem/DataListItem.mjs +32 -0
  570. package/esm/components/DataList/DataListItem/DataListItem.mjs.map +1 -0
  571. package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs +33 -0
  572. package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs.map +1 -0
  573. package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs +33 -0
  574. package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs.map +1 -0
  575. package/esm/components/Drawer/DrawerBody.mjs.map +1 -1
  576. package/esm/components/Drawer/DrawerCloseButton.mjs.map +1 -1
  577. package/esm/components/Drawer/DrawerHeader.mjs.map +1 -1
  578. package/esm/components/Drawer/DrawerOverlay.mjs.map +1 -1
  579. package/esm/components/Drawer/DrawerRoot.mjs.map +1 -1
  580. package/esm/components/Drawer/DrawerTitle.mjs.map +1 -1
  581. package/esm/components/EmptyState/EmptyState.context.mjs +8 -0
  582. package/esm/components/EmptyState/EmptyState.context.mjs.map +1 -0
  583. package/esm/components/EmptyState/EmptyState.mjs +102 -0
  584. package/esm/components/EmptyState/EmptyState.mjs.map +1 -0
  585. package/esm/components/EmptyState/EmptyState.module.mjs +14 -0
  586. package/esm/components/EmptyState/EmptyState.module.mjs.map +1 -0
  587. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs +28 -0
  588. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs.map +1 -0
  589. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs +29 -0
  590. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs.map +1 -0
  591. package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs +29 -0
  592. package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -0
  593. package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs +30 -0
  594. package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs.map +1 -0
  595. package/esm/components/FileInput/FileInput.mjs.map +1 -1
  596. package/esm/components/Grid/GridCol/GridColVariables.mjs.map +1 -1
  597. package/esm/components/Grid/GridVariables.mjs.map +1 -1
  598. package/esm/components/Group/Group.mjs.map +1 -1
  599. package/esm/components/Group/filter-falsy-children/filter-falsy-children.mjs.map +1 -1
  600. package/esm/components/Highlight/highlighter/highlighter.mjs.map +1 -1
  601. package/esm/components/HoverCard/HoverCard.context.mjs.map +1 -1
  602. package/esm/components/HoverCard/HoverCard.mjs +1 -0
  603. package/esm/components/HoverCard/HoverCard.mjs.map +1 -1
  604. package/esm/components/HoverCard/HoverCardDropdown/HoverCardDropdown.mjs.map +1 -1
  605. package/esm/components/HoverCard/HoverCardTarget/HoverCardTarget.mjs +10 -2
  606. package/esm/components/HoverCard/HoverCardTarget/HoverCardTarget.mjs.map +1 -1
  607. package/esm/components/HoverCard/use-hover-card.mjs +24 -0
  608. package/esm/components/HoverCard/use-hover-card.mjs.map +1 -1
  609. package/esm/components/Input/Input.mjs +7 -2
  610. package/esm/components/Input/Input.mjs.map +1 -1
  611. package/esm/components/Input/Input.module.mjs +1 -0
  612. package/esm/components/Input/Input.module.mjs.map +1 -1
  613. package/esm/components/Input/InputDescription/InputDescription.mjs.map +1 -1
  614. package/esm/components/Input/InputError/InputError.mjs.map +1 -1
  615. package/esm/components/Input/InputPlaceholder/InputPlaceholder.mjs.map +1 -1
  616. package/esm/components/Input/InputSuccess/InputSuccess.mjs +48 -0
  617. package/esm/components/Input/InputSuccess/InputSuccess.mjs.map +1 -0
  618. package/esm/components/Input/InputWrapper/InputWrapper.mjs +22 -5
  619. package/esm/components/Input/InputWrapper/InputWrapper.mjs.map +1 -1
  620. package/esm/components/Input/use-input-props.mjs +4 -1
  621. package/esm/components/Input/use-input-props.mjs.map +1 -1
  622. package/esm/components/JsonInput/validate-json/validate-json.mjs.map +1 -1
  623. package/esm/components/Kbd/Kbd.mjs.map +1 -1
  624. package/esm/components/Mark/Mark.mjs.map +1 -1
  625. package/esm/components/Marquee/Marquee.mjs.map +1 -1
  626. package/esm/components/Menu/MenuDivider/MenuDivider.mjs.map +1 -1
  627. package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
  628. package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
  629. package/esm/components/Menu/MenuLabel/MenuLabel.mjs.map +1 -1
  630. package/esm/components/Menu/MenuSearch/MenuSearch.mjs.map +1 -1
  631. package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -1
  632. package/esm/components/Menu/MenuSub/MenuSub.mjs.map +1 -1
  633. package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
  634. package/esm/components/Menu/use-menu-type-ahead.mjs.map +1 -1
  635. package/esm/components/Menubar/Menubar.context.mjs +9 -0
  636. package/esm/components/Menubar/Menubar.context.mjs.map +1 -0
  637. package/esm/components/Menubar/Menubar.mjs +146 -0
  638. package/esm/components/Menubar/Menubar.mjs.map +1 -0
  639. package/esm/components/Menubar/Menubar.module.mjs +10 -0
  640. package/esm/components/Menubar/Menubar.module.mjs.map +1 -0
  641. package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs +61 -0
  642. package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs.map +1 -0
  643. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs +59 -0
  644. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs.map +1 -0
  645. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs +143 -0
  646. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs.map +1 -0
  647. package/esm/components/Modal/ModalBody.mjs.map +1 -1
  648. package/esm/components/Modal/ModalCloseButton.mjs.map +1 -1
  649. package/esm/components/Modal/ModalHeader.mjs.map +1 -1
  650. package/esm/components/Modal/ModalOverlay.mjs.map +1 -1
  651. package/esm/components/Modal/ModalTitle.mjs.map +1 -1
  652. package/esm/components/ModalBase/ModalBase.mjs.map +1 -1
  653. package/esm/components/MultiSelect/MultiSelect.mjs +4 -1
  654. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  655. package/esm/components/MultiSelect/filter-picked-values.mjs.map +1 -1
  656. package/esm/components/NativeSelect/NativeSelect.mjs.map +1 -1
  657. package/esm/components/NativeSelect/NativeSelectOption.mjs.map +1 -1
  658. package/esm/components/NumberInput/NumberInput.mjs.map +1 -1
  659. package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
  660. package/esm/components/OverflowList/get-row-position-data.mjs.map +1 -1
  661. package/esm/components/OverflowList/use-dimensions.mjs.map +1 -1
  662. package/esm/components/Overlay/Overlay.mjs.map +1 -1
  663. package/esm/components/Pagination/Pagination.icons.mjs.map +1 -1
  664. package/esm/components/Pagination/Pagination.mjs.map +1 -1
  665. package/esm/components/Pagination/PaginationDots/PaginationDots.mjs.map +1 -1
  666. package/esm/components/Pagination/PaginationItems/PaginationItems.mjs.map +1 -1
  667. package/esm/components/PasswordInput/PasswordInput.mjs +13 -2
  668. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  669. package/esm/components/Pill/PillGroup/PillGroup.mjs.map +1 -1
  670. package/esm/components/PillsInput/PillsInput.mjs.map +1 -1
  671. package/esm/components/PinInput/PinInput.mjs +2 -1
  672. package/esm/components/PinInput/PinInput.mjs.map +1 -1
  673. package/esm/components/PinInput/create-pin-array/create-pin-array.mjs.map +1 -1
  674. package/esm/components/Popover/Popover.context.mjs.map +1 -1
  675. package/esm/components/Popover/Popover.mjs +2 -1
  676. package/esm/components/Popover/Popover.mjs.map +1 -1
  677. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs +1 -0
  678. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs.map +1 -1
  679. package/esm/components/Popover/use-popover.mjs +23 -11
  680. package/esm/components/Popover/use-popover.mjs.map +1 -1
  681. package/esm/components/Portal/Portal.mjs.map +1 -1
  682. package/esm/components/Progress/ProgressLabel/ProgressLabel.mjs.map +1 -1
  683. package/esm/components/Radio/Radio.mjs.map +1 -1
  684. package/esm/components/Radio/RadioCard/RadioCard.mjs.map +1 -1
  685. package/esm/components/Rating/Rating.mjs.map +1 -1
  686. package/esm/components/Rating/RatingItem/RatingItem.mjs.map +1 -1
  687. package/esm/components/Rating/StarSymbol/StarSymbol.mjs.map +1 -1
  688. package/esm/components/RingProgress/RingProgress.mjs.map +1 -1
  689. package/esm/components/RingProgress/get-curves/get-curves.mjs.map +1 -1
  690. package/esm/components/RollingNumber/get-digit-parts.mjs.map +1 -1
  691. package/esm/components/RollingNumber/get-render-slots.mjs.map +1 -1
  692. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs +1 -0
  693. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs.map +1 -1
  694. package/esm/components/ScrollArea/utils/add-unlinked-scroll-listener.mjs.map +1 -1
  695. package/esm/components/ScrollArea/utils/get-scroll-position-from-pointer.mjs.map +1 -1
  696. package/esm/components/ScrollArea/utils/get-thumb-offset-from-scroll.mjs.map +1 -1
  697. package/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  698. package/esm/components/Select/Select.mjs.map +1 -1
  699. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs +4 -1
  700. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
  701. package/esm/components/SemiCircleProgress/SemiCircleProgress.module.mjs.map +1 -1
  702. package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
  703. package/esm/components/Skeleton/Skeleton.mjs.map +1 -1
  704. package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
  705. package/esm/components/Slider/Thumb/Thumb.mjs.map +1 -1
  706. package/esm/components/Slider/utils/get-precision/get-precision.mjs.map +1 -1
  707. package/esm/components/Slider/utils/get-step-mark-value/get-step-mark-value.mjs.map +1 -1
  708. package/esm/components/Splitter/Splitter.context.mjs.map +1 -1
  709. package/esm/components/Splitter/Splitter.mjs +27 -4
  710. package/esm/components/Splitter/Splitter.mjs.map +1 -1
  711. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs +1 -2
  712. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs.map +1 -1
  713. package/esm/components/Stack/Stack.mjs.map +1 -1
  714. package/esm/components/Stepper/Stepper.mjs.map +1 -1
  715. package/esm/components/Switch/Switch.mjs.map +1 -1
  716. package/esm/components/Table/Table.components.mjs.map +1 -1
  717. package/esm/components/TableOfContents/TableOfContents.mjs.map +1 -1
  718. package/esm/components/Tabs/Tabs.context.mjs.map +1 -1
  719. package/esm/components/Tabs/Tabs.mjs +18 -3
  720. package/esm/components/Tabs/Tabs.mjs.map +1 -1
  721. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs +7 -1
  722. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
  723. package/esm/components/Tabs/TabsTab/TabsTab.mjs +1 -1
  724. package/esm/components/Tabs/TabsTab/TabsTab.mjs.map +1 -1
  725. package/esm/components/TagsInput/TagsInput.mjs +4 -1
  726. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  727. package/esm/components/TagsInput/filter-picked-tags.mjs.map +1 -1
  728. package/esm/components/TagsInput/get-splitted-tags.mjs.map +1 -1
  729. package/esm/components/Text/Text.mjs.map +1 -1
  730. package/esm/components/Text/Text.module.mjs.map +1 -1
  731. package/esm/components/Textarea/Autosize.mjs +14 -0
  732. package/esm/components/Textarea/Autosize.mjs.map +1 -1
  733. package/esm/components/ThemeIcon/ThemeIcon.mjs.map +1 -1
  734. package/esm/components/Title/Title.mjs.map +1 -1
  735. package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  736. package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
  737. package/esm/components/Transition/Transition.mjs +17 -10
  738. package/esm/components/Transition/Transition.mjs.map +1 -1
  739. package/esm/components/Transition/get-transition-styles/get-transition-styles.mjs.map +1 -1
  740. package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
  741. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  742. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +1 -1
  743. package/esm/components/Tree/is-node-checked/is-node-checked.mjs.map +1 -1
  744. package/esm/components/Tree/is-node-indeterminate/is-node-indeterminate.mjs.map +1 -1
  745. package/esm/components/Tree/use-tree.mjs.map +1 -1
  746. package/esm/components/TreeSelect/TreeSelect.mjs +7 -1
  747. package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
  748. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs.map +1 -1
  749. package/esm/components/Typography/Typography.mjs.map +1 -1
  750. package/esm/components/UnstyledButton/UnstyledButton.mjs.map +1 -1
  751. package/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
  752. package/esm/core/Box/Box.mjs.map +1 -1
  753. package/esm/core/Box/get-box-mod/get-box-mod.mjs.map +1 -1
  754. package/esm/core/Box/get-box-style/get-box-style.mjs.map +1 -1
  755. package/esm/core/Box/get-style-object/get-style-object.mjs.map +1 -1
  756. package/esm/core/Box/style-props/parse-style-props/parse-style-props.mjs.map +1 -1
  757. package/esm/core/Box/style-props/parse-style-props/sort-media-queries.mjs.map +1 -1
  758. package/esm/core/Box/style-props/resolvers/border-resolver/border-resolver.mjs.map +1 -1
  759. package/esm/core/Box/use-random-classname/use-random-classname.mjs.map +1 -1
  760. package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
  761. package/esm/core/InlineStyles/css-object-to-string/css-object-to-string.mjs.map +1 -1
  762. package/esm/core/InlineStyles/hash-styles.mjs.map +1 -1
  763. package/esm/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.mjs.map +1 -1
  764. package/esm/core/MantineProvider/Mantine.context.mjs.map +1 -1
  765. package/esm/core/MantineProvider/MantineClasses/MantineClasses.mjs.map +1 -1
  766. package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs +6 -2
  767. package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs.map +1 -1
  768. package/esm/core/MantineProvider/MantineCssVariables/get-css-color-variables.mjs.map +1 -1
  769. package/esm/core/MantineProvider/MantineCssVariables/remove-default-variables.mjs.map +1 -1
  770. package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs +3 -1
  771. package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs.map +1 -1
  772. package/esm/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.mjs.map +1 -1
  773. package/esm/core/MantineProvider/color-functions/colors-tuple/colors-tuple.mjs.map +1 -1
  774. package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs +3 -1
  775. package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs.map +1 -1
  776. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs +19 -4
  777. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs.map +1 -1
  778. package/esm/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.mjs.map +1 -1
  779. package/esm/core/MantineProvider/color-functions/to-rgba/to-rgba.mjs.map +1 -1
  780. package/esm/core/MantineProvider/convert-css-variables/convert-css-variables.mjs.map +1 -1
  781. package/esm/core/MantineProvider/convert-css-variables/css-variables-object-to-string.mjs.map +1 -1
  782. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.mjs.map +1 -1
  783. package/esm/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.mjs.map +1 -1
  784. package/esm/core/MantineProvider/use-props/use-props.mjs.map +1 -1
  785. package/esm/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.mjs.map +1 -1
  786. package/esm/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.mjs.map +1 -1
  787. package/esm/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.mjs.map +1 -1
  788. package/esm/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.mjs.map +1 -1
  789. package/esm/core/styles-api/use-styles/get-style/get-style.mjs.map +1 -1
  790. package/esm/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.mjs.map +1 -1
  791. package/esm/core/styles-api/use-styles/use-styles.mjs.map +1 -1
  792. package/esm/core/styles-api/use-styles/use-transformed-styles.mjs.map +1 -1
  793. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs +3 -5
  794. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs.map +1 -1
  795. package/esm/core/utils/create-use-external-events/create-use-external-events.mjs.map +1 -1
  796. package/esm/core/utils/deep-merge/deep-merge.mjs.map +1 -1
  797. package/esm/core/utils/filter-props/filter-props.mjs.map +1 -1
  798. package/esm/core/utils/get-context-item-index/get-context-item-index.mjs.map +1 -1
  799. package/esm/core/utils/get-safe-id/get-safe-id.mjs.map +1 -1
  800. package/esm/core/utils/is-number-like/is-number-like.mjs.map +1 -1
  801. package/esm/core/utils/units-converters/px.mjs.map +1 -1
  802. package/esm/core/utils/units-converters/rem.mjs.map +1 -1
  803. package/esm/index.mjs +23 -4
  804. package/lib/components/Accordion/Accordion.d.ts +4 -4
  805. package/lib/components/ActionIcon/ActionIcon.d.ts +3 -3
  806. package/lib/components/Combobox/Combobox.types.d.ts +4 -3
  807. package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +1 -1
  808. package/lib/components/Combobox/index.d.ts +1 -1
  809. package/lib/components/ComboboxPopover/ComboboxPopover.d.ts +110 -0
  810. package/lib/components/ComboboxPopover/ComboboxPopover.types.d.ts +2 -0
  811. package/lib/components/ComboboxPopover/ComboboxPopoverTarget.d.ts +16 -0
  812. package/lib/components/ComboboxPopover/index.d.ts +14 -0
  813. package/lib/components/DataList/DataList.context.d.ts +6 -0
  814. package/lib/components/DataList/DataList.d.ts +44 -0
  815. package/lib/components/DataList/DataListItem/DataListItem.d.ts +18 -0
  816. package/lib/components/DataList/DataListItemLabel/DataListItemLabel.d.ts +18 -0
  817. package/lib/components/DataList/DataListItemValue/DataListItemValue.d.ts +18 -0
  818. package/lib/components/DataList/index.d.ts +32 -0
  819. package/lib/components/EmptyState/EmptyState.context.d.ts +8 -0
  820. package/lib/components/EmptyState/EmptyState.d.ts +83 -0
  821. package/lib/components/EmptyState/EmptyStateActions/EmptyStateActions.d.ts +18 -0
  822. package/lib/components/EmptyState/EmptyStateDescription/EmptyStateDescription.d.ts +18 -0
  823. package/lib/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.d.ts +18 -0
  824. package/lib/components/EmptyState/EmptyStateTitle/EmptyStateTitle.d.ts +20 -0
  825. package/lib/components/EmptyState/index.d.ts +13 -0
  826. package/lib/components/HoverCard/HoverCard.context.d.ts +1 -0
  827. package/lib/components/HoverCard/use-hover-card.d.ts +1 -0
  828. package/lib/components/Input/Input.d.ts +11 -0
  829. package/lib/components/Input/InputSuccess/InputSuccess.d.ts +23 -0
  830. package/lib/components/Input/InputWrapper/InputWrapper.d.ts +7 -2
  831. package/lib/components/Input/index.d.ts +3 -1
  832. package/lib/components/Input/use-input-props.d.ts +8 -5
  833. package/lib/components/MaskInput/use-mask-input-props.d.ts +7 -3
  834. package/lib/components/Menubar/Menubar.context.d.ts +51 -0
  835. package/lib/components/Menubar/Menubar.d.ts +56 -0
  836. package/lib/components/Menubar/MenubarDropdown/MenubarDropdown.d.ts +7 -0
  837. package/lib/components/Menubar/MenubarMenu/MenubarMenu.d.ts +9 -0
  838. package/lib/components/Menubar/MenubarTarget/MenubarTarget.d.ts +14 -0
  839. package/lib/components/Menubar/index.d.ts +11 -0
  840. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  841. package/lib/components/NativeSelect/NativeSelect.d.ts +2 -2
  842. package/lib/components/Pagination/Pagination.icons.d.ts +1 -1
  843. package/lib/components/PinInput/PinInput.d.ts +2 -0
  844. package/lib/components/Popover/Popover.context.d.ts +1 -0
  845. package/lib/components/Popover/Popover.d.ts +7 -0
  846. package/lib/components/Slider/Thumb/Thumb.d.ts +1 -1
  847. package/lib/components/Splitter/Splitter.context.d.ts +3 -1
  848. package/lib/components/Splitter/Splitter.d.ts +12 -10
  849. package/lib/components/Splitter/SplitterPane/SplitterPane.d.ts +9 -8
  850. package/lib/components/Tabs/Tabs.context.d.ts +2 -0
  851. package/lib/components/Transition/Transition.d.ts +8 -1
  852. package/lib/components/index.d.ts +4 -0
  853. package/lib/core/Box/Box.d.ts +1 -1
  854. package/lib/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.d.ts +7 -2
  855. package/lib/core/MantineProvider/color-functions/index.d.ts +1 -1
  856. package/lib/core/styles-api/styles-api.types.d.ts +2 -2
  857. package/lib/core/styles-api/use-styles/use-styles.d.ts +1 -1
  858. package/package.json +5 -5
  859. package/styles/Blockquote.css +1 -1
  860. package/styles/Blockquote.layer.css +1 -1
  861. package/styles/DataList.css +54 -0
  862. package/styles/DataList.layer.css +55 -0
  863. package/styles/EmptyState.css +121 -0
  864. package/styles/EmptyState.layer.css +122 -0
  865. package/styles/Input.css +21 -2
  866. package/styles/Input.layer.css +21 -2
  867. package/styles/Menubar.css +29 -0
  868. package/styles/Menubar.layer.css +30 -0
  869. package/styles/SemiCircleProgress.css +1 -0
  870. package/styles/SemiCircleProgress.layer.css +1 -0
  871. package/styles/Text.css +1 -1
  872. package/styles/Text.layer.css +1 -1
  873. package/styles/default-css-variables.css +2 -0
  874. package/styles/default-css-variables.layer.css +2 -0
  875. package/styles.css +233 -4
  876. package/styles.layer.css +233 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ColorSlider.mjs","names":["classes"],"sources":["../../../../src/components/ColorPicker/ColorSlider/ColorSlider.tsx"],"sourcesContent":["import { use, useRef, useState } from 'react';\nimport {\n clampUseMovePosition,\n useDidUpdate,\n useMergedRef,\n useMove,\n UseMovePosition,\n} from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineSize,\n rem,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '../../../core';\nimport { ColorPickerContext } from '../ColorPicker.context';\nimport { Thumb } from '../Thumb/Thumb';\nimport classes from '../ColorPicker.module.css';\n\nexport type ColorSliderStylesNames = 'slider' | 'sliderOverlay' | 'thumb';\n\nexport interface __ColorSliderProps extends ElementProps<'div', 'onChange'> {\n /** Controlled component value */\n value: number;\n\n /** Called when value changes */\n onChange?: (value: number) => void;\n\n /** Called when user stops dragging the slider or uses keyboard to change value */\n onChangeEnd?: (value: number) => void;\n\n /** Called when user starts dragging the slider */\n onScrubStart?: () => void;\n\n /** Called when user stops dragging the slider */\n onScrubEnd?: () => void;\n\n /** Slider size @default 'md' */\n size?: MantineSize | (string & {});\n\n /** If set, slider thumb can be focused @default true */\n focusable?: boolean;\n}\n\nexport interface ColorSliderProps\n extends\n BoxProps,\n StylesApiProps<ColorSliderFactory>,\n __ColorSliderProps,\n ElementProps<'div', 'onChange'> {\n __staticSelector?: string;\n maxValue: number;\n overlays: React.CSSProperties[];\n round: boolean;\n thumbColor?: string;\n}\n\nexport type ColorSliderOptions = Omit<\n ColorSliderProps,\n 'maxValue' | 'overlays' | 'round' | 'thumbColor'\n>;\n\nexport type ColorSliderFactory = Factory<{\n props: ColorSliderProps;\n ref: HTMLDivElement;\n stylesNames: ColorSliderStylesNames;\n}>;\n\nexport const ColorSlider = factory<ColorSliderFactory>((_props) => {\n const props = useProps('ColorSlider', null, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n onChange,\n onChangeEnd,\n maxValue,\n round,\n size = 'md',\n focusable = true,\n value,\n overlays,\n thumbColor = 'transparent',\n onScrubStart,\n onScrubEnd,\n __staticSelector = 'ColorPicker',\n attributes,\n ref,\n ...others\n } = props;\n\n const _getStyles = useStyles<ColorSliderFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n rootSelector: 'slider',\n });\n\n const ctxGetStyles = use(ColorPickerContext)?.getStyles;\n const getStyles = ctxGetStyles || _getStyles;\n\n const theme = useMantineTheme();\n const [position, setPosition] = useState({ y: 0, x: value / maxValue });\n const positionRef = useRef(position);\n const getChangeValue = (val: number) => (round ? Math.round(val * maxValue) : val * maxValue);\n const { ref: sliderRef } = useMove(\n ({ x, y }) => {\n positionRef.current = { x, y };\n onChange?.(getChangeValue(x));\n },\n {\n onScrubEnd: () => {\n const { x } = positionRef.current;\n onChangeEnd?.(getChangeValue(x));\n onScrubEnd?.();\n },\n onScrubStart,\n }\n );\n\n useDidUpdate(() => {\n setPosition({ y: 0, x: value / maxValue });\n }, [value]);\n\n const handleArrow = (event: React.KeyboardEvent<HTMLDivElement>, pos: UseMovePosition) => {\n event.preventDefault();\n const _position = clampUseMovePosition(pos);\n onChange?.(getChangeValue(_position.x));\n onChangeEnd?.(getChangeValue(_position.x));\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowRight': {\n handleArrow(event, { x: position.x + 0.05, y: position.y });\n break;\n }\n\n case 'ArrowLeft': {\n handleArrow(event, { x: position.x - 0.05, y: position.y });\n break;\n }\n }\n };\n\n const layers = overlays.map((overlay, index) => (\n <div {...getStyles('sliderOverlay')} style={overlay} key={index} />\n ));\n\n return (\n <Box\n {...others}\n ref={useMergedRef(sliderRef, ref)}\n {...getStyles('slider')}\n size={size}\n role=\"slider\"\n aria-valuenow={value}\n aria-valuemax={maxValue}\n aria-valuemin={0}\n tabIndex={focusable ? 0 : -1}\n onKeyDown={handleKeyDown}\n data-focus-ring={theme.focusRing}\n __vars={{\n '--cp-thumb-size': `var(--cp-thumb-size-${size})`,\n }}\n >\n {layers}\n\n <Thumb\n position={position}\n {...getStyles('thumb', { style: { top: rem(1), background: thumbColor } })}\n />\n </Box>\n );\n});\n\nColorSlider.displayName = '@mantine/core/ColorSlider';\nColorSlider.classes = classes;\n"],"mappings":";;;;;;;;;;;;;;AA0EA,MAAa,cAAc,SAA6B,WAAW;CACjE,MAAM,QAAQ,SAAS,eAAe,MAAM,MAAM;CAClD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,aACA,UACA,OACA,OAAO,MACP,YAAY,MACZ,OACA,UACA,aAAa,eACb,cACA,YACA,mBAAmB,eACnB,YACA,KACA,GAAG,WACD;CAEJ,MAAM,aAAa,UAA8B;EAC/C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAGD,MAAM,YADe,IAAI,kBAAkB,GAAG,aACZ;CAElC,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,CAAC,UAAU,eAAe,SAAS;EAAE,GAAG;EAAG,GAAG,QAAQ;CAAS,CAAC;CACtE,MAAM,cAAc,OAAO,QAAQ;CACnC,MAAM,kBAAkB,QAAiB,QAAQ,KAAK,MAAM,MAAM,QAAQ,IAAI,MAAM;CACpF,MAAM,EAAE,KAAK,cAAc,SACxB,EAAE,GAAG,QAAQ;EACZ,YAAY,UAAU;GAAE;GAAG;EAAE;EAC7B,WAAW,eAAe,CAAC,CAAC;CAC9B,GACA;EACE,kBAAkB;GAChB,MAAM,EAAE,MAAM,YAAY;GAC1B,cAAc,eAAe,CAAC,CAAC;GAC/B,aAAa;EACf;EACA;CACF,CACF;CAEA,mBAAmB;EACjB,YAAY;GAAE,GAAG;GAAG,GAAG,QAAQ;EAAS,CAAC;CAC3C,GAAG,CAAC,KAAK,CAAC;CAEV,MAAM,eAAe,OAA4C,QAAyB;EACxF,MAAM,eAAe;EACrB,MAAM,YAAY,qBAAqB,GAAG;EAC1C,WAAW,eAAe,UAAU,CAAC,CAAC;EACtC,cAAc,eAAe,UAAU,CAAC,CAAC;CAC3C;CAEA,MAAM,iBAAiB,UAA+C;EACpE,QAAQ,MAAM,KAAd;GACE,KAAK;IACH,YAAY,OAAO;KAAE,GAAG,SAAS,IAAI;KAAM,GAAG,SAAS;IAAE,CAAC;IAC1D;GAGF,KAAK;IACH,YAAY,OAAO;KAAE,GAAG,SAAS,IAAI;KAAM,GAAG,SAAS;IAAE,CAAC;IAC1D;EAEJ;CACF;CAEA,MAAM,SAAS,SAAS,KAAK,SAAS,UACpC,8BAAC,OAAD;EAAK,GAAI,UAAU,eAAe;EAAG,OAAO;EAAS,KAAK;CAAQ,CAAA,CACnE;CAED,OACE,qBAAC,KAAD;EACE,GAAI;EACJ,KAAK,aAAa,WAAW,GAAG;EAChC,GAAI,UAAU,QAAQ;EAChB;EACN,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,UAAU,YAAY,IAAI;EAC1B,WAAW;EACX,mBAAiB,MAAM;EACvB,QAAQ,EACN,mBAAmB,uBAAuB,KAAK,GACjD;YAdF,CAgBG,QAED,oBAAC,OAAD;GACY;GACV,GAAI,UAAU,SAAS,EAAE,OAAO;IAAE,KAAK,IAAI,CAAC;IAAG,YAAY;GAAW,EAAE,CAAC;EAC1E,CAAA,CACE;;AAET,CAAC;AAED,YAAY,cAAc;AAC1B,YAAY,UAAUA"}
1
+ {"version":3,"file":"ColorSlider.mjs","names":["classes"],"sources":["../../../../src/components/ColorPicker/ColorSlider/ColorSlider.tsx"],"sourcesContent":["import { use, useRef, useState } from 'react';\nimport {\n clampUseMovePosition,\n useDidUpdate,\n useMergedRef,\n useMove,\n UseMovePosition,\n} from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineSize,\n rem,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '../../../core';\nimport { ColorPickerContext } from '../ColorPicker.context';\nimport { Thumb } from '../Thumb/Thumb';\nimport classes from '../ColorPicker.module.css';\n\nexport type ColorSliderStylesNames = 'slider' | 'sliderOverlay' | 'thumb';\n\nexport interface __ColorSliderProps extends ElementProps<'div', 'onChange'> {\n /** Controlled component value */\n value: number;\n\n /** Called when value changes */\n onChange?: (value: number) => void;\n\n /** Called when user stops dragging the slider or uses keyboard to change value */\n onChangeEnd?: (value: number) => void;\n\n /** Called when user starts dragging the slider */\n onScrubStart?: () => void;\n\n /** Called when user stops dragging the slider */\n onScrubEnd?: () => void;\n\n /** Slider size @default 'md' */\n size?: MantineSize | (string & {});\n\n /** If set, slider thumb can be focused @default true */\n focusable?: boolean;\n}\n\nexport interface ColorSliderProps\n extends\n BoxProps,\n StylesApiProps<ColorSliderFactory>,\n __ColorSliderProps,\n ElementProps<'div', 'onChange'> {\n __staticSelector?: string;\n maxValue: number;\n overlays: React.CSSProperties[];\n round: boolean;\n thumbColor?: string;\n}\n\nexport type ColorSliderOptions = Omit<\n ColorSliderProps,\n 'maxValue' | 'overlays' | 'round' | 'thumbColor'\n>;\n\nexport type ColorSliderFactory = Factory<{\n props: ColorSliderProps;\n ref: HTMLDivElement;\n stylesNames: ColorSliderStylesNames;\n}>;\n\nexport const ColorSlider = factory<ColorSliderFactory>((_props) => {\n const props = useProps('ColorSlider', null, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n onChange,\n onChangeEnd,\n maxValue,\n round,\n size = 'md',\n focusable = true,\n value,\n overlays,\n thumbColor = 'transparent',\n onScrubStart,\n onScrubEnd,\n __staticSelector = 'ColorPicker',\n attributes,\n ref,\n ...others\n } = props;\n\n const _getStyles = useStyles<ColorSliderFactory>({\n name: __staticSelector,\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n rootSelector: 'slider',\n });\n\n const ctxGetStyles = use(ColorPickerContext)?.getStyles;\n const getStyles = ctxGetStyles || _getStyles;\n\n const theme = useMantineTheme();\n const [position, setPosition] = useState({ y: 0, x: value / maxValue });\n const positionRef = useRef(position);\n const getChangeValue = (val: number) => (round ? Math.round(val * maxValue) : val * maxValue);\n const { ref: sliderRef } = useMove(\n ({ x, y }) => {\n positionRef.current = { x, y };\n onChange?.(getChangeValue(x));\n },\n {\n onScrubEnd: () => {\n const { x } = positionRef.current;\n onChangeEnd?.(getChangeValue(x));\n onScrubEnd?.();\n },\n onScrubStart,\n }\n );\n\n useDidUpdate(() => {\n setPosition({ y: 0, x: value / maxValue });\n }, [value]);\n\n const handleArrow = (event: React.KeyboardEvent<HTMLDivElement>, pos: UseMovePosition) => {\n event.preventDefault();\n const _position = clampUseMovePosition(pos);\n onChange?.(getChangeValue(_position.x));\n onChangeEnd?.(getChangeValue(_position.x));\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowRight': {\n handleArrow(event, { x: position.x + 0.05, y: position.y });\n break;\n }\n\n case 'ArrowLeft': {\n handleArrow(event, { x: position.x - 0.05, y: position.y });\n break;\n }\n }\n };\n\n const layers = overlays.map((overlay, index) => (\n <div {...getStyles('sliderOverlay')} style={overlay} key={index} />\n ));\n\n return (\n <Box\n {...others}\n ref={useMergedRef(sliderRef, ref)}\n {...getStyles('slider')}\n size={size}\n role=\"slider\"\n aria-valuenow={value}\n aria-valuemax={maxValue}\n aria-valuemin={0}\n tabIndex={focusable ? 0 : -1}\n onKeyDown={handleKeyDown}\n data-focus-ring={theme.focusRing}\n __vars={{\n '--cp-thumb-size': `var(--cp-thumb-size-${size})`,\n }}\n >\n {layers}\n\n <Thumb\n position={position}\n {...getStyles('thumb', { style: { top: rem(1), background: thumbColor } })}\n />\n </Box>\n );\n});\n\nColorSlider.displayName = '@mantine/core/ColorSlider';\nColorSlider.classes = classes;\n"],"mappings":";;;;;;;;;;;;;;AA0EA,MAAa,cAAc,SAA6B,WAAW;CACjE,MAAM,QAAQ,SAAS,eAAe,MAAM,MAAM;CAClD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,aACA,UACA,OACA,OAAO,MACP,YAAY,MACZ,OACA,UACA,aAAa,eACb,cACA,YACA,mBAAmB,eACnB,YACA,KACA,GAAG,WACD;CAEJ,MAAM,aAAa,UAA8B;EAC/C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAGD,MAAM,YADe,IAAI,kBAAkB,CAAC,EAAE,aACZ;CAElC,MAAM,QAAQ,gBAAgB;CAC9B,MAAM,CAAC,UAAU,eAAe,SAAS;EAAE,GAAG;EAAG,GAAG,QAAQ;CAAS,CAAC;CACtE,MAAM,cAAc,OAAO,QAAQ;CACnC,MAAM,kBAAkB,QAAiB,QAAQ,KAAK,MAAM,MAAM,QAAQ,IAAI,MAAM;CACpF,MAAM,EAAE,KAAK,cAAc,SACxB,EAAE,GAAG,QAAQ;EACZ,YAAY,UAAU;GAAE;GAAG;EAAE;EAC7B,WAAW,eAAe,CAAC,CAAC;CAC9B,GACA;EACE,kBAAkB;GAChB,MAAM,EAAE,MAAM,YAAY;GAC1B,cAAc,eAAe,CAAC,CAAC;GAC/B,aAAa;EACf;EACA;CACF,CACF;CAEA,mBAAmB;EACjB,YAAY;GAAE,GAAG;GAAG,GAAG,QAAQ;EAAS,CAAC;CAC3C,GAAG,CAAC,KAAK,CAAC;CAEV,MAAM,eAAe,OAA4C,QAAyB;EACxF,MAAM,eAAe;EACrB,MAAM,YAAY,qBAAqB,GAAG;EAC1C,WAAW,eAAe,UAAU,CAAC,CAAC;EACtC,cAAc,eAAe,UAAU,CAAC,CAAC;CAC3C;CAEA,MAAM,iBAAiB,UAA+C;EACpE,QAAQ,MAAM,KAAd;GACE,KAAK;IACH,YAAY,OAAO;KAAE,GAAG,SAAS,IAAI;KAAM,GAAG,SAAS;IAAE,CAAC;IAC1D;GAGF,KAAK;IACH,YAAY,OAAO;KAAE,GAAG,SAAS,IAAI;KAAM,GAAG,SAAS;IAAE,CAAC;IAC1D;EAEJ;CACF;CAEA,MAAM,SAAS,SAAS,KAAK,SAAS,UACpC,8BAAC,OAAD;EAAK,GAAI,UAAU,eAAe;EAAG,OAAO;EAAS,KAAK;CAAQ,CAAA,CACnE;CAED,OACE,qBAAC,KAAD;EACE,GAAI;EACJ,KAAK,aAAa,WAAW,GAAG;EAChC,GAAI,UAAU,QAAQ;EAChB;EACN,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,UAAU,YAAY,IAAI;EAC1B,WAAW;EACX,mBAAiB,MAAM;EACvB,QAAQ,EACN,mBAAmB,uBAAuB,KAAK,GACjD;YAdF,CAgBG,QAED,oBAAC,OAAD;GACY;GACV,GAAI,UAAU,SAAS,EAAE,OAAO;IAAE,KAAK,IAAI,CAAC;IAAG,YAAY;GAAW,EAAE,CAAC;EAC1E,CAAA,CACE;;AAET,CAAC;AAED,YAAY,cAAc;AAC1B,YAAY,UAAUA"}
@@ -1 +1 @@
1
- {"version":3,"file":"converters.mjs","names":[],"sources":["../../../../src/components/ColorPicker/converters/converters.ts"],"sourcesContent":["import { ColorFormat, HsvaColor, RgbaColor } from '../ColorPicker.types';\nimport { round } from './parsers';\n\nexport function hsvaToRgbaObject({ h, s, v, a }: HsvaColor): RgbaColor {\n const _h = (h / 360) * 6;\n const _s = s / 100;\n const _v = v / 100;\n\n const hh = Math.floor(_h);\n const l = _v * (1 - _s);\n const c = _v * (1 - (_h - hh) * _s);\n const d = _v * (1 - (1 - _h + hh) * _s);\n const module = hh % 6;\n\n return {\n r: round([_v, c, l, l, d, _v][module] * 255),\n g: round([d, _v, _v, c, l, l][module] * 255),\n b: round([l, l, d, _v, _v, c][module] * 255),\n a: round(a, 2),\n };\n}\n\nexport function hsvaToRgba(color: HsvaColor, includeAlpha: boolean) {\n const { r, g, b, a } = hsvaToRgbaObject(color);\n\n if (!includeAlpha) {\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n return `rgba(${r}, ${g}, ${b}, ${round(a, 2)})`;\n}\n\nexport function hsvaToHsl({ h, s, v, a }: HsvaColor, includeAlpha: boolean) {\n const hh = ((200 - s) * v) / 100;\n\n const result = {\n h: Math.round(h),\n s: Math.round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: Math.round(hh / 2),\n };\n\n if (!includeAlpha) {\n return `hsl(${result.h}, ${result.s}%, ${result.l}%)`;\n }\n\n return `hsla(${result.h}, ${result.s}%, ${result.l}%, ${round(a, 2)})`;\n}\n\nfunction formatHexPart(number: number) {\n const hex = number.toString(16);\n return hex.length < 2 ? `0${hex}` : hex;\n}\n\nexport function hsvaToHex(color: HsvaColor) {\n const { r, g, b } = hsvaToRgbaObject(color);\n return `#${formatHexPart(r)}${formatHexPart(g)}${formatHexPart(b)}`;\n}\n\nexport function hsvaToHexa(color: HsvaColor) {\n const a = Math.round(color.a * 255);\n\n return `${hsvaToHex(color)}${formatHexPart(a)}`;\n}\n\nconst CONVERTERS: Record<ColorFormat, (color: HsvaColor) => string> = {\n hex: hsvaToHex,\n hexa: (color) => hsvaToHexa(color),\n rgb: (color) => hsvaToRgba(color, false),\n rgba: (color) => hsvaToRgba(color, true),\n hsl: (color) => hsvaToHsl(color, false),\n hsla: (color) => hsvaToHsl(color, true),\n};\n\nexport function convertHsvaTo(format: ColorFormat, color: HsvaColor) {\n if (!color) {\n return '#000000';\n }\n\n if (!(format in CONVERTERS)) {\n return CONVERTERS.hex(color);\n }\n\n return CONVERTERS[format](color);\n}\n"],"mappings":";;;AAGA,SAAgB,iBAAiB,EAAE,GAAG,GAAG,GAAG,KAA2B;CACrE,MAAM,KAAM,IAAI,MAAO;CACvB,MAAM,KAAK,IAAI;CACf,MAAM,KAAK,IAAI;CAEf,MAAM,KAAK,KAAK,MAAM,EAAE;CACxB,MAAM,IAAI,MAAM,IAAI;CACpB,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM;CAChC,MAAM,IAAI,MAAM,KAAK,IAAI,KAAK,MAAM;CACpC,MAAM,SAAS,KAAK;CAEpB,OAAO;EACL,GAAG,MAAM;GAAC;GAAI;GAAG;GAAG;GAAG;GAAG;EAAE,EAAE,UAAU,GAAG;EAC3C,GAAG,MAAM;GAAC;GAAG;GAAI;GAAI;GAAG;GAAG;EAAC,EAAE,UAAU,GAAG;EAC3C,GAAG,MAAM;GAAC;GAAG;GAAG;GAAG;GAAI;GAAI;EAAC,EAAE,UAAU,GAAG;EAC3C,GAAG,MAAM,GAAG,CAAC;CACf;AACF;AAEA,SAAgB,WAAW,OAAkB,cAAuB;CAClE,MAAM,EAAE,GAAG,GAAG,GAAG,MAAM,iBAAiB,KAAK;CAE7C,IAAI,CAAC,cACH,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;CAG9B,OAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;AAC/C;AAEA,SAAgB,UAAU,EAAE,GAAG,GAAG,GAAG,KAAgB,cAAuB;CAC1E,MAAM,MAAO,MAAM,KAAK,IAAK;CAE7B,MAAM,SAAS;EACb,GAAG,KAAK,MAAM,CAAC;EACf,GAAG,KAAK,MAAM,KAAK,KAAK,KAAK,MAAQ,IAAI,IAAK,OAAO,MAAM,MAAM,KAAK,MAAM,MAAO,MAAM,CAAC;EAC1F,GAAG,KAAK,MAAM,KAAK,CAAC;CACtB;CAEA,IAAI,CAAC,cACH,OAAO,OAAO,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,OAAO,EAAE;CAGpD,OAAO,QAAQ,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,GAAG,CAAC,EAAE;AACtE;AAEA,SAAS,cAAc,QAAgB;CACrC,MAAM,MAAM,OAAO,SAAS,EAAE;CAC9B,OAAO,IAAI,SAAS,IAAI,IAAI,QAAQ;AACtC;AAEA,SAAgB,UAAU,OAAkB;CAC1C,MAAM,EAAE,GAAG,GAAG,MAAM,iBAAiB,KAAK;CAC1C,OAAO,IAAI,cAAc,CAAC,IAAI,cAAc,CAAC,IAAI,cAAc,CAAC;AAClE;AAEA,SAAgB,WAAW,OAAkB;CAC3C,MAAM,IAAI,KAAK,MAAM,MAAM,IAAI,GAAG;CAElC,OAAO,GAAG,UAAU,KAAK,IAAI,cAAc,CAAC;AAC9C;AAEA,MAAM,aAAgE;CACpE,KAAK;CACL,OAAO,UAAU,WAAW,KAAK;CACjC,MAAM,UAAU,WAAW,OAAO,KAAK;CACvC,OAAO,UAAU,WAAW,OAAO,IAAI;CACvC,MAAM,UAAU,UAAU,OAAO,KAAK;CACtC,OAAO,UAAU,UAAU,OAAO,IAAI;AACxC;AAEA,SAAgB,cAAc,QAAqB,OAAkB;CACnE,IAAI,CAAC,OACH,OAAO;CAGT,IAAI,EAAE,UAAU,aACd,OAAO,WAAW,IAAI,KAAK;CAG7B,OAAO,WAAW,QAAQ,KAAK;AACjC"}
1
+ {"version":3,"file":"converters.mjs","names":[],"sources":["../../../../src/components/ColorPicker/converters/converters.ts"],"sourcesContent":["import { ColorFormat, HsvaColor, RgbaColor } from '../ColorPicker.types';\nimport { round } from './parsers';\n\nexport function hsvaToRgbaObject({ h, s, v, a }: HsvaColor): RgbaColor {\n const _h = (h / 360) * 6;\n const _s = s / 100;\n const _v = v / 100;\n\n const hh = Math.floor(_h);\n const l = _v * (1 - _s);\n const c = _v * (1 - (_h - hh) * _s);\n const d = _v * (1 - (1 - _h + hh) * _s);\n const module = hh % 6;\n\n return {\n r: round([_v, c, l, l, d, _v][module] * 255),\n g: round([d, _v, _v, c, l, l][module] * 255),\n b: round([l, l, d, _v, _v, c][module] * 255),\n a: round(a, 2),\n };\n}\n\nexport function hsvaToRgba(color: HsvaColor, includeAlpha: boolean) {\n const { r, g, b, a } = hsvaToRgbaObject(color);\n\n if (!includeAlpha) {\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n return `rgba(${r}, ${g}, ${b}, ${round(a, 2)})`;\n}\n\nexport function hsvaToHsl({ h, s, v, a }: HsvaColor, includeAlpha: boolean) {\n const hh = ((200 - s) * v) / 100;\n\n const result = {\n h: Math.round(h),\n s: Math.round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: Math.round(hh / 2),\n };\n\n if (!includeAlpha) {\n return `hsl(${result.h}, ${result.s}%, ${result.l}%)`;\n }\n\n return `hsla(${result.h}, ${result.s}%, ${result.l}%, ${round(a, 2)})`;\n}\n\nfunction formatHexPart(number: number) {\n const hex = number.toString(16);\n return hex.length < 2 ? `0${hex}` : hex;\n}\n\nexport function hsvaToHex(color: HsvaColor) {\n const { r, g, b } = hsvaToRgbaObject(color);\n return `#${formatHexPart(r)}${formatHexPart(g)}${formatHexPart(b)}`;\n}\n\nexport function hsvaToHexa(color: HsvaColor) {\n const a = Math.round(color.a * 255);\n\n return `${hsvaToHex(color)}${formatHexPart(a)}`;\n}\n\nconst CONVERTERS: Record<ColorFormat, (color: HsvaColor) => string> = {\n hex: hsvaToHex,\n hexa: (color) => hsvaToHexa(color),\n rgb: (color) => hsvaToRgba(color, false),\n rgba: (color) => hsvaToRgba(color, true),\n hsl: (color) => hsvaToHsl(color, false),\n hsla: (color) => hsvaToHsl(color, true),\n};\n\nexport function convertHsvaTo(format: ColorFormat, color: HsvaColor) {\n if (!color) {\n return '#000000';\n }\n\n if (!(format in CONVERTERS)) {\n return CONVERTERS.hex(color);\n }\n\n return CONVERTERS[format](color);\n}\n"],"mappings":";;;AAGA,SAAgB,iBAAiB,EAAE,GAAG,GAAG,GAAG,KAA2B;CACrE,MAAM,KAAM,IAAI,MAAO;CACvB,MAAM,KAAK,IAAI;CACf,MAAM,KAAK,IAAI;CAEf,MAAM,KAAK,KAAK,MAAM,EAAE;CACxB,MAAM,IAAI,MAAM,IAAI;CACpB,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM;CAChC,MAAM,IAAI,MAAM,KAAK,IAAI,KAAK,MAAM;CACpC,MAAM,SAAS,KAAK;CAEpB,OAAO;EACL,GAAG,MAAM;GAAC;GAAI;GAAG;GAAG;GAAG;GAAG;EAAE,CAAC,CAAC,UAAU,GAAG;EAC3C,GAAG,MAAM;GAAC;GAAG;GAAI;GAAI;GAAG;GAAG;EAAC,CAAC,CAAC,UAAU,GAAG;EAC3C,GAAG,MAAM;GAAC;GAAG;GAAG;GAAG;GAAI;GAAI;EAAC,CAAC,CAAC,UAAU,GAAG;EAC3C,GAAG,MAAM,GAAG,CAAC;CACf;AACF;AAEA,SAAgB,WAAW,OAAkB,cAAuB;CAClE,MAAM,EAAE,GAAG,GAAG,GAAG,MAAM,iBAAiB,KAAK;CAE7C,IAAI,CAAC,cACH,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;CAG9B,OAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;AAC/C;AAEA,SAAgB,UAAU,EAAE,GAAG,GAAG,GAAG,KAAgB,cAAuB;CAC1E,MAAM,MAAO,MAAM,KAAK,IAAK;CAE7B,MAAM,SAAS;EACb,GAAG,KAAK,MAAM,CAAC;EACf,GAAG,KAAK,MAAM,KAAK,KAAK,KAAK,MAAQ,IAAI,IAAK,OAAO,MAAM,MAAM,KAAK,MAAM,MAAO,MAAM,CAAC;EAC1F,GAAG,KAAK,MAAM,KAAK,CAAC;CACtB;CAEA,IAAI,CAAC,cACH,OAAO,OAAO,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,OAAO,EAAE;CAGpD,OAAO,QAAQ,OAAO,EAAE,IAAI,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,GAAG,CAAC,EAAE;AACtE;AAEA,SAAS,cAAc,QAAgB;CACrC,MAAM,MAAM,OAAO,SAAS,EAAE;CAC9B,OAAO,IAAI,SAAS,IAAI,IAAI,QAAQ;AACtC;AAEA,SAAgB,UAAU,OAAkB;CAC1C,MAAM,EAAE,GAAG,GAAG,MAAM,iBAAiB,KAAK;CAC1C,OAAO,IAAI,cAAc,CAAC,IAAI,cAAc,CAAC,IAAI,cAAc,CAAC;AAClE;AAEA,SAAgB,WAAW,OAAkB;CAC3C,MAAM,IAAI,KAAK,MAAM,MAAM,IAAI,GAAG;CAElC,OAAO,GAAG,UAAU,KAAK,IAAI,cAAc,CAAC;AAC9C;AAEA,MAAM,aAAgE;CACpE,KAAK;CACL,OAAO,UAAU,WAAW,KAAK;CACjC,MAAM,UAAU,WAAW,OAAO,KAAK;CACvC,OAAO,UAAU,WAAW,OAAO,IAAI;CACvC,MAAM,UAAU,UAAU,OAAO,KAAK;CACtC,OAAO,UAAU,UAAU,OAAO,IAAI;AACxC;AAEA,SAAgB,cAAc,QAAqB,OAAkB;CACnE,IAAI,CAAC,OACH,OAAO;CAGT,IAAI,EAAE,UAAU,aACd,OAAO,WAAW,IAAI,KAAK;CAG7B,OAAO,WAAW,OAAO,CAAC,KAAK;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.mjs","names":[],"sources":["../../../../src/components/ColorPicker/converters/parsers.ts"],"sourcesContent":["import { ColorFormat, HslaColor, HsvaColor, RgbaColor } from '../ColorPicker.types';\n\nexport function round(number: number, digits = 0, base = 10 ** digits) {\n return Math.round(base * number) / base;\n}\n\nfunction hslaToHsva({ h, s, l, a }: HslaColor): HsvaColor {\n const ss = s * ((l < 50 ? l : 100 - l) / 100);\n\n return {\n h,\n s: ss > 0 ? ((2 * ss) / (l + ss)) * 100 : 0,\n v: l + ss,\n a,\n };\n}\n\nconst angleUnits: Record<string, number> = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport function parseHue(value: string, unit = 'deg') {\n return Number(value) * (angleUnits[unit] || 1);\n}\n\nconst HSL_REGEXP =\n /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n\nexport function parseHsla(color: string): HsvaColor {\n const match = HSL_REGEXP.exec(color);\n\n if (!match) {\n return { h: 0, s: 0, v: 0, a: 1 };\n }\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n}\n\nfunction rgbaToHsva({ r, g, b, a }: RgbaColor): HsvaColor {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh), 3),\n s: round(max ? (delta / max) * 100 : 0, 3),\n v: round((max / 255) * 100, 3),\n a,\n };\n}\n\nexport function parseHex(color: string): HsvaColor {\n const hex = color[0] === '#' ? color.slice(1) : color;\n\n if (hex.length === 3) {\n return rgbaToHsva({\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: 1,\n });\n }\n\n return rgbaToHsva({\n r: parseInt(hex.slice(0, 2), 16),\n g: parseInt(hex.slice(2, 4), 16),\n b: parseInt(hex.slice(4, 6), 16),\n a: 1,\n });\n}\n\nexport function parseHexa(color: string): HsvaColor {\n const hex = color[0] === '#' ? color.slice(1) : color;\n\n const roundA = (a: string) => round(parseInt(a, 16) / 255, 3);\n if (hex.length === 4) {\n const withoutOpacity = hex.slice(0, 3);\n const a = roundA(hex[3] + hex[3]);\n\n const hsvaColor: HsvaColor = { ...parseHex(withoutOpacity), a };\n return hsvaColor;\n }\n\n const withoutOpacity = hex.slice(0, 6);\n const a = roundA(hex.slice(6, 8));\n const hsvaColor: HsvaColor = { ...parseHex(withoutOpacity), a };\n return hsvaColor;\n}\n\nconst RGB_REGEXP =\n /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n\nexport function parseRgba(color: string): HsvaColor {\n const match = RGB_REGEXP.exec(color);\n\n if (!match) {\n return { h: 0, s: 0, v: 0, a: 1 };\n }\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n}\n\nconst VALIDATION_REGEXP: Record<ColorFormat, RegExp> = {\n hex: /^#?([0-9A-F]{3}){1,2}$/i,\n hexa: /^#?([0-9A-F]{4}){1,2}$/i,\n rgb: /^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/i,\n rgba: /^rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/i,\n hsl: /hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\)/i,\n hsla: /^hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*(\\d*(?:\\.\\d+)?)\\)$/i,\n};\n\nconst CONVERTERS: Record<ColorFormat, (color: string) => HsvaColor> = {\n hex: parseHex,\n hexa: parseHexa,\n rgb: parseRgba,\n rgba: parseRgba,\n hsl: parseHsla,\n hsla: parseHsla,\n};\n\nexport function isColorValid(color: string) {\n for (const [, regexp] of Object.entries(VALIDATION_REGEXP)) {\n if (regexp.test(color)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function parseColor(color: string): HsvaColor {\n if (typeof color !== 'string') {\n return { h: 0, s: 0, v: 0, a: 1 };\n }\n\n if (color === 'transparent') {\n return { h: 0, s: 0, v: 0, a: 0 };\n }\n\n const trimmed = color.trim();\n\n for (const [rule, regexp] of Object.entries(VALIDATION_REGEXP)) {\n if (regexp.test(trimmed)) {\n return CONVERTERS[rule as keyof typeof CONVERTERS](trimmed);\n }\n }\n\n return { h: 0, s: 0, v: 0, a: 1 };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parsers.mjs","names":[],"sources":["../../../../src/components/ColorPicker/converters/parsers.ts"],"sourcesContent":["import { ColorFormat, HslaColor, HsvaColor, RgbaColor } from '../ColorPicker.types';\n\nexport function round(number: number, digits = 0, base = 10 ** digits) {\n return Math.round(base * number) / base;\n}\n\nfunction hslaToHsva({ h, s, l, a }: HslaColor): HsvaColor {\n const ss = s * ((l < 50 ? l : 100 - l) / 100);\n\n return {\n h,\n s: ss > 0 ? ((2 * ss) / (l + ss)) * 100 : 0,\n v: l + ss,\n a,\n };\n}\n\nconst angleUnits: Record<string, number> = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport function parseHue(value: string, unit = 'deg') {\n return Number(value) * (angleUnits[unit] || 1);\n}\n\nconst HSL_REGEXP =\n /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n\nexport function parseHsla(color: string): HsvaColor {\n const match = HSL_REGEXP.exec(color);\n\n if (!match) {\n return { h: 0, s: 0, v: 0, a: 1 };\n }\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n}\n\nfunction rgbaToHsva({ r, g, b, a }: RgbaColor): HsvaColor {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh), 3),\n s: round(max ? (delta / max) * 100 : 0, 3),\n v: round((max / 255) * 100, 3),\n a,\n };\n}\n\nexport function parseHex(color: string): HsvaColor {\n const hex = color[0] === '#' ? color.slice(1) : color;\n\n if (hex.length === 3) {\n return rgbaToHsva({\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: 1,\n });\n }\n\n return rgbaToHsva({\n r: parseInt(hex.slice(0, 2), 16),\n g: parseInt(hex.slice(2, 4), 16),\n b: parseInt(hex.slice(4, 6), 16),\n a: 1,\n });\n}\n\nexport function parseHexa(color: string): HsvaColor {\n const hex = color[0] === '#' ? color.slice(1) : color;\n\n const roundA = (a: string) => round(parseInt(a, 16) / 255, 3);\n if (hex.length === 4) {\n const withoutOpacity = hex.slice(0, 3);\n const a = roundA(hex[3] + hex[3]);\n\n const hsvaColor: HsvaColor = { ...parseHex(withoutOpacity), a };\n return hsvaColor;\n }\n\n const withoutOpacity = hex.slice(0, 6);\n const a = roundA(hex.slice(6, 8));\n const hsvaColor: HsvaColor = { ...parseHex(withoutOpacity), a };\n return hsvaColor;\n}\n\nconst RGB_REGEXP =\n /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n\nexport function parseRgba(color: string): HsvaColor {\n const match = RGB_REGEXP.exec(color);\n\n if (!match) {\n return { h: 0, s: 0, v: 0, a: 1 };\n }\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n}\n\nconst VALIDATION_REGEXP: Record<ColorFormat, RegExp> = {\n hex: /^#?([0-9A-F]{3}){1,2}$/i,\n hexa: /^#?([0-9A-F]{4}){1,2}$/i,\n rgb: /^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/i,\n rgba: /^rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/i,\n hsl: /hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\s*,\\s*(\\d+(?:\\.\\d+)?%)\\)/i,\n hsla: /^hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*(\\d*(?:\\.\\d+)?)\\)$/i,\n};\n\nconst CONVERTERS: Record<ColorFormat, (color: string) => HsvaColor> = {\n hex: parseHex,\n hexa: parseHexa,\n rgb: parseRgba,\n rgba: parseRgba,\n hsl: parseHsla,\n hsla: parseHsla,\n};\n\nexport function isColorValid(color: string) {\n for (const [, regexp] of Object.entries(VALIDATION_REGEXP)) {\n if (regexp.test(color)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function parseColor(color: string): HsvaColor {\n if (typeof color !== 'string') {\n return { h: 0, s: 0, v: 0, a: 1 };\n }\n\n if (color === 'transparent') {\n return { h: 0, s: 0, v: 0, a: 0 };\n }\n\n const trimmed = color.trim();\n\n for (const [rule, regexp] of Object.entries(VALIDATION_REGEXP)) {\n if (regexp.test(trimmed)) {\n return CONVERTERS[rule as keyof typeof CONVERTERS](trimmed);\n }\n }\n\n return { h: 0, s: 0, v: 0, a: 1 };\n}\n"],"mappings":"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"}
@@ -26,6 +26,7 @@ import { jsx } from "react/jsx-runtime";
26
26
  //#region packages/@mantine/core/src/components/Combobox/Combobox.tsx
27
27
  const defaultProps = {
28
28
  keepMounted: true,
29
+ keepMountedMode: "display-none",
29
30
  withinPortal: true,
30
31
  resetSelectionOnOptionHover: false,
31
32
  width: "target",
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.mjs","names":["classes"],"sources":["../../../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import {\n createVarsResolver,\n ExtendComponent,\n Factory,\n getFontSize,\n getSize,\n MantineSize,\n MantineThemeComponent,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { __PopoverProps, Popover } from '../Popover';\nimport { PopoverMiddlewares } from '../Popover/Popover.types';\nimport { ComboboxProvider } from './Combobox.context';\nimport { ComboboxChevron, ComboboxChevronProps } from './ComboboxChevron/ComboboxChevron';\nimport {\n ComboboxClearButton,\n ComboboxClearButtonProps,\n} from './ComboboxClearButton/ComboboxClearButton';\nimport { ComboboxDropdown, ComboboxDropdownProps } from './ComboboxDropdown/ComboboxDropdown';\nimport {\n ComboboxDropdownTarget,\n ComboboxDropdownTargetProps,\n} from './ComboboxDropdownTarget/ComboboxDropdownTarget';\nimport { ComboboxEmpty, ComboboxEmptyProps } from './ComboboxEmpty/ComboboxEmpty';\nimport {\n ComboboxEventsTarget,\n ComboboxEventsTargetProps,\n} from './ComboboxEventsTarget/ComboboxEventsTarget';\nimport { ComboboxFooter, ComboboxFooterProps } from './ComboboxFooter/ComboboxFooter';\nimport { ComboboxGroup, ComboboxGroupProps } from './ComboboxGroup/ComboboxGroup';\nimport { ComboboxHeader, ComboboxHeaderProps } from './ComboboxHeader/ComboboxHeader';\nimport {\n ComboboxHiddenInput,\n ComboboxHiddenInputProps,\n} from './ComboboxHiddenInput/ComboboxHiddenInput';\nimport { ComboboxOption, ComboboxOptionProps } from './ComboboxOption/ComboboxOption';\nimport { ComboboxOptions, ComboboxOptionsProps } from './ComboboxOptions/ComboboxOptions';\nimport { ComboboxSearch, ComboboxSearchProps } from './ComboboxSearch/ComboboxSearch';\nimport { ComboboxTarget, ComboboxTargetProps } from './ComboboxTarget/ComboboxTarget';\nimport { ComboboxStore, useCombobox } from './use-combobox/use-combobox';\nimport classes from './Combobox.module.css';\n\nexport type ComboboxStylesNames =\n | 'options'\n | 'dropdown'\n | 'option'\n | 'search'\n | 'empty'\n | 'footer'\n | 'header'\n | 'group'\n | 'groupLabel';\n\nexport type ComboboxCSSVariables = {\n options: '--combobox-option-fz' | '--combobox-option-padding';\n dropdown: '--combobox-padding' | '--combobox-option-fz' | '--combobox-option-padding';\n};\n\nexport interface ComboboxProps extends __PopoverProps, StylesApiProps<ComboboxFactory> {\n __staticSelector?: string;\n\n /** Combobox content */\n children?: React.ReactNode;\n\n /** Combobox store, can be used to control combobox state */\n store?: ComboboxStore;\n\n /** Called when item is selected with the `Enter` key or by clicking it */\n onOptionSubmit?: (value: string, optionProps: ComboboxOptionProps) => void;\n\n /** Controls items `font-size` and `padding` @default 'sm' */\n size?: MantineSize | (string & {});\n\n /** Controls `padding` of the dropdown @default 4 */\n dropdownPadding?: React.CSSProperties['padding'];\n\n /** Determines whether selection should be reset when option is hovered @default false */\n resetSelectionOnOptionHover?: boolean;\n\n /** Determines whether the `Combobox` value can be changed */\n readOnly?: boolean;\n\n /** If set to `'viewport'`, the dropdown grows to fill the available vertical space in the viewport. Disables the `flip` middleware. */\n floatingHeight?: 'viewport';\n}\n\nexport type ComboboxFactory = Factory<{\n props: ComboboxProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxStylesNames;\n vars: ComboboxCSSVariables;\n staticComponents: {\n Target: typeof ComboboxTarget;\n Dropdown: typeof ComboboxDropdown;\n Options: typeof ComboboxOptions;\n Option: typeof ComboboxOption;\n Search: typeof ComboboxSearch;\n Empty: typeof ComboboxEmpty;\n Chevron: typeof ComboboxChevron;\n Footer: typeof ComboboxFooter;\n Header: typeof ComboboxHeader;\n EventsTarget: typeof ComboboxEventsTarget;\n DropdownTarget: typeof ComboboxDropdownTarget;\n Group: typeof ComboboxGroup;\n ClearButton: typeof ComboboxClearButton;\n HiddenInput: typeof ComboboxHiddenInput;\n };\n}>;\n\nconst defaultProps = {\n keepMounted: true,\n withinPortal: true,\n resetSelectionOnOptionHover: false,\n width: 'target',\n transitionProps: { transition: 'fade', duration: 0 },\n size: 'sm',\n} satisfies Partial<ComboboxProps>;\n\nconst varsResolver = createVarsResolver<ComboboxFactory>((_, { size, dropdownPadding }) => ({\n options: {\n '--combobox-option-fz': getFontSize(size),\n '--combobox-option-padding': getSize(size, 'combobox-option-padding'),\n },\n\n dropdown: {\n '--combobox-padding': dropdownPadding === undefined ? undefined : rem(dropdownPadding),\n '--combobox-option-fz': getFontSize(size),\n '--combobox-option-padding': getSize(size, 'combobox-option-padding'),\n },\n}));\n\nexport const Combobox = (_props: ComboboxProps) => {\n const props = useProps('Combobox', defaultProps, _props);\n const {\n classNames,\n styles,\n unstyled,\n children,\n store: controlledStore,\n vars,\n onOptionSubmit,\n onClose,\n size,\n dropdownPadding,\n resetSelectionOnOptionHover,\n __staticSelector,\n readOnly,\n attributes,\n floatingHeight,\n middlewares,\n ...others\n } = props;\n\n const resolvedMiddlewares: PopoverMiddlewares | undefined =\n floatingHeight === 'viewport'\n ? {\n ...middlewares,\n flip: false,\n size: {\n ...(typeof middlewares?.size === 'object' ? middlewares.size : {}),\n padding:\n typeof middlewares?.size === 'object' && middlewares.size.padding !== undefined\n ? middlewares.size.padding\n : 10,\n apply: ({ availableHeight, availableWidth, elements, ...rest }) => {\n elements.floating.style.setProperty(\n '--combobox-floating-max-height',\n `${availableHeight}px`\n );\n const userSize = middlewares?.size;\n if (typeof userSize === 'object' && userSize.apply) {\n userSize.apply({ availableHeight, availableWidth, elements, ...rest });\n } else if (userSize) {\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n }\n },\n },\n }\n : middlewares;\n\n const uncontrolledStore = useCombobox();\n const store = controlledStore || uncontrolledStore;\n\n const getStyles = useStyles<ComboboxFactory>({\n name: __staticSelector || 'Combobox',\n classes,\n props,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const onDropdownClose = () => {\n onClose?.();\n store.closeDropdown();\n };\n\n return (\n <ComboboxProvider\n value={{\n getStyles,\n store,\n onOptionSubmit,\n size,\n resetSelectionOnOptionHover,\n readOnly,\n floatingHeight,\n }}\n >\n <Popover\n opened={store.dropdownOpened}\n {...others}\n middlewares={resolvedMiddlewares}\n onChange={(_opened) => !_opened && onDropdownClose()}\n withRoles={false}\n unstyled={unstyled}\n >\n {children}\n </Popover>\n </ComboboxProvider>\n );\n};\n\nconst extendCombobox = (c: ExtendComponent<ComboboxFactory>): MantineThemeComponent => c;\n\nCombobox.extend = extendCombobox;\nCombobox.classes = classes;\nCombobox.varsResolver = varsResolver;\nCombobox.displayName = '@mantine/core/Combobox';\nCombobox.Target = ComboboxTarget;\nCombobox.Dropdown = ComboboxDropdown;\nCombobox.Options = ComboboxOptions;\nCombobox.Option = ComboboxOption;\nCombobox.Search = ComboboxSearch;\nCombobox.Empty = ComboboxEmpty;\nCombobox.Chevron = ComboboxChevron;\nCombobox.Footer = ComboboxFooter;\nCombobox.Header = ComboboxHeader;\nCombobox.EventsTarget = ComboboxEventsTarget;\nCombobox.DropdownTarget = ComboboxDropdownTarget;\nCombobox.Group = ComboboxGroup;\nCombobox.ClearButton = ComboboxClearButton;\nCombobox.HiddenInput = ComboboxHiddenInput;\n\nexport namespace Combobox {\n export type Props = ComboboxProps;\n export type StylesNames = ComboboxStylesNames;\n export type Factory = ComboboxFactory;\n\n export namespace Dropdown {\n export type Props = ComboboxDropdownProps;\n }\n\n export namespace Options {\n export type Props = ComboboxOptionsProps;\n }\n\n export namespace Option {\n export type Props = ComboboxOptionProps;\n }\n\n export namespace Target {\n export type Props = ComboboxTargetProps;\n }\n\n export namespace Chevron {\n export type Props = ComboboxChevronProps;\n }\n\n export namespace Empty {\n export type Props = ComboboxEmptyProps;\n }\n\n export namespace Search {\n export type Props = ComboboxSearchProps;\n }\n\n export namespace Footer {\n export type Props = ComboboxFooterProps;\n }\n\n export namespace Header {\n export type Props = ComboboxHeaderProps;\n }\n\n export namespace DropdownTarget {\n export type Props = ComboboxDropdownTargetProps;\n }\n\n export namespace EventsTarget {\n export type Props = ComboboxEventsTargetProps;\n }\n\n export namespace Group {\n export type Props = ComboboxGroupProps;\n }\n\n export namespace ClearButton {\n export type Props = ComboboxClearButtonProps;\n }\n\n export namespace HiddenInput {\n export type Props = ComboboxHiddenInputProps;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgHA,MAAM,eAAe;CACnB,aAAa;CACb,cAAc;CACd,6BAA6B;CAC7B,OAAO;CACP,iBAAiB;EAAE,YAAY;EAAQ,UAAU;CAAE;CACnD,MAAM;AACR;AAEA,MAAM,eAAe,oBAAqC,GAAG,EAAE,MAAM,uBAAuB;CAC1F,SAAS;EACP,wBAAwB,YAAY,IAAI;EACxC,6BAA6B,QAAQ,MAAM,yBAAyB;CACtE;CAEA,UAAU;EACR,sBAAsB,oBAAoB,KAAA,IAAY,KAAA,IAAY,IAAI,eAAe;EACrF,wBAAwB,YAAY,IAAI;EACxC,6BAA6B,QAAQ,MAAM,yBAAyB;CACtE;AACF,EAAE;AAEF,MAAa,YAAY,WAA0B;CACjD,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,QACA,UACA,UACA,OAAO,iBACP,MACA,gBACA,SACA,MACA,iBACA,6BACA,kBACA,UACA,YACA,gBACA,aACA,GAAG,WACD;CAEJ,MAAM,sBACJ,mBAAmB,aACf;EACE,GAAG;EACH,MAAM;EACN,MAAM;GACJ,GAAI,OAAO,aAAa,SAAS,WAAW,YAAY,OAAO,CAAC;GAChE,SACE,OAAO,aAAa,SAAS,YAAY,YAAY,KAAK,YAAY,KAAA,IAClE,YAAY,KAAK,UACjB;GACN,QAAQ,EAAE,iBAAiB,gBAAgB,UAAU,GAAG,WAAW;IACjE,SAAS,SAAS,MAAM,YACtB,kCACA,GAAG,gBAAgB,GACrB;IACA,MAAM,WAAW,aAAa;IAC9B,IAAI,OAAO,aAAa,YAAY,SAAS,OAC3C,SAAS,MAAM;KAAE;KAAiB;KAAgB;KAAU,GAAG;IAAK,CAAC;SAChE,IAAI,UACT,OAAO,OAAO,SAAS,SAAS,OAAO;KACrC,UAAU,GAAG,eAAe;KAC5B,WAAW,GAAG,gBAAgB;IAChC,CAAC;GAEL;EACF;CACF,IACA;CAEN,MAAM,oBAAoB,YAAY;CACtC,MAAM,QAAQ,mBAAmB;CAEjC,MAAM,YAAY,UAA2B;EAC3C,MAAM,oBAAoB;EAC1B,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,wBAAwB;EAC5B,UAAU;EACV,MAAM,cAAc;CACtB;CAEA,OACE,oBAAC,kBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;EACF;YAEA,oBAAC,SAAD;GACE,QAAQ,MAAM;GACd,GAAI;GACJ,aAAa;GACb,WAAW,YAAY,CAAC,WAAW,gBAAgB;GACnD,WAAW;GACD;GAET;EACM,CAAA;CACO,CAAA;AAEtB;AAEA,MAAM,kBAAkB,MAA+D;AAEvF,SAAS,SAAS;AAClB,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,SAAS;AAClB,SAAS,WAAW;AACpB,SAAS,UAAU;AACnB,SAAS,SAAS;AAClB,SAAS,SAAS;AAClB,SAAS,QAAQ;AACjB,SAAS,UAAU;AACnB,SAAS,SAAS;AAClB,SAAS,SAAS;AAClB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,QAAQ;AACjB,SAAS,cAAc;AACvB,SAAS,cAAc"}
1
+ {"version":3,"file":"Combobox.mjs","names":["classes"],"sources":["../../../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import {\n createVarsResolver,\n ExtendComponent,\n Factory,\n getFontSize,\n getSize,\n MantineSize,\n MantineThemeComponent,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { __PopoverProps, Popover } from '../Popover';\nimport { PopoverMiddlewares } from '../Popover/Popover.types';\nimport { ComboboxProvider } from './Combobox.context';\nimport { ComboboxChevron, ComboboxChevronProps } from './ComboboxChevron/ComboboxChevron';\nimport {\n ComboboxClearButton,\n ComboboxClearButtonProps,\n} from './ComboboxClearButton/ComboboxClearButton';\nimport { ComboboxDropdown, ComboboxDropdownProps } from './ComboboxDropdown/ComboboxDropdown';\nimport {\n ComboboxDropdownTarget,\n ComboboxDropdownTargetProps,\n} from './ComboboxDropdownTarget/ComboboxDropdownTarget';\nimport { ComboboxEmpty, ComboboxEmptyProps } from './ComboboxEmpty/ComboboxEmpty';\nimport {\n ComboboxEventsTarget,\n ComboboxEventsTargetProps,\n} from './ComboboxEventsTarget/ComboboxEventsTarget';\nimport { ComboboxFooter, ComboboxFooterProps } from './ComboboxFooter/ComboboxFooter';\nimport { ComboboxGroup, ComboboxGroupProps } from './ComboboxGroup/ComboboxGroup';\nimport { ComboboxHeader, ComboboxHeaderProps } from './ComboboxHeader/ComboboxHeader';\nimport {\n ComboboxHiddenInput,\n ComboboxHiddenInputProps,\n} from './ComboboxHiddenInput/ComboboxHiddenInput';\nimport { ComboboxOption, ComboboxOptionProps } from './ComboboxOption/ComboboxOption';\nimport { ComboboxOptions, ComboboxOptionsProps } from './ComboboxOptions/ComboboxOptions';\nimport { ComboboxSearch, ComboboxSearchProps } from './ComboboxSearch/ComboboxSearch';\nimport { ComboboxTarget, ComboboxTargetProps } from './ComboboxTarget/ComboboxTarget';\nimport { ComboboxStore, useCombobox } from './use-combobox/use-combobox';\nimport classes from './Combobox.module.css';\n\nexport type ComboboxStylesNames =\n | 'options'\n | 'dropdown'\n | 'option'\n | 'search'\n | 'empty'\n | 'footer'\n | 'header'\n | 'group'\n | 'groupLabel';\n\nexport type ComboboxCSSVariables = {\n options: '--combobox-option-fz' | '--combobox-option-padding';\n dropdown: '--combobox-padding' | '--combobox-option-fz' | '--combobox-option-padding';\n};\n\nexport interface ComboboxProps extends __PopoverProps, StylesApiProps<ComboboxFactory> {\n __staticSelector?: string;\n\n /** Combobox content */\n children?: React.ReactNode;\n\n /** Combobox store, can be used to control combobox state */\n store?: ComboboxStore;\n\n /** Called when item is selected with the `Enter` key or by clicking it */\n onOptionSubmit?: (value: string, optionProps: ComboboxOptionProps) => void;\n\n /** Controls items `font-size` and `padding` @default 'sm' */\n size?: MantineSize | (string & {});\n\n /** Controls `padding` of the dropdown @default 4 */\n dropdownPadding?: React.CSSProperties['padding'];\n\n /** Determines whether selection should be reset when option is hovered @default false */\n resetSelectionOnOptionHover?: boolean;\n\n /** Determines whether the `Combobox` value can be changed */\n readOnly?: boolean;\n\n /** If set to `'viewport'`, the dropdown grows to fill the available vertical space in the viewport. Disables the `flip` middleware. */\n floatingHeight?: 'viewport';\n}\n\nexport type ComboboxFactory = Factory<{\n props: ComboboxProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxStylesNames;\n vars: ComboboxCSSVariables;\n staticComponents: {\n Target: typeof ComboboxTarget;\n Dropdown: typeof ComboboxDropdown;\n Options: typeof ComboboxOptions;\n Option: typeof ComboboxOption;\n Search: typeof ComboboxSearch;\n Empty: typeof ComboboxEmpty;\n Chevron: typeof ComboboxChevron;\n Footer: typeof ComboboxFooter;\n Header: typeof ComboboxHeader;\n EventsTarget: typeof ComboboxEventsTarget;\n DropdownTarget: typeof ComboboxDropdownTarget;\n Group: typeof ComboboxGroup;\n ClearButton: typeof ComboboxClearButton;\n HiddenInput: typeof ComboboxHiddenInput;\n };\n}>;\n\nconst defaultProps = {\n keepMounted: true,\n keepMountedMode: 'display-none',\n withinPortal: true,\n resetSelectionOnOptionHover: false,\n width: 'target',\n transitionProps: { transition: 'fade', duration: 0 },\n size: 'sm',\n} satisfies Partial<ComboboxProps>;\n\nconst varsResolver = createVarsResolver<ComboboxFactory>((_, { size, dropdownPadding }) => ({\n options: {\n '--combobox-option-fz': getFontSize(size),\n '--combobox-option-padding': getSize(size, 'combobox-option-padding'),\n },\n\n dropdown: {\n '--combobox-padding': dropdownPadding === undefined ? undefined : rem(dropdownPadding),\n '--combobox-option-fz': getFontSize(size),\n '--combobox-option-padding': getSize(size, 'combobox-option-padding'),\n },\n}));\n\nexport const Combobox = (_props: ComboboxProps) => {\n const props = useProps('Combobox', defaultProps, _props);\n const {\n classNames,\n styles,\n unstyled,\n children,\n store: controlledStore,\n vars,\n onOptionSubmit,\n onClose,\n size,\n dropdownPadding,\n resetSelectionOnOptionHover,\n __staticSelector,\n readOnly,\n attributes,\n floatingHeight,\n middlewares,\n ...others\n } = props;\n\n const resolvedMiddlewares: PopoverMiddlewares | undefined =\n floatingHeight === 'viewport'\n ? {\n ...middlewares,\n flip: false,\n size: {\n ...(typeof middlewares?.size === 'object' ? middlewares.size : {}),\n padding:\n typeof middlewares?.size === 'object' && middlewares.size.padding !== undefined\n ? middlewares.size.padding\n : 10,\n apply: ({ availableHeight, availableWidth, elements, ...rest }) => {\n elements.floating.style.setProperty(\n '--combobox-floating-max-height',\n `${availableHeight}px`\n );\n const userSize = middlewares?.size;\n if (typeof userSize === 'object' && userSize.apply) {\n userSize.apply({ availableHeight, availableWidth, elements, ...rest });\n } else if (userSize) {\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n }\n },\n },\n }\n : middlewares;\n\n const uncontrolledStore = useCombobox();\n const store = controlledStore || uncontrolledStore;\n\n const getStyles = useStyles<ComboboxFactory>({\n name: __staticSelector || 'Combobox',\n classes,\n props,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const onDropdownClose = () => {\n onClose?.();\n store.closeDropdown();\n };\n\n return (\n <ComboboxProvider\n value={{\n getStyles,\n store,\n onOptionSubmit,\n size,\n resetSelectionOnOptionHover,\n readOnly,\n floatingHeight,\n }}\n >\n <Popover\n opened={store.dropdownOpened}\n {...others}\n middlewares={resolvedMiddlewares}\n onChange={(_opened) => !_opened && onDropdownClose()}\n withRoles={false}\n unstyled={unstyled}\n >\n {children}\n </Popover>\n </ComboboxProvider>\n );\n};\n\nconst extendCombobox = (c: ExtendComponent<ComboboxFactory>): MantineThemeComponent => c;\n\nCombobox.extend = extendCombobox;\nCombobox.classes = classes;\nCombobox.varsResolver = varsResolver;\nCombobox.displayName = '@mantine/core/Combobox';\nCombobox.Target = ComboboxTarget;\nCombobox.Dropdown = ComboboxDropdown;\nCombobox.Options = ComboboxOptions;\nCombobox.Option = ComboboxOption;\nCombobox.Search = ComboboxSearch;\nCombobox.Empty = ComboboxEmpty;\nCombobox.Chevron = ComboboxChevron;\nCombobox.Footer = ComboboxFooter;\nCombobox.Header = ComboboxHeader;\nCombobox.EventsTarget = ComboboxEventsTarget;\nCombobox.DropdownTarget = ComboboxDropdownTarget;\nCombobox.Group = ComboboxGroup;\nCombobox.ClearButton = ComboboxClearButton;\nCombobox.HiddenInput = ComboboxHiddenInput;\n\nexport namespace Combobox {\n export type Props = ComboboxProps;\n export type StylesNames = ComboboxStylesNames;\n export type Factory = ComboboxFactory;\n\n export namespace Dropdown {\n export type Props = ComboboxDropdownProps;\n }\n\n export namespace Options {\n export type Props = ComboboxOptionsProps;\n }\n\n export namespace Option {\n export type Props = ComboboxOptionProps;\n }\n\n export namespace Target {\n export type Props = ComboboxTargetProps;\n }\n\n export namespace Chevron {\n export type Props = ComboboxChevronProps;\n }\n\n export namespace Empty {\n export type Props = ComboboxEmptyProps;\n }\n\n export namespace Search {\n export type Props = ComboboxSearchProps;\n }\n\n export namespace Footer {\n export type Props = ComboboxFooterProps;\n }\n\n export namespace Header {\n export type Props = ComboboxHeaderProps;\n }\n\n export namespace DropdownTarget {\n export type Props = ComboboxDropdownTargetProps;\n }\n\n export namespace EventsTarget {\n export type Props = ComboboxEventsTargetProps;\n }\n\n export namespace Group {\n export type Props = ComboboxGroupProps;\n }\n\n export namespace ClearButton {\n export type Props = ComboboxClearButtonProps;\n }\n\n export namespace HiddenInput {\n export type Props = ComboboxHiddenInputProps;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgHA,MAAM,eAAe;CACnB,aAAa;CACb,iBAAiB;CACjB,cAAc;CACd,6BAA6B;CAC7B,OAAO;CACP,iBAAiB;EAAE,YAAY;EAAQ,UAAU;CAAE;CACnD,MAAM;AACR;AAEA,MAAM,eAAe,oBAAqC,GAAG,EAAE,MAAM,uBAAuB;CAC1F,SAAS;EACP,wBAAwB,YAAY,IAAI;EACxC,6BAA6B,QAAQ,MAAM,yBAAyB;CACtE;CAEA,UAAU;EACR,sBAAsB,oBAAoB,KAAA,IAAY,KAAA,IAAY,IAAI,eAAe;EACrF,wBAAwB,YAAY,IAAI;EACxC,6BAA6B,QAAQ,MAAM,yBAAyB;CACtE;AACF,EAAE;AAEF,MAAa,YAAY,WAA0B;CACjD,MAAM,QAAQ,SAAS,YAAY,cAAc,MAAM;CACvD,MAAM,EACJ,YACA,QACA,UACA,UACA,OAAO,iBACP,MACA,gBACA,SACA,MACA,iBACA,6BACA,kBACA,UACA,YACA,gBACA,aACA,GAAG,WACD;CAEJ,MAAM,sBACJ,mBAAmB,aACf;EACE,GAAG;EACH,MAAM;EACN,MAAM;GACJ,GAAI,OAAO,aAAa,SAAS,WAAW,YAAY,OAAO,CAAC;GAChE,SACE,OAAO,aAAa,SAAS,YAAY,YAAY,KAAK,YAAY,KAAA,IAClE,YAAY,KAAK,UACjB;GACN,QAAQ,EAAE,iBAAiB,gBAAgB,UAAU,GAAG,WAAW;IACjE,SAAS,SAAS,MAAM,YACtB,kCACA,GAAG,gBAAgB,GACrB;IACA,MAAM,WAAW,aAAa;IAC9B,IAAI,OAAO,aAAa,YAAY,SAAS,OAC3C,SAAS,MAAM;KAAE;KAAiB;KAAgB;KAAU,GAAG;IAAK,CAAC;SAChE,IAAI,UACT,OAAO,OAAO,SAAS,SAAS,OAAO;KACrC,UAAU,GAAG,eAAe;KAC5B,WAAW,GAAG,gBAAgB;IAChC,CAAC;GAEL;EACF;CACF,IACA;CAEN,MAAM,oBAAoB,YAAY;CACtC,MAAM,QAAQ,mBAAmB;CAEjC,MAAM,YAAY,UAA2B;EAC3C,MAAM,oBAAoB;EAC1B,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,wBAAwB;EAC5B,UAAU;EACV,MAAM,cAAc;CACtB;CAEA,OACE,oBAAC,kBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;EACF;YAEA,oBAAC,SAAD;GACE,QAAQ,MAAM;GACd,GAAI;GACJ,aAAa;GACb,WAAW,YAAY,CAAC,WAAW,gBAAgB;GACnD,WAAW;GACD;GAET;EACM,CAAA;CACO,CAAA;AAEtB;AAEA,MAAM,kBAAkB,MAA+D;AAEvF,SAAS,SAAS;AAClB,SAAS,UAAUA;AACnB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,SAAS;AAClB,SAAS,WAAW;AACpB,SAAS,UAAU;AACnB,SAAS,SAAS;AAClB,SAAS,SAAS;AAClB,SAAS,QAAQ;AACjB,SAAS,UAAU;AACnB,SAAS,SAAS;AAClB,SAAS,SAAS;AAClB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,QAAQ;AACjB,SAAS,cAAc;AACvB,SAAS,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxEmpty.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxEmpty/ComboboxEmpty.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxEmptyStylesNames = 'empty';\n\nexport interface ComboboxEmptyProps\n extends BoxProps, CompoundStylesApiProps<ComboboxEmptyFactory>, ElementProps<'div'> {}\n\nexport type ComboboxEmptyFactory = Factory<{\n props: ComboboxEmptyProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxEmptyStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxEmpty = factory<ComboboxEmptyFactory>((props) => {\n const { classNames, className, style, styles, vars, ...others } = useProps(\n 'ComboboxEmpty',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n\n return <Box {...ctx.getStyles('empty', { className, classNames, styles, style })} {...others} />;\n});\n\nComboboxEmpty.classes = classes;\nComboboxEmpty.displayName = '@mantine/core/ComboboxEmpty';\n"],"mappings":";;;;;;;;AAwBA,MAAa,gBAAgB,SAA+B,UAAU;CACpE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,GAAG,WAAW,SAChE,iBACA,MACA,KACF;CAIA,OAAO,oBAAC,KAAD;EAAK,GAFA,mBAEM,EAAE,UAAU,SAAS;GAAE;GAAW;GAAY;GAAQ;EAAM,CAAC;EAAG,GAAI;CAAS,CAAA;AACjG,CAAC;AAED,cAAc,UAAUA;AACxB,cAAc,cAAc"}
1
+ {"version":3,"file":"ComboboxEmpty.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxEmpty/ComboboxEmpty.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxEmptyStylesNames = 'empty';\n\nexport interface ComboboxEmptyProps\n extends BoxProps, CompoundStylesApiProps<ComboboxEmptyFactory>, ElementProps<'div'> {}\n\nexport type ComboboxEmptyFactory = Factory<{\n props: ComboboxEmptyProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxEmptyStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxEmpty = factory<ComboboxEmptyFactory>((props) => {\n const { classNames, className, style, styles, vars, ...others } = useProps(\n 'ComboboxEmpty',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n\n return <Box {...ctx.getStyles('empty', { className, classNames, styles, style })} {...others} />;\n});\n\nComboboxEmpty.classes = classes;\nComboboxEmpty.displayName = '@mantine/core/ComboboxEmpty';\n"],"mappings":";;;;;;;;AAwBA,MAAa,gBAAgB,SAA+B,UAAU;CACpE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,GAAG,WAAW,SAChE,iBACA,MACA,KACF;CAIA,OAAO,oBAAC,KAAD;EAAK,GAFA,mBAEM,CAAC,CAAC,UAAU,SAAS;GAAE;GAAW;GAAY;GAAQ;EAAM,CAAC;EAAG,GAAI;CAAS,CAAA;AACjG,CAAC;AAED,cAAc,UAAUA;AACxB,cAAc,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxFooter.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxFooter/ComboboxFooter.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxFooterStylesNames = 'footer';\n\nexport interface ComboboxFooterProps\n extends BoxProps, CompoundStylesApiProps<ComboboxFooterFactory>, ElementProps<'div'> {}\n\nexport type ComboboxFooterFactory = Factory<{\n props: ComboboxFooterProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxFooterStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxFooter = factory<ComboboxFooterFactory>((props) => {\n const { classNames, className, style, styles, vars, ...others } = useProps(\n 'ComboboxFooter',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n\n return (\n <Box\n {...ctx.getStyles('footer', { className, classNames, style, styles })}\n {...others}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n />\n );\n});\n\nComboboxFooter.classes = classes;\nComboboxFooter.displayName = '@mantine/core/ComboboxFooter';\n"],"mappings":";;;;;;;;AAwBA,MAAa,iBAAiB,SAAgC,UAAU;CACtE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,GAAG,WAAW,SAChE,kBACA,MACA,KACF;CAIA,OACE,oBAAC,KAAD;EACE,GAJQ,mBAIF,EAAE,UAAU,UAAU;GAAE;GAAW;GAAY;GAAO;EAAO,CAAC;EACpE,GAAI;EACJ,cAAc,UAAU;GACtB,MAAM,eAAe;EACvB;CACD,CAAA;AAEL,CAAC;AAED,eAAe,UAAUA;AACzB,eAAe,cAAc"}
1
+ {"version":3,"file":"ComboboxFooter.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxFooter/ComboboxFooter.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxFooterStylesNames = 'footer';\n\nexport interface ComboboxFooterProps\n extends BoxProps, CompoundStylesApiProps<ComboboxFooterFactory>, ElementProps<'div'> {}\n\nexport type ComboboxFooterFactory = Factory<{\n props: ComboboxFooterProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxFooterStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxFooter = factory<ComboboxFooterFactory>((props) => {\n const { classNames, className, style, styles, vars, ...others } = useProps(\n 'ComboboxFooter',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n\n return (\n <Box\n {...ctx.getStyles('footer', { className, classNames, style, styles })}\n {...others}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n />\n );\n});\n\nComboboxFooter.classes = classes;\nComboboxFooter.displayName = '@mantine/core/ComboboxFooter';\n"],"mappings":";;;;;;;;AAwBA,MAAa,iBAAiB,SAAgC,UAAU;CACtE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,GAAG,WAAW,SAChE,kBACA,MACA,KACF;CAIA,OACE,oBAAC,KAAD;EACE,GAJQ,mBAIF,CAAC,CAAC,UAAU,UAAU;GAAE;GAAW;GAAY;GAAO;EAAO,CAAC;EACpE,GAAI;EACJ,cAAc,UAAU;GACtB,MAAM,eAAe;EACvB;CACD,CAAA;AAEL,CAAC;AAED,eAAe,UAAUA;AACzB,eAAe,cAAc"}
@@ -11,9 +11,10 @@ const ComboboxGroup = factory((props) => {
11
11
  const { classNames, className, style, styles, vars, children, label, id, ...others } = useProps("ComboboxGroup", null, props);
12
12
  const ctx = useComboboxContext();
13
13
  const _id = useId(id);
14
+ const hasLabel = label !== void 0 && label !== null && label !== false && label !== "";
14
15
  return /* @__PURE__ */ jsxs(Box, {
15
16
  role: "group",
16
- "aria-labelledby": label ? _id : void 0,
17
+ "aria-labelledby": hasLabel ? _id : void 0,
17
18
  ...ctx.getStyles("group", {
18
19
  className,
19
20
  classNames,
@@ -21,7 +22,7 @@ const ComboboxGroup = factory((props) => {
21
22
  styles
22
23
  }),
23
24
  ...others,
24
- children: [label && /* @__PURE__ */ jsx("div", {
25
+ children: [hasLabel && /* @__PURE__ */ jsx("div", {
25
26
  id: _id,
26
27
  ...ctx.getStyles("groupLabel", {
27
28
  classNames,
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxGroup.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxGroup/ComboboxGroup.tsx"],"sourcesContent":["import { useId } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxGroupStylesNames = 'group' | 'groupLabel';\n\nexport interface ComboboxGroupProps\n extends BoxProps, CompoundStylesApiProps<ComboboxGroupFactory>, ElementProps<'div'> {\n /** Group label */\n label?: React.ReactNode;\n}\n\nexport type ComboboxGroupFactory = Factory<{\n props: ComboboxGroupProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxGroupStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxGroup = factory<ComboboxGroupFactory>((props) => {\n const { classNames, className, style, styles, vars, children, label, id, ...others } = useProps(\n 'ComboboxGroup',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n const _id = useId(id);\n\n return (\n <Box\n role=\"group\"\n aria-labelledby={label ? _id : undefined}\n {...ctx.getStyles('group', { className, classNames, style, styles })}\n {...others}\n >\n {label && (\n <div id={_id} {...ctx.getStyles('groupLabel', { classNames, styles })}>\n {label}\n </div>\n )}\n {children}\n </Box>\n );\n});\n\nComboboxGroup.classes = classes;\nComboboxGroup.displayName = '@mantine/core/ComboboxGroup';\n"],"mappings":";;;;;;;;;AA4BA,MAAa,gBAAgB,SAA+B,UAAU;CACpE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,UAAU,OAAO,IAAI,GAAG,WAAW,SACrF,iBACA,MACA,KACF;CAEA,MAAM,MAAM,mBAAmB;CAC/B,MAAM,MAAM,MAAM,EAAE;CAEpB,OACE,qBAAC,KAAD;EACE,MAAK;EACL,mBAAiB,QAAQ,MAAM,KAAA;EAC/B,GAAI,IAAI,UAAU,SAAS;GAAE;GAAW;GAAY;GAAO;EAAO,CAAC;EACnE,GAAI;YAJN,CAMG,SACC,oBAAC,OAAD;GAAK,IAAI;GAAK,GAAI,IAAI,UAAU,cAAc;IAAE;IAAY;GAAO,CAAC;aACjE;EACE,CAAA,GAEN,QACE;;AAET,CAAC;AAED,cAAc,UAAUA;AACxB,cAAc,cAAc"}
1
+ {"version":3,"file":"ComboboxGroup.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxGroup/ComboboxGroup.tsx"],"sourcesContent":["import { useId } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxGroupStylesNames = 'group' | 'groupLabel';\n\nexport interface ComboboxGroupProps\n extends BoxProps, CompoundStylesApiProps<ComboboxGroupFactory>, ElementProps<'div'> {\n /** Group label */\n label?: React.ReactNode;\n}\n\nexport type ComboboxGroupFactory = Factory<{\n props: ComboboxGroupProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxGroupStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxGroup = factory<ComboboxGroupFactory>((props) => {\n const { classNames, className, style, styles, vars, children, label, id, ...others } = useProps(\n 'ComboboxGroup',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n const _id = useId(id);\n\n const hasLabel = label !== undefined && label !== null && label !== false && label !== '';\n\n return (\n <Box\n role=\"group\"\n aria-labelledby={hasLabel ? _id : undefined}\n {...ctx.getStyles('group', { className, classNames, style, styles })}\n {...others}\n >\n {hasLabel && (\n <div id={_id} {...ctx.getStyles('groupLabel', { classNames, styles })}>\n {label}\n </div>\n )}\n {children}\n </Box>\n );\n});\n\nComboboxGroup.classes = classes;\nComboboxGroup.displayName = '@mantine/core/ComboboxGroup';\n"],"mappings":";;;;;;;;;AA4BA,MAAa,gBAAgB,SAA+B,UAAU;CACpE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,UAAU,OAAO,IAAI,GAAG,WAAW,SACrF,iBACA,MACA,KACF;CAEA,MAAM,MAAM,mBAAmB;CAC/B,MAAM,MAAM,MAAM,EAAE;CAEpB,MAAM,WAAW,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU,SAAS,UAAU;CAEvF,OACE,qBAAC,KAAD;EACE,MAAK;EACL,mBAAiB,WAAW,MAAM,KAAA;EAClC,GAAI,IAAI,UAAU,SAAS;GAAE;GAAW;GAAY;GAAO;EAAO,CAAC;EACnE,GAAI;YAJN,CAMG,YACC,oBAAC,OAAD;GAAK,IAAI;GAAK,GAAI,IAAI,UAAU,cAAc;IAAE;IAAY;GAAO,CAAC;aACjE;EACE,CAAA,GAEN,QACE;;AAET,CAAC;AAED,cAAc,UAAUA;AACxB,cAAc,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxHeader.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxHeader/ComboboxHeader.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxHeaderStylesNames = 'header';\n\nexport interface ComboboxHeaderProps\n extends BoxProps, CompoundStylesApiProps<ComboboxHeaderFactory>, ElementProps<'div'> {}\n\nexport type ComboboxHeaderFactory = Factory<{\n props: ComboboxHeaderProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxHeaderStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxHeader = factory<ComboboxHeaderFactory>((props) => {\n const { classNames, className, style, styles, vars, ...others } = useProps(\n 'ComboboxHeader',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n\n return (\n <Box\n {...ctx.getStyles('header', { className, classNames, style, styles })}\n {...others}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n />\n );\n});\n\nComboboxHeader.classes = classes;\nComboboxHeader.displayName = '@mantine/core/ComboboxHeader';\n"],"mappings":";;;;;;;;AAwBA,MAAa,iBAAiB,SAAgC,UAAU;CACtE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,GAAG,WAAW,SAChE,kBACA,MACA,KACF;CAIA,OACE,oBAAC,KAAD;EACE,GAJQ,mBAIF,EAAE,UAAU,UAAU;GAAE;GAAW;GAAY;GAAO;EAAO,CAAC;EACpE,GAAI;EACJ,cAAc,UAAU;GACtB,MAAM,eAAe;EACvB;CACD,CAAA;AAEL,CAAC;AAED,eAAe,UAAUA;AACzB,eAAe,cAAc"}
1
+ {"version":3,"file":"ComboboxHeader.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/ComboboxHeader/ComboboxHeader.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxHeaderStylesNames = 'header';\n\nexport interface ComboboxHeaderProps\n extends BoxProps, CompoundStylesApiProps<ComboboxHeaderFactory>, ElementProps<'div'> {}\n\nexport type ComboboxHeaderFactory = Factory<{\n props: ComboboxHeaderProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxHeaderStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxHeader = factory<ComboboxHeaderFactory>((props) => {\n const { classNames, className, style, styles, vars, ...others } = useProps(\n 'ComboboxHeader',\n null,\n props\n );\n\n const ctx = useComboboxContext();\n\n return (\n <Box\n {...ctx.getStyles('header', { className, classNames, style, styles })}\n {...others}\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n />\n );\n});\n\nComboboxHeader.classes = classes;\nComboboxHeader.displayName = '@mantine/core/ComboboxHeader';\n"],"mappings":";;;;;;;;AAwBA,MAAa,iBAAiB,SAAgC,UAAU;CACtE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,GAAG,WAAW,SAChE,kBACA,MACA,KACF;CAIA,OACE,oBAAC,KAAD;EACE,GAJQ,mBAIF,CAAC,CAAC,UAAU,UAAU;GAAE;GAAW;GAAY;GAAO;EAAO,CAAC;EACpE,GAAI;EACJ,cAAc,UAAU;GACtB,MAAM,eAAe;EACvB;CACD,CAAA;AAEL,CAAC;AAED,eAAe,UAAUA;AACzB,eAAe,cAAc"}
@@ -60,7 +60,7 @@ function OptionsDropdown({ data, hidden, hiddenWhenEmpty, filter, search, limit,
60
60
  limit: limit ?? Infinity
61
61
  }) : data;
62
62
  const isEmpty = isEmptyComboboxData(filteredData);
63
- const options = filteredData.map((item) => /* @__PURE__ */ jsx(Option, {
63
+ const options = filteredData.map((item, index) => /* @__PURE__ */ jsx(Option, {
64
64
  data: item,
65
65
  withCheckIcon,
66
66
  withAlignedLabels,
@@ -68,7 +68,7 @@ function OptionsDropdown({ data, hidden, hiddenWhenEmpty, filter, search, limit,
68
68
  checkIconPosition,
69
69
  unstyled,
70
70
  renderOption
71
- }, isOptionsGroup(item) ? item.group : `${item.value}`));
71
+ }, isOptionsGroup(item) ? `group-${typeof item.group === "string" ? item.group : index}` : `${item.value}`));
72
72
  return /* @__PURE__ */ jsx(Combobox.Dropdown, {
73
73
  hidden: hidden || hiddenWhenEmpty && isEmpty,
74
74
  "data-composed": true,
@@ -1 +1 @@
1
- {"version":3,"file":"OptionsDropdown.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/OptionsDropdown/OptionsDropdown.tsx"],"sourcesContent":["import cx from 'clsx';\nimport { Primitive } from '../../../core';\nimport { CheckIcon } from '../../Checkbox';\nimport { ScrollArea, ScrollAreaProps } from '../../ScrollArea/ScrollArea';\nimport { Combobox } from '../Combobox';\nimport { useComboboxContext } from '../Combobox.context';\nimport { ComboboxItem, ComboboxLikeRenderOptionInput, ComboboxParsedItem } from '../Combobox.types';\nimport { defaultOptionsFilter, FilterOptionsInput } from './default-options-filter';\nimport { isEmptyComboboxData } from './is-empty-combobox-data';\nimport { isOptionsGroup } from './is-options-group';\nimport { validateOptions } from './validate-options';\nimport classes from '../Combobox.module.css';\n\nexport type OptionsFilter<Value extends Primitive = string> = (\n input: FilterOptionsInput<Value>\n) => ComboboxParsedItem<Value>[];\n\nexport interface OptionsGroup {\n group: string;\n items: ComboboxItem<Primitive>[];\n}\n\nexport type OptionsData = (ComboboxItem<Primitive> | OptionsGroup)[];\n\ninterface OptionProps {\n data: ComboboxItem<Primitive> | OptionsGroup;\n withCheckIcon?: boolean;\n withAlignedLabels?: boolean;\n value?: Primitive | Primitive[] | null;\n checkIconPosition?: 'left' | 'right';\n unstyled: boolean | undefined;\n renderOption?: (input: ComboboxLikeRenderOptionInput<any>) => React.ReactNode;\n}\n\nfunction isValueChecked(value: Primitive | Primitive[] | undefined | null, optionValue: Primitive) {\n return Array.isArray(value) ? value.includes(optionValue) : value === optionValue;\n}\n\nfunction Option({\n data,\n withCheckIcon,\n withAlignedLabels,\n value,\n checkIconPosition,\n unstyled,\n renderOption,\n}: OptionProps) {\n if (!isOptionsGroup(data)) {\n const checked = isValueChecked(value, data.value);\n const check =\n withCheckIcon &&\n (checked ? (\n <CheckIcon className={classes.optionsDropdownCheckIcon} />\n ) : withAlignedLabels ? (\n <div className={classes.optionsDropdownCheckPlaceholder} />\n ) : null);\n\n const defaultContent = (\n <>\n {checkIconPosition === 'left' && check}\n <span>{data.label}</span>\n {checkIconPosition === 'right' && check}\n </>\n );\n\n return (\n <Combobox.Option\n value={data.value}\n disabled={data.disabled}\n className={cx({ [classes.optionsDropdownOption]: !unstyled })}\n data-reverse={checkIconPosition === 'right' || undefined}\n data-checked={checked || undefined}\n aria-selected={checked}\n active={checked}\n >\n {typeof renderOption === 'function'\n ? renderOption({ option: data, checked })\n : defaultContent}\n </Combobox.Option>\n );\n }\n\n const options = data.items.map((item) => (\n <Option\n data={item}\n value={value}\n key={`${item.value}`}\n unstyled={unstyled}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n checkIconPosition={checkIconPosition}\n renderOption={renderOption}\n />\n ));\n\n return <Combobox.Group label={data.group}>{options}</Combobox.Group>;\n}\n\nexport interface OptionsDropdownProps {\n data: OptionsData;\n filter: OptionsFilter<Primitive> | undefined;\n search: string | undefined;\n limit: number | undefined;\n withScrollArea: boolean | undefined;\n maxDropdownHeight: number | string | undefined;\n /** Overrides `floatingHeight` from the `Combobox` context, used by `Combobox`-based components */\n floatingHeight?: 'viewport';\n hidden?: boolean;\n hiddenWhenEmpty?: boolean;\n filterOptions?: boolean;\n withCheckIcon?: boolean;\n withAlignedLabels?: boolean;\n value?: Primitive | Primitive[] | null;\n checkIconPosition?: 'left' | 'right';\n nothingFoundMessage?: React.ReactNode;\n unstyled: boolean | undefined;\n labelId: string | undefined;\n 'aria-label': string | undefined;\n renderOption?: (input: ComboboxLikeRenderOptionInput<any>) => React.ReactNode;\n scrollAreaProps: ScrollAreaProps | undefined;\n}\n\nexport function OptionsDropdown({\n data,\n hidden,\n hiddenWhenEmpty,\n filter,\n search,\n limit,\n maxDropdownHeight,\n floatingHeight,\n withScrollArea = true,\n filterOptions = true,\n withCheckIcon = false,\n withAlignedLabels = false,\n value,\n checkIconPosition,\n nothingFoundMessage,\n unstyled,\n labelId,\n renderOption,\n scrollAreaProps,\n 'aria-label': ariaLabel,\n}: OptionsDropdownProps) {\n const ctx = useComboboxContext();\n validateOptions(data);\n\n const shouldFilter = typeof search === 'string';\n const filteredData = shouldFilter\n ? (filter || defaultOptionsFilter)({\n options: data,\n search: filterOptions ? search : '',\n limit: limit ?? Infinity,\n })\n : data;\n const isEmpty = isEmptyComboboxData(filteredData);\n\n const options = filteredData.map((item) => (\n <Option\n data={item}\n key={isOptionsGroup(item) ? item.group : `${item.value}`}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n value={value}\n checkIconPosition={checkIconPosition}\n unstyled={unstyled}\n renderOption={renderOption}\n />\n ));\n\n return (\n <Combobox.Dropdown hidden={hidden || (hiddenWhenEmpty && isEmpty)} data-composed>\n <Combobox.Options labelledBy={labelId} aria-label={ariaLabel}>\n {withScrollArea ? (\n <ScrollArea.Autosize\n mah={\n (floatingHeight ?? ctx.floatingHeight) === 'viewport'\n ? 'var(--combobox-floating-options-max-height)'\n : (maxDropdownHeight ?? 220)\n }\n type=\"scroll\"\n scrollbarSize=\"var(--combobox-padding)\"\n offsetScrollbars=\"y\"\n {...scrollAreaProps}\n >\n {options}\n </ScrollArea.Autosize>\n ) : (\n options\n )}\n {isEmpty && nothingFoundMessage && <Combobox.Empty>{nothingFoundMessage}</Combobox.Empty>}\n </Combobox.Options>\n </Combobox.Dropdown>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAkCA,SAAS,eAAe,OAAmD,aAAwB;CACjG,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,WAAW,IAAI,UAAU;AACxE;AAEA,SAAS,OAAO,EACd,MACA,eACA,mBACA,OACA,mBACA,UACA,gBACc;CACd,IAAI,CAAC,eAAe,IAAI,GAAG;EACzB,MAAM,UAAU,eAAe,OAAO,KAAK,KAAK;EAChD,MAAM,QACJ,kBACC,UACC,oBAAC,WAAD,EAAW,WAAWA,wBAAQ,yBAA2B,CAAA,IACvD,oBACF,oBAAC,OAAD,EAAK,WAAWA,wBAAQ,gCAAkC,CAAA,IACxD;EAEN,MAAM,iBACJ,qBAAA,UAAA,EAAA,UAAA;GACG,sBAAsB,UAAU;GACjC,oBAAC,QAAD,EAAA,UAAO,KAAK,MAAY,CAAA;GACvB,sBAAsB,WAAW;EAClC,EAAA,CAAA;EAGJ,OACE,oBAAC,SAAS,QAAV;GACE,OAAO,KAAK;GACZ,UAAU,KAAK;GACf,WAAW,GAAG,GAAGA,wBAAQ,wBAAwB,CAAC,SAAS,CAAC;GAC5D,gBAAc,sBAAsB,WAAW,KAAA;GAC/C,gBAAc,WAAW,KAAA;GACzB,iBAAe;GACf,QAAQ;aAEP,OAAO,iBAAiB,aACrB,aAAa;IAAE,QAAQ;IAAM;GAAQ,CAAC,IACtC;EACW,CAAA;CAErB;CAEA,MAAM,UAAU,KAAK,MAAM,KAAK,SAC9B,oBAAC,QAAD;EACE,MAAM;EACC;EAEG;EACK;EACI;EACA;EACL;CACf,GANM,GAAG,KAAK,OAMd,CACF;CAED,OAAO,oBAAC,SAAS,OAAV;EAAgB,OAAO,KAAK;YAAQ;CAAwB,CAAA;AACrE;AA0BA,SAAgB,gBAAgB,EAC9B,MACA,QACA,iBACA,QACA,QACA,OACA,mBACA,gBACA,iBAAiB,MACjB,gBAAgB,MAChB,gBAAgB,OAChB,oBAAoB,OACpB,OACA,mBACA,qBACA,UACA,SACA,cACA,iBACA,cAAc,aACS;CACvB,MAAM,MAAM,mBAAmB;CAC/B,gBAAgB,IAAI;CAGpB,MAAM,eADe,OAAO,WAAW,YAElC,UAAU,sBAAsB;EAC/B,SAAS;EACT,QAAQ,gBAAgB,SAAS;EACjC,OAAO,SAAS;CAClB,CAAC,IACD;CACJ,MAAM,UAAU,oBAAoB,YAAY;CAEhD,MAAM,UAAU,aAAa,KAAK,SAChC,oBAAC,QAAD;EACE,MAAM;EAES;EACI;EACZ;EACY;EACT;EACI;CACf,GAPM,eAAe,IAAI,IAAI,KAAK,QAAQ,GAAG,KAAK,OAOlD,CACF;CAED,OACE,oBAAC,SAAS,UAAV;EAAmB,QAAQ,UAAW,mBAAmB;EAAU,iBAAA;YACjE,qBAAC,SAAS,SAAV;GAAkB,YAAY;GAAS,cAAY;aAAnD,CACG,iBACC,oBAAC,WAAW,UAAZ;IACE,MACG,kBAAkB,IAAI,oBAAoB,aACvC,gDACC,qBAAqB;IAE5B,MAAK;IACL,eAAc;IACd,kBAAiB;IACjB,GAAI;cAEH;GACkB,CAAA,IAErB,SAED,WAAW,uBAAuB,oBAAC,SAAS,OAAV,EAAA,UAAiB,oBAAoC,CAAA,CACxE;;CACD,CAAA;AAEvB"}
1
+ {"version":3,"file":"OptionsDropdown.mjs","names":["classes"],"sources":["../../../../src/components/Combobox/OptionsDropdown/OptionsDropdown.tsx"],"sourcesContent":["import cx from 'clsx';\nimport { Primitive } from '../../../core';\nimport { CheckIcon } from '../../Checkbox';\nimport { ScrollArea, ScrollAreaProps } from '../../ScrollArea/ScrollArea';\nimport { Combobox } from '../Combobox';\nimport { useComboboxContext } from '../Combobox.context';\nimport { ComboboxItem, ComboboxLikeRenderOptionInput, ComboboxParsedItem } from '../Combobox.types';\nimport { defaultOptionsFilter, FilterOptionsInput } from './default-options-filter';\nimport { isEmptyComboboxData } from './is-empty-combobox-data';\nimport { isOptionsGroup } from './is-options-group';\nimport { validateOptions } from './validate-options';\nimport classes from '../Combobox.module.css';\n\nexport type OptionsFilter<Value extends Primitive = string> = (\n input: FilterOptionsInput<Value>\n) => ComboboxParsedItem<Value>[];\n\nexport interface OptionsGroup {\n group: React.ReactNode;\n items: ComboboxItem<Primitive>[];\n}\n\nexport type OptionsData = (ComboboxItem<Primitive> | OptionsGroup)[];\n\ninterface OptionProps {\n data: ComboboxItem<Primitive> | OptionsGroup;\n withCheckIcon?: boolean;\n withAlignedLabels?: boolean;\n value?: Primitive | Primitive[] | null;\n checkIconPosition?: 'left' | 'right';\n unstyled: boolean | undefined;\n renderOption?: (input: ComboboxLikeRenderOptionInput<any>) => React.ReactNode;\n}\n\nfunction isValueChecked(value: Primitive | Primitive[] | undefined | null, optionValue: Primitive) {\n return Array.isArray(value) ? value.includes(optionValue) : value === optionValue;\n}\n\nfunction Option({\n data,\n withCheckIcon,\n withAlignedLabels,\n value,\n checkIconPosition,\n unstyled,\n renderOption,\n}: OptionProps) {\n if (!isOptionsGroup(data)) {\n const checked = isValueChecked(value, data.value);\n const check =\n withCheckIcon &&\n (checked ? (\n <CheckIcon className={classes.optionsDropdownCheckIcon} />\n ) : withAlignedLabels ? (\n <div className={classes.optionsDropdownCheckPlaceholder} />\n ) : null);\n\n const defaultContent = (\n <>\n {checkIconPosition === 'left' && check}\n <span>{data.label}</span>\n {checkIconPosition === 'right' && check}\n </>\n );\n\n return (\n <Combobox.Option\n value={data.value}\n disabled={data.disabled}\n className={cx({ [classes.optionsDropdownOption]: !unstyled })}\n data-reverse={checkIconPosition === 'right' || undefined}\n data-checked={checked || undefined}\n aria-selected={checked}\n active={checked}\n >\n {typeof renderOption === 'function'\n ? renderOption({ option: data, checked })\n : defaultContent}\n </Combobox.Option>\n );\n }\n\n const options = data.items.map((item) => (\n <Option\n data={item}\n value={value}\n key={`${item.value}`}\n unstyled={unstyled}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n checkIconPosition={checkIconPosition}\n renderOption={renderOption}\n />\n ));\n\n return <Combobox.Group label={data.group}>{options}</Combobox.Group>;\n}\n\nexport interface OptionsDropdownProps {\n data: OptionsData;\n filter: OptionsFilter<Primitive> | undefined;\n search: string | undefined;\n limit: number | undefined;\n withScrollArea: boolean | undefined;\n maxDropdownHeight: number | string | undefined;\n /** Overrides `floatingHeight` from the `Combobox` context, used by `Combobox`-based components */\n floatingHeight?: 'viewport';\n hidden?: boolean;\n hiddenWhenEmpty?: boolean;\n filterOptions?: boolean;\n withCheckIcon?: boolean;\n withAlignedLabels?: boolean;\n value?: Primitive | Primitive[] | null;\n checkIconPosition?: 'left' | 'right';\n nothingFoundMessage?: React.ReactNode;\n unstyled: boolean | undefined;\n labelId: string | undefined;\n 'aria-label': string | undefined;\n renderOption?: (input: ComboboxLikeRenderOptionInput<any>) => React.ReactNode;\n scrollAreaProps: ScrollAreaProps | undefined;\n}\n\nexport function OptionsDropdown({\n data,\n hidden,\n hiddenWhenEmpty,\n filter,\n search,\n limit,\n maxDropdownHeight,\n floatingHeight,\n withScrollArea = true,\n filterOptions = true,\n withCheckIcon = false,\n withAlignedLabels = false,\n value,\n checkIconPosition,\n nothingFoundMessage,\n unstyled,\n labelId,\n renderOption,\n scrollAreaProps,\n 'aria-label': ariaLabel,\n}: OptionsDropdownProps) {\n const ctx = useComboboxContext();\n validateOptions(data);\n\n const shouldFilter = typeof search === 'string';\n const filteredData = shouldFilter\n ? (filter || defaultOptionsFilter)({\n options: data,\n search: filterOptions ? search : '',\n limit: limit ?? Infinity,\n })\n : data;\n const isEmpty = isEmptyComboboxData(filteredData);\n\n const options = filteredData.map((item, index) => (\n <Option\n data={item}\n key={\n isOptionsGroup(item)\n ? `group-${typeof item.group === 'string' ? item.group : index}`\n : `${item.value}`\n }\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n value={value}\n checkIconPosition={checkIconPosition}\n unstyled={unstyled}\n renderOption={renderOption}\n />\n ));\n\n return (\n <Combobox.Dropdown hidden={hidden || (hiddenWhenEmpty && isEmpty)} data-composed>\n <Combobox.Options labelledBy={labelId} aria-label={ariaLabel}>\n {withScrollArea ? (\n <ScrollArea.Autosize\n mah={\n (floatingHeight ?? ctx.floatingHeight) === 'viewport'\n ? 'var(--combobox-floating-options-max-height)'\n : (maxDropdownHeight ?? 220)\n }\n type=\"scroll\"\n scrollbarSize=\"var(--combobox-padding)\"\n offsetScrollbars=\"y\"\n {...scrollAreaProps}\n >\n {options}\n </ScrollArea.Autosize>\n ) : (\n options\n )}\n {isEmpty && nothingFoundMessage && <Combobox.Empty>{nothingFoundMessage}</Combobox.Empty>}\n </Combobox.Options>\n </Combobox.Dropdown>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAkCA,SAAS,eAAe,OAAmD,aAAwB;CACjG,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,WAAW,IAAI,UAAU;AACxE;AAEA,SAAS,OAAO,EACd,MACA,eACA,mBACA,OACA,mBACA,UACA,gBACc;CACd,IAAI,CAAC,eAAe,IAAI,GAAG;EACzB,MAAM,UAAU,eAAe,OAAO,KAAK,KAAK;EAChD,MAAM,QACJ,kBACC,UACC,oBAAC,WAAD,EAAW,WAAWA,wBAAQ,yBAA2B,CAAA,IACvD,oBACF,oBAAC,OAAD,EAAK,WAAWA,wBAAQ,gCAAkC,CAAA,IACxD;EAEN,MAAM,iBACJ,qBAAA,UAAA,EAAA,UAAA;GACG,sBAAsB,UAAU;GACjC,oBAAC,QAAD,EAAA,UAAO,KAAK,MAAY,CAAA;GACvB,sBAAsB,WAAW;EAClC,EAAA,CAAA;EAGJ,OACE,oBAAC,SAAS,QAAV;GACE,OAAO,KAAK;GACZ,UAAU,KAAK;GACf,WAAW,GAAG,GAAGA,wBAAQ,wBAAwB,CAAC,SAAS,CAAC;GAC5D,gBAAc,sBAAsB,WAAW,KAAA;GAC/C,gBAAc,WAAW,KAAA;GACzB,iBAAe;GACf,QAAQ;aAEP,OAAO,iBAAiB,aACrB,aAAa;IAAE,QAAQ;IAAM;GAAQ,CAAC,IACtC;EACW,CAAA;CAErB;CAEA,MAAM,UAAU,KAAK,MAAM,KAAK,SAC9B,oBAAC,QAAD;EACE,MAAM;EACC;EAEG;EACK;EACI;EACA;EACL;CACf,GANM,GAAG,KAAK,OAMd,CACF;CAED,OAAO,oBAAC,SAAS,OAAV;EAAgB,OAAO,KAAK;YAAQ;CAAwB,CAAA;AACrE;AA0BA,SAAgB,gBAAgB,EAC9B,MACA,QACA,iBACA,QACA,QACA,OACA,mBACA,gBACA,iBAAiB,MACjB,gBAAgB,MAChB,gBAAgB,OAChB,oBAAoB,OACpB,OACA,mBACA,qBACA,UACA,SACA,cACA,iBACA,cAAc,aACS;CACvB,MAAM,MAAM,mBAAmB;CAC/B,gBAAgB,IAAI;CAGpB,MAAM,eADe,OAAO,WAAW,YAElC,UAAU,qBAAA,CAAsB;EAC/B,SAAS;EACT,QAAQ,gBAAgB,SAAS;EACjC,OAAO,SAAS;CAClB,CAAC,IACD;CACJ,MAAM,UAAU,oBAAoB,YAAY;CAEhD,MAAM,UAAU,aAAa,KAAK,MAAM,UACtC,oBAAC,QAAD;EACE,MAAM;EAMS;EACI;EACZ;EACY;EACT;EACI;CACf,GAVG,eAAe,IAAI,IACf,SAAS,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,UACvD,GAAG,KAAK,OAQf,CACF;CAED,OACE,oBAAC,SAAS,UAAV;EAAmB,QAAQ,UAAW,mBAAmB;EAAU,iBAAA;YACjE,qBAAC,SAAS,SAAV;GAAkB,YAAY;GAAS,cAAY;aAAnD,CACG,iBACC,oBAAC,WAAW,UAAZ;IACE,MACG,kBAAkB,IAAI,oBAAoB,aACvC,gDACC,qBAAqB;IAE5B,MAAK;IACL,eAAc;IACd,kBAAiB;IACjB,GAAI;cAEH;GACkB,CAAA,IAErB,SAED,WAAW,uBAAuB,oBAAC,SAAS,OAAV,EAAA,UAAiB,oBAAoC,CAAA,CACxE;;CACD,CAAA;AAEvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"default-options-filter.mjs","names":[],"sources":["../../../../src/components/Combobox/OptionsDropdown/default-options-filter.ts"],"sourcesContent":["import { Primitive } from '../../../core';\nimport { ComboboxItem, ComboboxParsedItem } from '../Combobox.types';\nimport { isOptionsGroup } from './is-options-group';\n\nexport interface FilterOptionsInput<Value extends Primitive = Primitive> {\n options: ComboboxParsedItem<Value>[];\n search: string;\n limit: number;\n}\n\nexport function defaultOptionsFilter({\n options,\n search,\n limit,\n}: FilterOptionsInput): ComboboxParsedItem<Primitive>[] {\n const parsedSearch = search.trim().toLowerCase();\n const result: ComboboxParsedItem<Primitive>[] = [];\n\n for (let i = 0; i < options.length; i += 1) {\n const item = options[i];\n\n if (result.length === limit) {\n return result;\n }\n\n if (isOptionsGroup(item)) {\n result.push({\n group: item.group,\n items: defaultOptionsFilter({\n options: item.items,\n search,\n limit: limit - result.length,\n }) as ComboboxItem[],\n });\n }\n\n if (!isOptionsGroup(item)) {\n if (item.label.toLowerCase().includes(parsedSearch)) {\n result.push(item);\n }\n }\n }\n\n return result;\n}\n"],"mappings":";;;AAUA,SAAgB,qBAAqB,EACnC,SACA,QACA,SACsD;CACtD,MAAM,eAAe,OAAO,KAAK,EAAE,YAAY;CAC/C,MAAM,SAA0C,CAAC;CAEjD,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;EAC1C,MAAM,OAAO,QAAQ;EAErB,IAAI,OAAO,WAAW,OACpB,OAAO;EAGT,IAAI,eAAe,IAAI,GACrB,OAAO,KAAK;GACV,OAAO,KAAK;GACZ,OAAO,qBAAqB;IAC1B,SAAS,KAAK;IACd;IACA,OAAO,QAAQ,OAAO;GACxB,CAAC;EACH,CAAC;EAGH,IAAI,CAAC,eAAe,IAAI;OAClB,KAAK,MAAM,YAAY,EAAE,SAAS,YAAY,GAChD,OAAO,KAAK,IAAI;EAAA;CAGtB;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"default-options-filter.mjs","names":[],"sources":["../../../../src/components/Combobox/OptionsDropdown/default-options-filter.ts"],"sourcesContent":["import { Primitive } from '../../../core';\nimport { ComboboxItem, ComboboxParsedItem } from '../Combobox.types';\nimport { isOptionsGroup } from './is-options-group';\n\nexport interface FilterOptionsInput<Value extends Primitive = Primitive> {\n options: ComboboxParsedItem<Value>[];\n search: string;\n limit: number;\n}\n\nexport function defaultOptionsFilter({\n options,\n search,\n limit,\n}: FilterOptionsInput): ComboboxParsedItem<Primitive>[] {\n const parsedSearch = search.trim().toLowerCase();\n const result: ComboboxParsedItem<Primitive>[] = [];\n\n for (let i = 0; i < options.length; i += 1) {\n const item = options[i];\n\n if (result.length === limit) {\n return result;\n }\n\n if (isOptionsGroup(item)) {\n result.push({\n group: item.group,\n items: defaultOptionsFilter({\n options: item.items,\n search,\n limit: limit - result.length,\n }) as ComboboxItem[],\n });\n }\n\n if (!isOptionsGroup(item)) {\n if (item.label.toLowerCase().includes(parsedSearch)) {\n result.push(item);\n }\n }\n }\n\n return result;\n}\n"],"mappings":";;;AAUA,SAAgB,qBAAqB,EACnC,SACA,QACA,SACsD;CACtD,MAAM,eAAe,OAAO,KAAK,CAAC,CAAC,YAAY;CAC/C,MAAM,SAA0C,CAAC;CAEjD,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;EAC1C,MAAM,OAAO,QAAQ;EAErB,IAAI,OAAO,WAAW,OACpB,OAAO;EAGT,IAAI,eAAe,IAAI,GACrB,OAAO,KAAK;GACV,OAAO,KAAK;GACZ,OAAO,qBAAqB;IAC1B,SAAS,KAAK;IACd;IACA,OAAO,QAAQ,OAAO;GACxB,CAAC;EACH,CAAC;EAGH,IAAI,CAAC,eAAe,IAAI;OAClB,KAAK,MAAM,YAAY,CAAC,CAAC,SAAS,YAAY,GAChD,OAAO,KAAK,IAAI;EAAA;CAGtB;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-index.mjs","names":[],"sources":["../../../../../src/components/Combobox/use-combobox/get-index/get-index.ts"],"sourcesContent":["export function getPreviousIndex(\n currentIndex: number,\n elements: NodeListOf<HTMLDivElement> | HTMLDivElement[],\n loop: boolean\n) {\n for (let i = currentIndex - 1; i >= 0; i -= 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = elements.length - 1; i > -1; i -= 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getNextIndex(\n currentIndex: number,\n elements: NodeListOf<HTMLDivElement> | HTMLDivElement[],\n loop: boolean\n) {\n for (let i = currentIndex + 1; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = 0; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getFirstIndex(elements: NodeListOf<HTMLDivElement> | HTMLDivElement[]) {\n for (let i = 0; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n return -1;\n}\n"],"mappings":";;AAAA,SAAgB,iBACd,cACA,UACA,MACA;CACA,KAAK,IAAI,IAAI,eAAe,GAAG,KAAK,GAAG,KAAK,GAC1C,IAAI,CAAC,SAAS,GAAG,aAAa,wBAAwB,GACpD,OAAO;CAIX,IAAI;OACG,IAAI,IAAI,SAAS,SAAS,GAAG,IAAI,IAAI,KAAK,GAC7C,IAAI,CAAC,SAAS,GAAG,aAAa,wBAAwB,GACpD,OAAO;CAAA;CAKb,OAAO;AACT;AAEA,SAAgB,aACd,cACA,UACA,MACA;CACA,KAAK,IAAI,IAAI,eAAe,GAAG,IAAI,SAAS,QAAQ,KAAK,GACvD,IAAI,CAAC,SAAS,GAAG,aAAa,wBAAwB,GACpD,OAAO;CAIX,IAAI;OACG,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GACxC,IAAI,CAAC,SAAS,GAAG,aAAa,wBAAwB,GACpD,OAAO;CAAA;CAKb,OAAO;AACT;AAEA,SAAgB,cAAc,UAAyD;CACrF,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GACxC,IAAI,CAAC,SAAS,GAAG,aAAa,wBAAwB,GACpD,OAAO;CAIX,OAAO;AACT"}
1
+ {"version":3,"file":"get-index.mjs","names":[],"sources":["../../../../../src/components/Combobox/use-combobox/get-index/get-index.ts"],"sourcesContent":["export function getPreviousIndex(\n currentIndex: number,\n elements: NodeListOf<HTMLDivElement> | HTMLDivElement[],\n loop: boolean\n) {\n for (let i = currentIndex - 1; i >= 0; i -= 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = elements.length - 1; i > -1; i -= 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getNextIndex(\n currentIndex: number,\n elements: NodeListOf<HTMLDivElement> | HTMLDivElement[],\n loop: boolean\n) {\n for (let i = currentIndex + 1; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n if (loop) {\n for (let i = 0; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n }\n\n return currentIndex;\n}\n\nexport function getFirstIndex(elements: NodeListOf<HTMLDivElement> | HTMLDivElement[]) {\n for (let i = 0; i < elements.length; i += 1) {\n if (!elements[i].hasAttribute('data-combobox-disabled')) {\n return i;\n }\n }\n\n return -1;\n}\n"],"mappings":";;AAAA,SAAgB,iBACd,cACA,UACA,MACA;CACA,KAAK,IAAI,IAAI,eAAe,GAAG,KAAK,GAAG,KAAK,GAC1C,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,wBAAwB,GACpD,OAAO;CAIX,IAAI;OACG,IAAI,IAAI,SAAS,SAAS,GAAG,IAAI,IAAI,KAAK,GAC7C,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,wBAAwB,GACpD,OAAO;CAAA;CAKb,OAAO;AACT;AAEA,SAAgB,aACd,cACA,UACA,MACA;CACA,KAAK,IAAI,IAAI,eAAe,GAAG,IAAI,SAAS,QAAQ,KAAK,GACvD,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,wBAAwB,GACpD,OAAO;CAIX,IAAI;OACG,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GACxC,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,wBAAwB,GACpD,OAAO;CAAA;CAKb,OAAO;AACT;AAEA,SAAgB,cAAc,UAAyD;CACrF,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GACxC,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,wBAAwB,GACpD,OAAO;CAIX,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-combobox.mjs","names":[],"sources":["../../../../src/components/Combobox/use-combobox/use-combobox.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { findElementBySelector, findElementsBySelector, getRootElement } from '../../../core/utils';\nimport { getFirstIndex, getNextIndex, getPreviousIndex } from './get-index/get-index';\n\nexport type ComboboxDropdownEventSource = 'keyboard' | 'mouse' | 'unknown';\n\nexport interface ComboboxStore {\n /** Current dropdown opened state */\n dropdownOpened: boolean;\n\n /** Opens dropdown */\n openDropdown: (eventSource?: ComboboxDropdownEventSource) => void;\n\n /** Closes dropdown */\n closeDropdown: (eventSource?: ComboboxDropdownEventSource) => void;\n\n /** Toggles dropdown opened state */\n toggleDropdown: (eventSource?: ComboboxDropdownEventSource) => void;\n\n /** Selected option index ref */\n selectedOptionIndex: number;\n\n /** Returns currently selected option index or `-1` if none of the options is selected */\n getSelectedOptionIndex: () => number;\n\n /** Selects `Combobox.Option` by index */\n selectOption: (index: number) => void;\n\n /** Selects first `Combobox.Option` with `active` prop.\n * If there are no such options, the function does nothing.\n */\n selectActiveOption: () => string | null;\n\n /** Selects first `Combobox.Option` that is not disabled.\n * If there are no such options, the function does nothing.\n * */\n selectFirstOption: () => string | null;\n\n /** Selects next `Combobox.Option` that is not disabled.\n * If the current option is the last one, the function selects first option, if `loop` is true.\n */\n selectNextOption: () => string | null;\n\n /** Selects previous `Combobox.Option` that is not disabled.\n * If the current option is the first one, the function selects last option, if `loop` is true.\n * */\n selectPreviousOption: () => string | null;\n\n /** Resets selected option index to -1, removes `data-combobox-selected` from selected option */\n resetSelectedOption: () => void;\n\n /** Triggers `onClick` event of selected option.\n * If there is no selected option, the function does nothing.\n */\n clickSelectedOption: () => void;\n\n /** Updates selected option index to currently selected or active option.\n * The function is required to be used with searchable components to update selected option index\n * when options list changes based on search query.\n */\n updateSelectedOptionIndex: (\n target?: 'active' | 'selected' | number,\n options?: { scrollIntoView?: boolean }\n ) => void;\n\n /** List id, used for `aria-*` attributes */\n listId: string | null;\n\n /** Sets list id */\n setListId: (id: string) => void;\n\n /** Ref of `Combobox.Search` input */\n searchRef: React.RefObject<HTMLInputElement | null>;\n\n /** Moves focus to `Combobox.Search` input */\n focusSearchInput: () => void;\n\n /** Ref of the target element */\n targetRef: React.RefObject<HTMLElement | null>;\n\n /** Moves focus to the target element */\n focusTarget: () => void;\n}\n\nexport interface UseComboboxOptions {\n /** Default value for `dropdownOpened`, `false` by default. Used when the component is uncontrolled */\n defaultOpened?: boolean;\n\n /** Controlled `dropdownOpened` state. When set, the dropdown opened state is controlled by the parent component */\n opened?: boolean;\n\n /** Called when `dropdownOpened` state changes. Required for controlled mode */\n onOpenedChange?: (opened: boolean) => void;\n\n /** Called when dropdown closes with event source: keyboard, mouse or unknown. Useful for analytics or side effects on dropdown closure */\n onDropdownClose?: (eventSource: ComboboxDropdownEventSource) => void;\n\n /** Called when dropdown opens with event source: keyboard, mouse or unknown. Useful for analytics or side effects on dropdown opening */\n onDropdownOpen?: (eventSource: ComboboxDropdownEventSource) => void;\n\n /** Determines whether arrow key presses should loop through items (first to last and last to first). Defaults to `true` */\n loop?: boolean;\n\n /** `behavior` passed down to `element.scrollIntoView`. Controls the scrolling animation when options are scrolled into view. Defaults to `'instant'` */\n scrollBehavior?: ScrollBehavior;\n}\n\nexport function useCombobox({\n defaultOpened,\n opened,\n onOpenedChange,\n onDropdownClose,\n onDropdownOpen,\n loop = true,\n scrollBehavior = 'instant',\n}: UseComboboxOptions = {}): ComboboxStore {\n const [dropdownOpened, setDropdownOpened] = useUncontrolled({\n value: opened,\n defaultValue: defaultOpened,\n finalValue: false,\n onChange: onOpenedChange,\n });\n\n const listId = useRef<string | null>(null);\n const selectedOptionIndex = useRef<number>(-1);\n const searchRef = useRef<HTMLInputElement | null>(null);\n const targetRef = useRef<HTMLElement | null>(null);\n const focusSearchTimeout = useRef<number>(-1);\n const focusTargetTimeout = useRef<number>(-1);\n const selectedIndexUpdateTimeout = useRef<number>(-1);\n\n const openDropdown: ComboboxStore['openDropdown'] = useCallback(\n (eventSource = 'unknown') => {\n if (!dropdownOpened) {\n setDropdownOpened(true);\n onDropdownOpen?.(eventSource);\n }\n },\n [setDropdownOpened, onDropdownOpen, dropdownOpened]\n );\n\n const closeDropdown: ComboboxStore['closeDropdown'] = useCallback(\n (eventSource = 'unknown') => {\n if (dropdownOpened) {\n setDropdownOpened(false);\n onDropdownClose?.(eventSource);\n }\n },\n [setDropdownOpened, onDropdownClose, dropdownOpened]\n );\n\n const toggleDropdown: ComboboxStore['toggleDropdown'] = useCallback(\n (eventSource = 'unknown') => {\n if (dropdownOpened) {\n closeDropdown(eventSource);\n } else {\n openDropdown(eventSource);\n }\n },\n [closeDropdown, openDropdown, dropdownOpened]\n );\n\n const clearSelectedItem = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const selected = findElementBySelector(`#${listId.current} [data-combobox-selected]`, root);\n selected?.removeAttribute('data-combobox-selected');\n selected?.removeAttribute('aria-selected');\n }, []);\n\n const selectOption = useCallback(\n (index: number) => {\n const root = getRootElement(targetRef.current);\n const list = findElementBySelector(`#${listId.current!}`, root);\n const items = list\n ? findElementsBySelector<HTMLDivElement>('[data-combobox-option]', list)\n : null;\n\n if (!items) {\n return null;\n }\n\n const nextIndex = index >= items!.length ? 0 : index < 0 ? items!.length - 1 : index;\n selectedOptionIndex.current = nextIndex;\n\n if (items?.[nextIndex] && !items[nextIndex].hasAttribute('data-combobox-disabled')) {\n clearSelectedItem();\n items[nextIndex].setAttribute('data-combobox-selected', 'true');\n items[nextIndex].setAttribute('aria-selected', 'true');\n items[nextIndex].scrollIntoView({ block: 'nearest', behavior: scrollBehavior });\n return items[nextIndex].id;\n }\n\n return null;\n },\n [scrollBehavior, clearSelectedItem]\n );\n\n const selectActiveOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const activeOption = findElementBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-active]`,\n root\n );\n\n if (activeOption) {\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n const index = items.findIndex((option) => option === activeOption);\n return selectOption(index);\n }\n\n return selectOption(0);\n }, [selectOption]);\n\n const selectNextOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n return selectOption(getNextIndex(selectedOptionIndex.current, items, loop));\n }, [selectOption, loop]);\n\n const selectPreviousOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n return selectOption(getPreviousIndex(selectedOptionIndex.current, items, loop));\n }, [selectOption, loop]);\n\n const selectFirstOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n return selectOption(getFirstIndex(items));\n }, [selectOption]);\n\n const updateSelectedOptionIndex: ComboboxStore['updateSelectedOptionIndex'] = useCallback(\n (target = 'selected', options) => {\n if (typeof target === 'number') {\n selectedOptionIndex.current = target;\n const root = getRootElement(targetRef.current);\n\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n\n if (options?.scrollIntoView) {\n items[target]?.scrollIntoView({ block: 'nearest', behavior: scrollBehavior });\n }\n return;\n }\n\n selectedIndexUpdateTimeout.current = window.setTimeout(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n const index = items.findIndex((option) => option.hasAttribute(`data-combobox-${target}`));\n\n selectedOptionIndex.current = index;\n\n if (options?.scrollIntoView) {\n items[index]?.scrollIntoView({ block: 'nearest', behavior: scrollBehavior });\n }\n }, 0);\n },\n []\n );\n\n const resetSelectedOption = useCallback(() => {\n selectedOptionIndex.current = -1;\n clearSelectedItem();\n }, [clearSelectedItem]);\n\n const clickSelectedOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n const item = items?.[selectedOptionIndex.current];\n item?.click();\n }, []);\n\n const setListId = useCallback((id: string) => {\n listId.current = id;\n }, []);\n\n const focusSearchInput = useCallback(() => {\n focusSearchTimeout.current = window.setTimeout(() => searchRef.current?.focus(), 0);\n }, []);\n\n const focusTarget = useCallback(() => {\n focusTargetTimeout.current = window.setTimeout(() => targetRef.current?.focus(), 0);\n }, []);\n\n const getSelectedOptionIndex = useCallback(() => selectedOptionIndex.current, []);\n\n useEffect(\n () => () => {\n window.clearTimeout(focusSearchTimeout.current);\n window.clearTimeout(focusTargetTimeout.current);\n window.clearTimeout(selectedIndexUpdateTimeout.current);\n },\n []\n );\n\n return {\n dropdownOpened,\n openDropdown,\n closeDropdown,\n toggleDropdown,\n\n selectedOptionIndex: selectedOptionIndex.current,\n getSelectedOptionIndex,\n selectOption,\n selectFirstOption,\n selectActiveOption,\n selectNextOption,\n selectPreviousOption,\n resetSelectedOption,\n updateSelectedOptionIndex,\n\n listId: listId.current,\n setListId,\n clickSelectedOption,\n\n searchRef,\n focusSearchInput,\n\n targetRef,\n focusTarget,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-combobox.mjs","names":[],"sources":["../../../../src/components/Combobox/use-combobox/use-combobox.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { findElementBySelector, findElementsBySelector, getRootElement } from '../../../core/utils';\nimport { getFirstIndex, getNextIndex, getPreviousIndex } from './get-index/get-index';\n\nexport type ComboboxDropdownEventSource = 'keyboard' | 'mouse' | 'unknown';\n\nexport interface ComboboxStore {\n /** Current dropdown opened state */\n dropdownOpened: boolean;\n\n /** Opens dropdown */\n openDropdown: (eventSource?: ComboboxDropdownEventSource) => void;\n\n /** Closes dropdown */\n closeDropdown: (eventSource?: ComboboxDropdownEventSource) => void;\n\n /** Toggles dropdown opened state */\n toggleDropdown: (eventSource?: ComboboxDropdownEventSource) => void;\n\n /** Selected option index ref */\n selectedOptionIndex: number;\n\n /** Returns currently selected option index or `-1` if none of the options is selected */\n getSelectedOptionIndex: () => number;\n\n /** Selects `Combobox.Option` by index */\n selectOption: (index: number) => void;\n\n /** Selects first `Combobox.Option` with `active` prop.\n * If there are no such options, the function does nothing.\n */\n selectActiveOption: () => string | null;\n\n /** Selects first `Combobox.Option` that is not disabled.\n * If there are no such options, the function does nothing.\n * */\n selectFirstOption: () => string | null;\n\n /** Selects next `Combobox.Option` that is not disabled.\n * If the current option is the last one, the function selects first option, if `loop` is true.\n */\n selectNextOption: () => string | null;\n\n /** Selects previous `Combobox.Option` that is not disabled.\n * If the current option is the first one, the function selects last option, if `loop` is true.\n * */\n selectPreviousOption: () => string | null;\n\n /** Resets selected option index to -1, removes `data-combobox-selected` from selected option */\n resetSelectedOption: () => void;\n\n /** Triggers `onClick` event of selected option.\n * If there is no selected option, the function does nothing.\n */\n clickSelectedOption: () => void;\n\n /** Updates selected option index to currently selected or active option.\n * The function is required to be used with searchable components to update selected option index\n * when options list changes based on search query.\n */\n updateSelectedOptionIndex: (\n target?: 'active' | 'selected' | number,\n options?: { scrollIntoView?: boolean }\n ) => void;\n\n /** List id, used for `aria-*` attributes */\n listId: string | null;\n\n /** Sets list id */\n setListId: (id: string) => void;\n\n /** Ref of `Combobox.Search` input */\n searchRef: React.RefObject<HTMLInputElement | null>;\n\n /** Moves focus to `Combobox.Search` input */\n focusSearchInput: () => void;\n\n /** Ref of the target element */\n targetRef: React.RefObject<HTMLElement | null>;\n\n /** Moves focus to the target element */\n focusTarget: () => void;\n}\n\nexport interface UseComboboxOptions {\n /** Default value for `dropdownOpened`, `false` by default. Used when the component is uncontrolled */\n defaultOpened?: boolean;\n\n /** Controlled `dropdownOpened` state. When set, the dropdown opened state is controlled by the parent component */\n opened?: boolean;\n\n /** Called when `dropdownOpened` state changes. Required for controlled mode */\n onOpenedChange?: (opened: boolean) => void;\n\n /** Called when dropdown closes with event source: keyboard, mouse or unknown. Useful for analytics or side effects on dropdown closure */\n onDropdownClose?: (eventSource: ComboboxDropdownEventSource) => void;\n\n /** Called when dropdown opens with event source: keyboard, mouse or unknown. Useful for analytics or side effects on dropdown opening */\n onDropdownOpen?: (eventSource: ComboboxDropdownEventSource) => void;\n\n /** Determines whether arrow key presses should loop through items (first to last and last to first). Defaults to `true` */\n loop?: boolean;\n\n /** `behavior` passed down to `element.scrollIntoView`. Controls the scrolling animation when options are scrolled into view. Defaults to `'instant'` */\n scrollBehavior?: ScrollBehavior;\n}\n\nexport function useCombobox({\n defaultOpened,\n opened,\n onOpenedChange,\n onDropdownClose,\n onDropdownOpen,\n loop = true,\n scrollBehavior = 'instant',\n}: UseComboboxOptions = {}): ComboboxStore {\n const [dropdownOpened, setDropdownOpened] = useUncontrolled({\n value: opened,\n defaultValue: defaultOpened,\n finalValue: false,\n onChange: onOpenedChange,\n });\n\n const listId = useRef<string | null>(null);\n const selectedOptionIndex = useRef<number>(-1);\n const searchRef = useRef<HTMLInputElement | null>(null);\n const targetRef = useRef<HTMLElement | null>(null);\n const focusSearchTimeout = useRef<number>(-1);\n const focusTargetTimeout = useRef<number>(-1);\n const selectedIndexUpdateTimeout = useRef<number>(-1);\n\n const openDropdown: ComboboxStore['openDropdown'] = useCallback(\n (eventSource = 'unknown') => {\n if (!dropdownOpened) {\n setDropdownOpened(true);\n onDropdownOpen?.(eventSource);\n }\n },\n [setDropdownOpened, onDropdownOpen, dropdownOpened]\n );\n\n const closeDropdown: ComboboxStore['closeDropdown'] = useCallback(\n (eventSource = 'unknown') => {\n if (dropdownOpened) {\n setDropdownOpened(false);\n onDropdownClose?.(eventSource);\n }\n },\n [setDropdownOpened, onDropdownClose, dropdownOpened]\n );\n\n const toggleDropdown: ComboboxStore['toggleDropdown'] = useCallback(\n (eventSource = 'unknown') => {\n if (dropdownOpened) {\n closeDropdown(eventSource);\n } else {\n openDropdown(eventSource);\n }\n },\n [closeDropdown, openDropdown, dropdownOpened]\n );\n\n const clearSelectedItem = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const selected = findElementBySelector(`#${listId.current} [data-combobox-selected]`, root);\n selected?.removeAttribute('data-combobox-selected');\n selected?.removeAttribute('aria-selected');\n }, []);\n\n const selectOption = useCallback(\n (index: number) => {\n const root = getRootElement(targetRef.current);\n const list = findElementBySelector(`#${listId.current!}`, root);\n const items = list\n ? findElementsBySelector<HTMLDivElement>('[data-combobox-option]', list)\n : null;\n\n if (!items) {\n return null;\n }\n\n const nextIndex = index >= items!.length ? 0 : index < 0 ? items!.length - 1 : index;\n selectedOptionIndex.current = nextIndex;\n\n if (items?.[nextIndex] && !items[nextIndex].hasAttribute('data-combobox-disabled')) {\n clearSelectedItem();\n items[nextIndex].setAttribute('data-combobox-selected', 'true');\n items[nextIndex].setAttribute('aria-selected', 'true');\n items[nextIndex].scrollIntoView({ block: 'nearest', behavior: scrollBehavior });\n return items[nextIndex].id;\n }\n\n return null;\n },\n [scrollBehavior, clearSelectedItem]\n );\n\n const selectActiveOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const activeOption = findElementBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-active]`,\n root\n );\n\n if (activeOption) {\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n const index = items.findIndex((option) => option === activeOption);\n return selectOption(index);\n }\n\n return selectOption(0);\n }, [selectOption]);\n\n const selectNextOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n return selectOption(getNextIndex(selectedOptionIndex.current, items, loop));\n }, [selectOption, loop]);\n\n const selectPreviousOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n return selectOption(getPreviousIndex(selectedOptionIndex.current, items, loop));\n }, [selectOption, loop]);\n\n const selectFirstOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n return selectOption(getFirstIndex(items));\n }, [selectOption]);\n\n const updateSelectedOptionIndex: ComboboxStore['updateSelectedOptionIndex'] = useCallback(\n (target = 'selected', options) => {\n if (typeof target === 'number') {\n selectedOptionIndex.current = target;\n const root = getRootElement(targetRef.current);\n\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n\n if (options?.scrollIntoView) {\n items[target]?.scrollIntoView({ block: 'nearest', behavior: scrollBehavior });\n }\n return;\n }\n\n selectedIndexUpdateTimeout.current = window.setTimeout(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n const index = items.findIndex((option) => option.hasAttribute(`data-combobox-${target}`));\n\n selectedOptionIndex.current = index;\n\n if (options?.scrollIntoView) {\n items[index]?.scrollIntoView({ block: 'nearest', behavior: scrollBehavior });\n }\n }, 0);\n },\n []\n );\n\n const resetSelectedOption = useCallback(() => {\n selectedOptionIndex.current = -1;\n clearSelectedItem();\n }, [clearSelectedItem]);\n\n const clickSelectedOption = useCallback(() => {\n const root = getRootElement(targetRef.current);\n const items = findElementsBySelector<HTMLDivElement>(\n `#${listId.current} [data-combobox-option]`,\n root\n );\n const item = items?.[selectedOptionIndex.current];\n item?.click();\n }, []);\n\n const setListId = useCallback((id: string) => {\n listId.current = id;\n }, []);\n\n const focusSearchInput = useCallback(() => {\n focusSearchTimeout.current = window.setTimeout(() => searchRef.current?.focus(), 0);\n }, []);\n\n const focusTarget = useCallback(() => {\n focusTargetTimeout.current = window.setTimeout(() => targetRef.current?.focus(), 0);\n }, []);\n\n const getSelectedOptionIndex = useCallback(() => selectedOptionIndex.current, []);\n\n useEffect(\n () => () => {\n window.clearTimeout(focusSearchTimeout.current);\n window.clearTimeout(focusTargetTimeout.current);\n window.clearTimeout(selectedIndexUpdateTimeout.current);\n },\n []\n );\n\n return {\n dropdownOpened,\n openDropdown,\n closeDropdown,\n toggleDropdown,\n\n selectedOptionIndex: selectedOptionIndex.current,\n getSelectedOptionIndex,\n selectOption,\n selectFirstOption,\n selectActiveOption,\n selectNextOption,\n selectPreviousOption,\n resetSelectedOption,\n updateSelectedOptionIndex,\n\n listId: listId.current,\n setListId,\n clickSelectedOption,\n\n searchRef,\n focusSearchInput,\n\n targetRef,\n focusTarget,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-pills-reorder.mjs","names":[],"sources":["../../../../src/components/Combobox/use-pills-reorder/use-pills-reorder.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { movePill, PillReorderPosition } from './move-pill';\n\nexport interface PillReorderProps {\n draggable: boolean;\n tabIndex: number;\n 'data-mantine-pill-index': number;\n 'aria-keyshortcuts': string;\n onMouseDown: (event: React.MouseEvent<HTMLElement>) => void;\n onDragStart: (event: React.DragEvent<HTMLElement>) => void;\n onDragOver: (event: React.DragEvent<HTMLElement>) => void;\n onDragLeave: (event: React.DragEvent<HTMLElement>) => void;\n onDrop: (event: React.DragEvent<HTMLElement>) => void;\n onDragEnd: (event: React.DragEvent<HTMLElement>) => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n}\n\nexport interface PillsReorderListProps {\n ref?: (node: HTMLDivElement | null) => void;\n}\n\nexport interface UsePillsReorderInput<T> {\n value: T[];\n onChange: (value: T[]) => void;\n enabled: boolean | undefined;\n}\n\ninterface PillDragState {\n draggedIndex: number | null;\n currentDropTarget: HTMLElement | null;\n}\n\ninterface PendingFocus<T> {\n container: HTMLElement | null;\n index: number;\n expectedValue: T[];\n}\n\nconst findSearchInput = (container: HTMLElement): HTMLInputElement | null => {\n const lastChild = container.lastElementChild;\n if (!lastChild) {\n return null;\n }\n if (lastChild instanceof HTMLInputElement) {\n return lastChild;\n }\n return lastChild.querySelector<HTMLInputElement>('input');\n};\n\nconst valuesMatch = <T>(a: T[], b: T[]): boolean => {\n if (a === b) {\n return true;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n};\n\nexport function usePillsReorder<T>({ value, onChange, enabled }: UsePillsReorderInput<T>) {\n const dragStateRef = useRef<PillDragState>({ draggedIndex: null, currentDropTarget: null });\n const pendingFocusRef = useRef<PendingFocus<T> | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const valueRef = useRef(value);\n valueRef.current = value;\n\n useEffect(() => {\n const pending = pendingFocusRef.current;\n if (!pending) {\n return;\n }\n pendingFocusRef.current = null;\n if (!valuesMatch(valueRef.current, pending.expectedValue)) {\n return;\n }\n pending.container\n ?.querySelector<HTMLElement>(`[data-mantine-pill-index=\"${pending.index}\"]`)\n ?.focus();\n });\n\n const setContainer = useCallback((node: HTMLDivElement | null) => {\n containerRef.current = node;\n }, []);\n\n const getListProps = (): PillsReorderListProps => {\n if (!enabled) {\n return {};\n }\n return { ref: setContainer };\n };\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!enabled || event.key !== 'ArrowLeft') {\n return;\n }\n\n const input = event.currentTarget;\n const caretAtStart =\n input.value.length === 0 || (input.selectionStart === 0 && input.selectionEnd === 0);\n if (!caretAtStart) {\n return;\n }\n\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const pills = container.querySelectorAll<HTMLElement>('[data-mantine-pill-index]');\n if (pills.length === 0) {\n return;\n }\n\n event.preventDefault();\n pills[pills.length - 1].focus();\n };\n\n const getPillProps = (index: number): PillReorderProps | undefined => {\n if (!enabled) {\n return undefined;\n }\n\n return {\n draggable: true,\n tabIndex: -1,\n 'data-mantine-pill-index': index,\n 'aria-keyshortcuts': 'Alt+ArrowLeft Alt+ArrowRight',\n onMouseDown: (event) => {\n if (event.button === 0) {\n event.stopPropagation();\n }\n },\n onDragStart: (event) => {\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', String(index));\n dragStateRef.current.draggedIndex = index;\n\n const target = event.currentTarget;\n const rect = target.getBoundingClientRect();\n const ghost = target.cloneNode(true) as HTMLElement;\n ghost.removeAttribute('data-dragging');\n ghost.removeAttribute('data-drag-over');\n ghost.style.position = 'fixed';\n ghost.style.top = '-9999px';\n ghost.style.left = '-9999px';\n ghost.style.width = `${rect.width}px`;\n ghost.style.height = `${rect.height}px`;\n ghost.style.pointerEvents = 'none';\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, event.clientX - rect.left, event.clientY - rect.top);\n\n setTimeout(() => ghost.parentNode?.removeChild(ghost), 0);\n\n requestAnimationFrame(() => {\n target.setAttribute('data-dragging', 'true');\n });\n },\n onDragOver: (event) => {\n const { draggedIndex } = dragStateRef.current;\n if (draggedIndex === null || draggedIndex === index) {\n return;\n }\n\n const target = event.currentTarget;\n const rect = target.getBoundingClientRect();\n const x = event.clientX - rect.left;\n const isRtl = getComputedStyle(target).direction === 'rtl';\n const isStart = isRtl ? x > rect.width / 2 : x < rect.width / 2;\n const position: PillReorderPosition = isStart ? 'before' : 'after';\n\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = 'move';\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget && prevTarget !== target) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n target.setAttribute('data-drag-over', position);\n dragStateRef.current.currentDropTarget = target;\n },\n onDragLeave: (event) => {\n const target = event.currentTarget;\n const related = event.relatedTarget as Node | null;\n if (related && target.contains(related)) {\n return;\n }\n\n target.removeAttribute('data-drag-over');\n if (dragStateRef.current.currentDropTarget === target) {\n dragStateRef.current.currentDropTarget = null;\n }\n },\n onDrop: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const target = event.currentTarget;\n const position = target.getAttribute('data-drag-over') as PillReorderPosition | null;\n target.removeAttribute('data-drag-over');\n\n const { draggedIndex } = dragStateRef.current;\n if (draggedIndex !== null && position && draggedIndex !== index) {\n const nextValue = movePill(valueRef.current, draggedIndex, index, position);\n if (nextValue !== valueRef.current) {\n onChange(nextValue);\n }\n }\n\n dragStateRef.current.draggedIndex = null;\n dragStateRef.current.currentDropTarget = null;\n },\n onDragEnd: (event) => {\n const target = event.currentTarget;\n target.removeAttribute('data-dragging');\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n dragStateRef.current.draggedIndex = null;\n dragStateRef.current.currentDropTarget = null;\n },\n onKeyDown: (event) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n return;\n }\n\n const target = event.currentTarget;\n const isRtl = getComputedStyle(target).direction === 'rtl';\n const movingForward = isRtl ? event.key === 'ArrowLeft' : event.key === 'ArrowRight';\n const targetIndex = movingForward ? index + 1 : index - 1;\n\n if (event.altKey) {\n if (targetIndex < 0 || targetIndex >= valueRef.current.length) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const position: PillReorderPosition = movingForward ? 'after' : 'before';\n const nextValue = movePill(valueRef.current, index, targetIndex, position);\n if (nextValue === valueRef.current) {\n return;\n }\n\n pendingFocusRef.current = {\n container: target.parentElement,\n index: targetIndex,\n expectedValue: nextValue,\n };\n onChange(nextValue);\n return;\n }\n\n if (targetIndex < 0) {\n return;\n }\n\n const container = target.parentElement;\n if (!container) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (targetIndex >= valueRef.current.length) {\n findSearchInput(container)?.focus();\n return;\n }\n\n container.querySelector<HTMLElement>(`[data-mantine-pill-index=\"${targetIndex}\"]`)?.focus();\n },\n };\n };\n\n return { getPillProps, getListProps, handleInputKeyDown };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-pills-reorder.mjs","names":[],"sources":["../../../../src/components/Combobox/use-pills-reorder/use-pills-reorder.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { movePill, PillReorderPosition } from './move-pill';\n\nexport interface PillReorderProps {\n draggable: boolean;\n tabIndex: number;\n 'data-mantine-pill-index': number;\n 'aria-keyshortcuts': string;\n onMouseDown: (event: React.MouseEvent<HTMLElement>) => void;\n onDragStart: (event: React.DragEvent<HTMLElement>) => void;\n onDragOver: (event: React.DragEvent<HTMLElement>) => void;\n onDragLeave: (event: React.DragEvent<HTMLElement>) => void;\n onDrop: (event: React.DragEvent<HTMLElement>) => void;\n onDragEnd: (event: React.DragEvent<HTMLElement>) => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n}\n\nexport interface PillsReorderListProps {\n ref?: (node: HTMLDivElement | null) => void;\n}\n\nexport interface UsePillsReorderInput<T> {\n value: T[];\n onChange: (value: T[]) => void;\n enabled: boolean | undefined;\n}\n\ninterface PillDragState {\n draggedIndex: number | null;\n currentDropTarget: HTMLElement | null;\n}\n\ninterface PendingFocus<T> {\n container: HTMLElement | null;\n index: number;\n expectedValue: T[];\n}\n\nconst findSearchInput = (container: HTMLElement): HTMLInputElement | null => {\n const lastChild = container.lastElementChild;\n if (!lastChild) {\n return null;\n }\n if (lastChild instanceof HTMLInputElement) {\n return lastChild;\n }\n return lastChild.querySelector<HTMLInputElement>('input');\n};\n\nconst valuesMatch = <T>(a: T[], b: T[]): boolean => {\n if (a === b) {\n return true;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n};\n\nexport function usePillsReorder<T>({ value, onChange, enabled }: UsePillsReorderInput<T>) {\n const dragStateRef = useRef<PillDragState>({ draggedIndex: null, currentDropTarget: null });\n const pendingFocusRef = useRef<PendingFocus<T> | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const valueRef = useRef(value);\n valueRef.current = value;\n\n useEffect(() => {\n const pending = pendingFocusRef.current;\n if (!pending) {\n return;\n }\n pendingFocusRef.current = null;\n if (!valuesMatch(valueRef.current, pending.expectedValue)) {\n return;\n }\n pending.container\n ?.querySelector<HTMLElement>(`[data-mantine-pill-index=\"${pending.index}\"]`)\n ?.focus();\n });\n\n const setContainer = useCallback((node: HTMLDivElement | null) => {\n containerRef.current = node;\n }, []);\n\n const getListProps = (): PillsReorderListProps => {\n if (!enabled) {\n return {};\n }\n return { ref: setContainer };\n };\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!enabled || event.key !== 'ArrowLeft') {\n return;\n }\n\n const input = event.currentTarget;\n const caretAtStart =\n input.value.length === 0 || (input.selectionStart === 0 && input.selectionEnd === 0);\n if (!caretAtStart) {\n return;\n }\n\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const pills = container.querySelectorAll<HTMLElement>('[data-mantine-pill-index]');\n if (pills.length === 0) {\n return;\n }\n\n event.preventDefault();\n pills[pills.length - 1].focus();\n };\n\n const getPillProps = (index: number): PillReorderProps | undefined => {\n if (!enabled) {\n return undefined;\n }\n\n return {\n draggable: true,\n tabIndex: -1,\n 'data-mantine-pill-index': index,\n 'aria-keyshortcuts': 'Alt+ArrowLeft Alt+ArrowRight',\n onMouseDown: (event) => {\n if (event.button === 0) {\n event.stopPropagation();\n }\n },\n onDragStart: (event) => {\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', String(index));\n dragStateRef.current.draggedIndex = index;\n\n const target = event.currentTarget;\n const rect = target.getBoundingClientRect();\n const ghost = target.cloneNode(true) as HTMLElement;\n ghost.removeAttribute('data-dragging');\n ghost.removeAttribute('data-drag-over');\n ghost.style.position = 'fixed';\n ghost.style.top = '-9999px';\n ghost.style.left = '-9999px';\n ghost.style.width = `${rect.width}px`;\n ghost.style.height = `${rect.height}px`;\n ghost.style.pointerEvents = 'none';\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, event.clientX - rect.left, event.clientY - rect.top);\n\n setTimeout(() => ghost.parentNode?.removeChild(ghost), 0);\n\n requestAnimationFrame(() => {\n target.setAttribute('data-dragging', 'true');\n });\n },\n onDragOver: (event) => {\n const { draggedIndex } = dragStateRef.current;\n if (draggedIndex === null || draggedIndex === index) {\n return;\n }\n\n const target = event.currentTarget;\n const rect = target.getBoundingClientRect();\n const x = event.clientX - rect.left;\n const isRtl = getComputedStyle(target).direction === 'rtl';\n const isStart = isRtl ? x > rect.width / 2 : x < rect.width / 2;\n const position: PillReorderPosition = isStart ? 'before' : 'after';\n\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = 'move';\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget && prevTarget !== target) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n target.setAttribute('data-drag-over', position);\n dragStateRef.current.currentDropTarget = target;\n },\n onDragLeave: (event) => {\n const target = event.currentTarget;\n const related = event.relatedTarget as Node | null;\n if (related && target.contains(related)) {\n return;\n }\n\n target.removeAttribute('data-drag-over');\n if (dragStateRef.current.currentDropTarget === target) {\n dragStateRef.current.currentDropTarget = null;\n }\n },\n onDrop: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const target = event.currentTarget;\n const position = target.getAttribute('data-drag-over') as PillReorderPosition | null;\n target.removeAttribute('data-drag-over');\n\n const { draggedIndex } = dragStateRef.current;\n if (draggedIndex !== null && position && draggedIndex !== index) {\n const nextValue = movePill(valueRef.current, draggedIndex, index, position);\n if (nextValue !== valueRef.current) {\n onChange(nextValue);\n }\n }\n\n dragStateRef.current.draggedIndex = null;\n dragStateRef.current.currentDropTarget = null;\n },\n onDragEnd: (event) => {\n const target = event.currentTarget;\n target.removeAttribute('data-dragging');\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n dragStateRef.current.draggedIndex = null;\n dragStateRef.current.currentDropTarget = null;\n },\n onKeyDown: (event) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n return;\n }\n\n const target = event.currentTarget;\n const isRtl = getComputedStyle(target).direction === 'rtl';\n const movingForward = isRtl ? event.key === 'ArrowLeft' : event.key === 'ArrowRight';\n const targetIndex = movingForward ? index + 1 : index - 1;\n\n if (event.altKey) {\n if (targetIndex < 0 || targetIndex >= valueRef.current.length) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const position: PillReorderPosition = movingForward ? 'after' : 'before';\n const nextValue = movePill(valueRef.current, index, targetIndex, position);\n if (nextValue === valueRef.current) {\n return;\n }\n\n pendingFocusRef.current = {\n container: target.parentElement,\n index: targetIndex,\n expectedValue: nextValue,\n };\n onChange(nextValue);\n return;\n }\n\n if (targetIndex < 0) {\n return;\n }\n\n const container = target.parentElement;\n if (!container) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (targetIndex >= valueRef.current.length) {\n findSearchInput(container)?.focus();\n return;\n }\n\n container.querySelector<HTMLElement>(`[data-mantine-pill-index=\"${targetIndex}\"]`)?.focus();\n },\n };\n };\n\n return { getPillProps, getListProps, handleInputKeyDown };\n}\n"],"mappings":";;;;AAsCA,MAAM,mBAAmB,cAAoD;CAC3E,MAAM,YAAY,UAAU;CAC5B,IAAI,CAAC,WACH,OAAO;CAET,IAAI,qBAAqB,kBACvB,OAAO;CAET,OAAO,UAAU,cAAgC,OAAO;AAC1D;AAEA,MAAM,eAAkB,GAAQ,MAAoB;CAClD,IAAI,MAAM,GACR,OAAO;CAET,IAAI,EAAE,WAAW,EAAE,QACjB,OAAO;CAET,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,GACjC,IAAI,EAAE,OAAO,EAAE,IACb,OAAO;CAGX,OAAO;AACT;AAEA,SAAgB,gBAAmB,EAAE,OAAO,UAAU,WAAoC;CACxF,MAAM,eAAe,OAAsB;EAAE,cAAc;EAAM,mBAAmB;CAAK,CAAC;CAC1F,MAAM,kBAAkB,OAA+B,IAAI;CAC3D,MAAM,eAAe,OAA8B,IAAI;CACvD,MAAM,WAAW,OAAO,KAAK;CAC7B,SAAS,UAAU;CAEnB,gBAAgB;EACd,MAAM,UAAU,gBAAgB;EAChC,IAAI,CAAC,SACH;EAEF,gBAAgB,UAAU;EAC1B,IAAI,CAAC,YAAY,SAAS,SAAS,QAAQ,aAAa,GACtD;EAEF,QAAQ,WACJ,cAA2B,6BAA6B,QAAQ,MAAM,GAAG,CAAC,EAC1E,MAAM;CACZ,CAAC;CAED,MAAM,eAAe,aAAa,SAAgC;EAChE,aAAa,UAAU;CACzB,GAAG,CAAC,CAAC;CAEL,MAAM,qBAA4C;EAChD,IAAI,CAAC,SACH,OAAO,CAAC;EAEV,OAAO,EAAE,KAAK,aAAa;CAC7B;CAEA,MAAM,sBAAsB,UAAiD;EAC3E,IAAI,CAAC,WAAW,MAAM,QAAQ,aAC5B;EAGF,MAAM,QAAQ,MAAM;EAGpB,IAAI,EADF,MAAM,MAAM,WAAW,KAAM,MAAM,mBAAmB,KAAK,MAAM,iBAAiB,IAElF;EAGF,MAAM,YAAY,aAAa;EAC/B,IAAI,CAAC,WACH;EAGF,MAAM,QAAQ,UAAU,iBAA8B,2BAA2B;EACjF,IAAI,MAAM,WAAW,GACnB;EAGF,MAAM,eAAe;EACrB,MAAM,MAAM,SAAS,EAAE,CAAC,MAAM;CAChC;CAEA,MAAM,gBAAgB,UAAgD;EACpE,IAAI,CAAC,SACH;EAGF,OAAO;GACL,WAAW;GACX,UAAU;GACV,2BAA2B;GAC3B,qBAAqB;GACrB,cAAc,UAAU;IACtB,IAAI,MAAM,WAAW,GACnB,MAAM,gBAAgB;GAE1B;GACA,cAAc,UAAU;IACtB,MAAM,gBAAgB;IACtB,MAAM,aAAa,gBAAgB;IACnC,MAAM,aAAa,QAAQ,cAAc,OAAO,KAAK,CAAC;IACtD,aAAa,QAAQ,eAAe;IAEpC,MAAM,SAAS,MAAM;IACrB,MAAM,OAAO,OAAO,sBAAsB;IAC1C,MAAM,QAAQ,OAAO,UAAU,IAAI;IACnC,MAAM,gBAAgB,eAAe;IACrC,MAAM,gBAAgB,gBAAgB;IACtC,MAAM,MAAM,WAAW;IACvB,MAAM,MAAM,MAAM;IAClB,MAAM,MAAM,OAAO;IACnB,MAAM,MAAM,QAAQ,GAAG,KAAK,MAAM;IAClC,MAAM,MAAM,SAAS,GAAG,KAAK,OAAO;IACpC,MAAM,MAAM,gBAAgB;IAC5B,SAAS,KAAK,YAAY,KAAK;IAC/B,MAAM,aAAa,aAAa,OAAO,MAAM,UAAU,KAAK,MAAM,MAAM,UAAU,KAAK,GAAG;IAE1F,iBAAiB,MAAM,YAAY,YAAY,KAAK,GAAG,CAAC;IAExD,4BAA4B;KAC1B,OAAO,aAAa,iBAAiB,MAAM;IAC7C,CAAC;GACH;GACA,aAAa,UAAU;IACrB,MAAM,EAAE,iBAAiB,aAAa;IACtC,IAAI,iBAAiB,QAAQ,iBAAiB,OAC5C;IAGF,MAAM,SAAS,MAAM;IACrB,MAAM,OAAO,OAAO,sBAAsB;IAC1C,MAAM,IAAI,MAAM,UAAU,KAAK;IAG/B,MAAM,YAFQ,iBAAiB,MAAM,CAAC,CAAC,cAAc,QAC7B,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,KACd,WAAW;IAE3D,MAAM,eAAe;IACrB,MAAM,gBAAgB;IACtB,MAAM,aAAa,aAAa;IAEhC,MAAM,aAAa,aAAa,QAAQ;IACxC,IAAI,cAAc,eAAe,QAC/B,WAAW,gBAAgB,gBAAgB;IAG7C,OAAO,aAAa,kBAAkB,QAAQ;IAC9C,aAAa,QAAQ,oBAAoB;GAC3C;GACA,cAAc,UAAU;IACtB,MAAM,SAAS,MAAM;IACrB,MAAM,UAAU,MAAM;IACtB,IAAI,WAAW,OAAO,SAAS,OAAO,GACpC;IAGF,OAAO,gBAAgB,gBAAgB;IACvC,IAAI,aAAa,QAAQ,sBAAsB,QAC7C,aAAa,QAAQ,oBAAoB;GAE7C;GACA,SAAS,UAAU;IACjB,MAAM,eAAe;IACrB,MAAM,gBAAgB;IAEtB,MAAM,SAAS,MAAM;IACrB,MAAM,WAAW,OAAO,aAAa,gBAAgB;IACrD,OAAO,gBAAgB,gBAAgB;IAEvC,MAAM,EAAE,iBAAiB,aAAa;IACtC,IAAI,iBAAiB,QAAQ,YAAY,iBAAiB,OAAO;KAC/D,MAAM,YAAY,SAAS,SAAS,SAAS,cAAc,OAAO,QAAQ;KAC1E,IAAI,cAAc,SAAS,SACzB,SAAS,SAAS;IAEtB;IAEA,aAAa,QAAQ,eAAe;IACpC,aAAa,QAAQ,oBAAoB;GAC3C;GACA,YAAY,UAAU;IAEpB,MADqB,cACd,gBAAgB,eAAe;IAEtC,MAAM,aAAa,aAAa,QAAQ;IACxC,IAAI,YACF,WAAW,gBAAgB,gBAAgB;IAG7C,aAAa,QAAQ,eAAe;IACpC,aAAa,QAAQ,oBAAoB;GAC3C;GACA,YAAY,UAAU;IACpB,IAAI,MAAM,QAAQ,eAAe,MAAM,QAAQ,cAC7C;IAGF,MAAM,SAAS,MAAM;IAErB,MAAM,gBADQ,iBAAiB,MAAM,CAAC,CAAC,cAAc,QACvB,MAAM,QAAQ,cAAc,MAAM,QAAQ;IACxE,MAAM,cAAc,gBAAgB,QAAQ,IAAI,QAAQ;IAExD,IAAI,MAAM,QAAQ;KAChB,IAAI,cAAc,KAAK,eAAe,SAAS,QAAQ,QACrD;KAGF,MAAM,eAAe;KACrB,MAAM,gBAAgB;KAEtB,MAAM,WAAgC,gBAAgB,UAAU;KAChE,MAAM,YAAY,SAAS,SAAS,SAAS,OAAO,aAAa,QAAQ;KACzE,IAAI,cAAc,SAAS,SACzB;KAGF,gBAAgB,UAAU;MACxB,WAAW,OAAO;MAClB,OAAO;MACP,eAAe;KACjB;KACA,SAAS,SAAS;KAClB;IACF;IAEA,IAAI,cAAc,GAChB;IAGF,MAAM,YAAY,OAAO;IACzB,IAAI,CAAC,WACH;IAGF,MAAM,eAAe;IACrB,MAAM,gBAAgB;IAEtB,IAAI,eAAe,SAAS,QAAQ,QAAQ;KAC1C,gBAAgB,SAAS,CAAC,EAAE,MAAM;KAClC;IACF;IAEA,UAAU,cAA2B,6BAA6B,YAAY,GAAG,CAAC,EAAE,MAAM;GAC5F;EACF;CACF;CAEA,OAAO;EAAE;EAAc;EAAc;CAAmB;AAC1D"}