@mantine/core 9.3.2 → 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 (828) 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/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
  46. package/cjs/components/Burger/Burger.cjs.map +1 -1
  47. package/cjs/components/Button/Button.cjs.map +1 -1
  48. package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs.map +1 -1
  49. package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
  50. package/cjs/components/Card/Card.cjs.map +1 -1
  51. package/cjs/components/Card/Card.context.cjs.map +1 -1
  52. package/cjs/components/Card/CardSection/CardSection.cjs.map +1 -1
  53. package/cjs/components/Center/Center.cjs.map +1 -1
  54. package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
  55. package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  56. package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
  57. package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
  58. package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
  59. package/cjs/components/Chip/Chip.cjs.map +1 -1
  60. package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
  61. package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
  62. package/cjs/components/CloseButton/CloseIcon.cjs.map +1 -1
  63. package/cjs/components/Code/Code.cjs.map +1 -1
  64. package/cjs/components/Collapse/Collapse.cjs.map +1 -1
  65. package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
  66. package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
  67. package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs.map +1 -1
  68. package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
  69. package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
  70. package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
  71. package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs.map +1 -1
  72. package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
  73. package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
  74. package/cjs/components/ColorPicker/Thumb/Thumb.cjs.map +1 -1
  75. package/cjs/components/ColorPicker/converters/converters.cjs.map +1 -1
  76. package/cjs/components/ColorPicker/converters/parsers.cjs.map +1 -1
  77. package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
  78. package/cjs/components/Combobox/Combobox.cjs.map +1 -1
  79. package/cjs/components/Combobox/Combobox.context.cjs.map +1 -1
  80. package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
  81. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
  82. package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs.map +1 -1
  83. package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs.map +1 -1
  84. package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
  85. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
  86. package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
  87. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs +3 -2
  88. package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
  89. package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
  90. package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs.map +1 -1
  91. package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
  92. package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
  93. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
  94. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
  95. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs +2 -2
  96. package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
  97. package/cjs/components/Combobox/OptionsDropdown/default-options-filter.cjs.map +1 -1
  98. package/cjs/components/Combobox/use-combobox/get-index/get-index.cjs.map +1 -1
  99. package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
  100. package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
  101. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  102. package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
  103. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs +218 -0
  104. package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -0
  105. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs +45 -0
  106. package/cjs/components/ComboboxPopover/ComboboxPopoverTarget.cjs.map +1 -0
  107. package/cjs/components/Container/Container.cjs.map +1 -1
  108. package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
  109. package/cjs/components/DataList/DataList.cjs +61 -0
  110. package/cjs/components/DataList/DataList.cjs.map +1 -0
  111. package/cjs/components/DataList/DataList.context.cjs +8 -0
  112. package/cjs/components/DataList/DataList.context.cjs.map +1 -0
  113. package/cjs/components/DataList/DataList.module.cjs +12 -0
  114. package/cjs/components/DataList/DataList.module.cjs.map +1 -0
  115. package/cjs/components/DataList/DataListItem/DataListItem.cjs +32 -0
  116. package/cjs/components/DataList/DataListItem/DataListItem.cjs.map +1 -0
  117. package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs +33 -0
  118. package/cjs/components/DataList/DataListItemLabel/DataListItemLabel.cjs.map +1 -0
  119. package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs +33 -0
  120. package/cjs/components/DataList/DataListItemValue/DataListItemValue.cjs.map +1 -0
  121. package/cjs/components/Dialog/Dialog.cjs.map +1 -1
  122. package/cjs/components/Divider/Divider.cjs.map +1 -1
  123. package/cjs/components/Drawer/Drawer.cjs.map +1 -1
  124. package/cjs/components/Drawer/Drawer.context.cjs.map +1 -1
  125. package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
  126. package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
  127. package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
  128. package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
  129. package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
  130. package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
  131. package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
  132. package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
  133. package/cjs/components/EmptyState/EmptyState.cjs +102 -0
  134. package/cjs/components/EmptyState/EmptyState.cjs.map +1 -0
  135. package/cjs/components/EmptyState/EmptyState.context.cjs +8 -0
  136. package/cjs/components/EmptyState/EmptyState.context.cjs.map +1 -0
  137. package/cjs/components/EmptyState/EmptyState.module.cjs +14 -0
  138. package/cjs/components/EmptyState/EmptyState.module.cjs.map +1 -0
  139. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs +28 -0
  140. package/cjs/components/EmptyState/EmptyStateActions/EmptyStateActions.cjs.map +1 -0
  141. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs +29 -0
  142. package/cjs/components/EmptyState/EmptyStateDescription/EmptyStateDescription.cjs.map +1 -0
  143. package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs +29 -0
  144. package/cjs/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.cjs.map +1 -0
  145. package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs +30 -0
  146. package/cjs/components/EmptyState/EmptyStateTitle/EmptyStateTitle.cjs.map +1 -0
  147. package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
  148. package/cjs/components/FileButton/FileButton.cjs.map +1 -1
  149. package/cjs/components/FileInput/FileInput.cjs.map +1 -1
  150. package/cjs/components/Flex/Flex.cjs.map +1 -1
  151. package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
  152. package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
  153. package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
  154. package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
  155. package/cjs/components/Grid/Grid.cjs.map +1 -1
  156. package/cjs/components/Grid/Grid.context.cjs.map +1 -1
  157. package/cjs/components/Grid/GridCol/GridCol.cjs.map +1 -1
  158. package/cjs/components/Grid/GridCol/GridColVariables.cjs.map +1 -1
  159. package/cjs/components/Grid/GridVariables.cjs.map +1 -1
  160. package/cjs/components/Group/Group.cjs.map +1 -1
  161. package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs.map +1 -1
  162. package/cjs/components/Highlight/Highlight.cjs.map +1 -1
  163. package/cjs/components/Highlight/highlighter/highlighter.cjs.map +1 -1
  164. package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
  165. package/cjs/components/HoverCard/HoverCard.context.cjs.map +1 -1
  166. package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
  167. package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
  168. package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
  169. package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
  170. package/cjs/components/Image/Image.cjs.map +1 -1
  171. package/cjs/components/Indicator/Indicator.cjs.map +1 -1
  172. package/cjs/components/Input/Input.cjs +7 -2
  173. package/cjs/components/Input/Input.cjs.map +1 -1
  174. package/cjs/components/Input/Input.context.cjs.map +1 -1
  175. package/cjs/components/Input/Input.module.cjs +1 -0
  176. package/cjs/components/Input/Input.module.cjs.map +1 -1
  177. package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
  178. package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
  179. package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
  180. package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
  181. package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
  182. package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
  183. package/cjs/components/Input/InputSuccess/InputSuccess.cjs +48 -0
  184. package/cjs/components/Input/InputSuccess/InputSuccess.cjs.map +1 -0
  185. package/cjs/components/Input/InputWrapper/InputWrapper.cjs +22 -5
  186. package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
  187. package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
  188. package/cjs/components/Input/use-input-props.cjs +4 -1
  189. package/cjs/components/Input/use-input-props.cjs.map +1 -1
  190. package/cjs/components/InputBase/InputBase.cjs.map +1 -1
  191. package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
  192. package/cjs/components/JsonInput/validate-json/validate-json.cjs.map +1 -1
  193. package/cjs/components/Kbd/Kbd.cjs.map +1 -1
  194. package/cjs/components/List/List.cjs.map +1 -1
  195. package/cjs/components/List/List.context.cjs.map +1 -1
  196. package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
  197. package/cjs/components/Loader/Loader.cjs.map +1 -1
  198. package/cjs/components/Loader/loaders/Bars.cjs.map +1 -1
  199. package/cjs/components/Loader/loaders/Dots.cjs.map +1 -1
  200. package/cjs/components/Loader/loaders/Oval.cjs.map +1 -1
  201. package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
  202. package/cjs/components/Mark/Mark.cjs.map +1 -1
  203. package/cjs/components/Marquee/Marquee.cjs.map +1 -1
  204. package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
  205. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
  206. package/cjs/components/Menu/Menu.cjs.map +1 -1
  207. package/cjs/components/Menu/Menu.context.cjs.map +1 -1
  208. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -1
  209. package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -1
  210. package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -1
  211. package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -1
  212. package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
  213. package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
  214. package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
  215. package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
  216. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -1
  217. package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -1
  218. package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -1
  219. package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -1
  220. package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -1
  221. package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
  222. package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
  223. package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
  224. package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
  225. package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs.map +1 -1
  226. package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
  227. package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -1
  228. package/cjs/components/Menubar/Menubar.cjs +146 -0
  229. package/cjs/components/Menubar/Menubar.cjs.map +1 -0
  230. package/cjs/components/Menubar/Menubar.context.cjs +12 -0
  231. package/cjs/components/Menubar/Menubar.context.cjs.map +1 -0
  232. package/cjs/components/Menubar/Menubar.module.cjs +10 -0
  233. package/cjs/components/Menubar/Menubar.module.cjs.map +1 -0
  234. package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs +61 -0
  235. package/cjs/components/Menubar/MenubarDropdown/MenubarDropdown.cjs.map +1 -0
  236. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs +59 -0
  237. package/cjs/components/Menubar/MenubarMenu/MenubarMenu.cjs.map +1 -0
  238. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs +143 -0
  239. package/cjs/components/Menubar/MenubarTarget/MenubarTarget.cjs.map +1 -0
  240. package/cjs/components/Modal/Modal.cjs.map +1 -1
  241. package/cjs/components/Modal/Modal.context.cjs.map +1 -1
  242. package/cjs/components/Modal/ModalBody.cjs.map +1 -1
  243. package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
  244. package/cjs/components/Modal/ModalContent.cjs.map +1 -1
  245. package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
  246. package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
  247. package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
  248. package/cjs/components/Modal/ModalStack.cjs.map +1 -1
  249. package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
  250. package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
  251. package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
  252. package/cjs/components/ModalBase/ModalBase.context.cjs.map +1 -1
  253. package/cjs/components/ModalBase/ModalBaseBody.cjs.map +1 -1
  254. package/cjs/components/ModalBase/ModalBaseCloseButton.cjs.map +1 -1
  255. package/cjs/components/ModalBase/ModalBaseContent.cjs.map +1 -1
  256. package/cjs/components/ModalBase/ModalBaseHeader.cjs.map +1 -1
  257. package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
  258. package/cjs/components/ModalBase/ModalBaseTitle.cjs.map +1 -1
  259. package/cjs/components/ModalBase/NativeScrollArea.cjs.map +1 -1
  260. package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
  261. package/cjs/components/ModalBase/use-modal-body-id.cjs.map +1 -1
  262. package/cjs/components/ModalBase/use-modal-title-id.cjs.map +1 -1
  263. package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
  264. package/cjs/components/MultiSelect/MultiSelect.cjs +4 -1
  265. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  266. package/cjs/components/MultiSelect/filter-picked-values.cjs.map +1 -1
  267. package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
  268. package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
  269. package/cjs/components/NavLink/NavLink.cjs.map +1 -1
  270. package/cjs/components/Notification/Notification.cjs.map +1 -1
  271. package/cjs/components/NumberFormatter/NumberFormatter.cjs.map +1 -1
  272. package/cjs/components/NumberInput/NumberInput.cjs.map +1 -1
  273. package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
  274. package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
  275. package/cjs/components/OverflowList/get-row-position-data.cjs.map +1 -1
  276. package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
  277. package/cjs/components/Overlay/Overlay.cjs.map +1 -1
  278. package/cjs/components/Pagination/Pagination.cjs.map +1 -1
  279. package/cjs/components/Pagination/Pagination.context.cjs.map +1 -1
  280. package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
  281. package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs.map +1 -1
  282. package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
  283. package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
  284. package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
  285. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -1
  286. package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
  287. package/cjs/components/Paper/Paper.cjs.map +1 -1
  288. package/cjs/components/PasswordInput/PasswordInput.cjs +11 -2
  289. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  290. package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
  291. package/cjs/components/Pill/Pill.cjs.map +1 -1
  292. package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
  293. package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
  294. package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
  295. package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
  296. package/cjs/components/PinInput/PinInput.cjs +2 -1
  297. package/cjs/components/PinInput/PinInput.cjs.map +1 -1
  298. package/cjs/components/PinInput/create-pin-array/create-pin-array.cjs.map +1 -1
  299. package/cjs/components/Popover/Popover.cjs.map +1 -1
  300. package/cjs/components/Popover/Popover.context.cjs.map +1 -1
  301. package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -1
  302. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
  303. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
  304. package/cjs/components/Popover/use-popover.cjs.map +1 -1
  305. package/cjs/components/Portal/OptionalPortal.cjs.map +1 -1
  306. package/cjs/components/Portal/Portal.cjs.map +1 -1
  307. package/cjs/components/Progress/Progress.cjs.map +1 -1
  308. package/cjs/components/Progress/Progress.context.cjs.map +1 -1
  309. package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
  310. package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
  311. package/cjs/components/Progress/ProgressSection/ProgressSection.cjs.map +1 -1
  312. package/cjs/components/Radio/Radio.cjs.map +1 -1
  313. package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
  314. package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
  315. package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
  316. package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
  317. package/cjs/components/Rating/Rating.cjs.map +1 -1
  318. package/cjs/components/Rating/Rating.context.cjs.map +1 -1
  319. package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
  320. package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
  321. package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
  322. package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
  323. package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
  324. package/cjs/components/RingProgress/get-curves/get-curves.cjs.map +1 -1
  325. package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
  326. package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
  327. package/cjs/components/RollingNumber/get-digit-parts.cjs.map +1 -1
  328. package/cjs/components/RollingNumber/get-render-slots.cjs.map +1 -1
  329. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  330. package/cjs/components/ScrollArea/ScrollArea.context.cjs.map +1 -1
  331. package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
  332. package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
  333. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs.map +1 -1
  334. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
  335. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
  336. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
  337. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
  338. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
  339. package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.context.cjs.map +1 -1
  340. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
  341. package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
  342. package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
  343. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs +1 -0
  344. package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
  345. package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
  346. package/cjs/components/ScrollArea/utils/add-unlinked-scroll-listener.cjs.map +1 -1
  347. package/cjs/components/ScrollArea/utils/get-scroll-position-from-pointer.cjs.map +1 -1
  348. package/cjs/components/ScrollArea/utils/get-thumb-offset-from-scroll.cjs.map +1 -1
  349. package/cjs/components/Scroller/Scroller.cjs.map +1 -1
  350. package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
  351. package/cjs/components/Select/Select.cjs.map +1 -1
  352. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +4 -1
  353. package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
  354. package/cjs/components/SemiCircleProgress/SemiCircleProgress.module.cjs.map +1 -1
  355. package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
  356. package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
  357. package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
  358. package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
  359. package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
  360. package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
  361. package/cjs/components/Slider/Slider.context.cjs.map +1 -1
  362. package/cjs/components/Slider/SliderRoot/SliderRoot.cjs.map +1 -1
  363. package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
  364. package/cjs/components/Slider/Track/Track.cjs.map +1 -1
  365. package/cjs/components/Slider/utils/get-precision/get-precision.cjs.map +1 -1
  366. package/cjs/components/Slider/utils/get-step-mark-value/get-step-mark-value.cjs.map +1 -1
  367. package/cjs/components/Space/Space.cjs.map +1 -1
  368. package/cjs/components/Splitter/GripIcon.cjs.map +1 -1
  369. package/cjs/components/Splitter/Splitter.cjs +22 -1
  370. package/cjs/components/Splitter/Splitter.cjs.map +1 -1
  371. package/cjs/components/Splitter/Splitter.context.cjs.map +1 -1
  372. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs +1 -2
  373. package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs.map +1 -1
  374. package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
  375. package/cjs/components/Stack/Stack.cjs.map +1 -1
  376. package/cjs/components/Stepper/Stepper.cjs.map +1 -1
  377. package/cjs/components/Stepper/Stepper.context.cjs.map +1 -1
  378. package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
  379. package/cjs/components/Switch/Switch.cjs.map +1 -1
  380. package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
  381. package/cjs/components/Table/Table.cjs.map +1 -1
  382. package/cjs/components/Table/Table.components.cjs.map +1 -1
  383. package/cjs/components/Table/Table.context.cjs.map +1 -1
  384. package/cjs/components/Table/TableDataRenderer.cjs.map +1 -1
  385. package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
  386. package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
  387. package/cjs/components/Tabs/Tabs.cjs +16 -1
  388. package/cjs/components/Tabs/Tabs.cjs.map +1 -1
  389. package/cjs/components/Tabs/Tabs.context.cjs.map +1 -1
  390. package/cjs/components/Tabs/TabsList/TabsList.cjs.map +1 -1
  391. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +6 -0
  392. package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
  393. package/cjs/components/Tabs/TabsTab/TabsTab.cjs +1 -1
  394. package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
  395. package/cjs/components/TagsInput/TagsInput.cjs +4 -1
  396. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  397. package/cjs/components/TagsInput/filter-picked-tags.cjs.map +1 -1
  398. package/cjs/components/TagsInput/get-splitted-tags.cjs.map +1 -1
  399. package/cjs/components/Text/Text.cjs.map +1 -1
  400. package/cjs/components/TextInput/TextInput.cjs.map +1 -1
  401. package/cjs/components/Textarea/Autosize.cjs.map +1 -1
  402. package/cjs/components/Textarea/Textarea.cjs.map +1 -1
  403. package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
  404. package/cjs/components/Timeline/Timeline.cjs.map +1 -1
  405. package/cjs/components/Timeline/Timeline.context.cjs.map +1 -1
  406. package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
  407. package/cjs/components/Title/Title.cjs.map +1 -1
  408. package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  409. package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
  410. package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
  411. package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
  412. package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
  413. package/cjs/components/Transition/Transition.cjs.map +1 -1
  414. package/cjs/components/Transition/get-transition-styles/get-transition-styles.cjs.map +1 -1
  415. package/cjs/components/Transition/use-transition.cjs.map +1 -1
  416. package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
  417. package/cjs/components/Tree/Tree.cjs.map +1 -1
  418. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  419. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +1 -1
  420. package/cjs/components/Tree/is-node-checked/is-node-checked.cjs.map +1 -1
  421. package/cjs/components/Tree/is-node-indeterminate/is-node-indeterminate.cjs.map +1 -1
  422. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
  423. package/cjs/components/Tree/use-tree.cjs.map +1 -1
  424. package/cjs/components/TreeSelect/TreeSelect.cjs +7 -1
  425. package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
  426. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
  427. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs.map +1 -1
  428. package/cjs/components/Typography/Typography.cjs.map +1 -1
  429. package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
  430. package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
  431. package/cjs/core/Box/Box.cjs.map +1 -1
  432. package/cjs/core/Box/get-box-mod/get-box-mod.cjs.map +1 -1
  433. package/cjs/core/Box/get-box-style/get-box-style.cjs.map +1 -1
  434. package/cjs/core/Box/get-style-object/get-style-object.cjs.map +1 -1
  435. package/cjs/core/Box/style-props/parse-style-props/parse-style-props.cjs.map +1 -1
  436. package/cjs/core/Box/style-props/parse-style-props/sort-media-queries.cjs.map +1 -1
  437. package/cjs/core/Box/style-props/resolvers/border-resolver/border-resolver.cjs.map +1 -1
  438. package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
  439. package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
  440. package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
  441. package/cjs/core/InlineStyles/css-object-to-string/css-object-to-string.cjs.map +1 -1
  442. package/cjs/core/InlineStyles/hash-styles.cjs.map +1 -1
  443. package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs.map +1 -1
  444. package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
  445. package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs.map +1 -1
  446. package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
  447. package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs +5 -1
  448. package/cjs/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.cjs.map +1 -1
  449. package/cjs/core/MantineProvider/MantineCssVariables/get-css-color-variables.cjs.map +1 -1
  450. package/cjs/core/MantineProvider/MantineCssVariables/remove-default-variables.cjs.map +1 -1
  451. package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs +3 -1
  452. package/cjs/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.cjs.map +1 -1
  453. package/cjs/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.cjs.map +1 -1
  454. package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
  455. package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
  456. package/cjs/core/MantineProvider/color-functions/colors-tuple/colors-tuple.cjs.map +1 -1
  457. package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs +3 -1
  458. package/cjs/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.cjs.map +1 -1
  459. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs +19 -3
  460. package/cjs/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.cjs.map +1 -1
  461. package/cjs/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.cjs.map +1 -1
  462. package/cjs/core/MantineProvider/color-functions/to-rgba/to-rgba.cjs.map +1 -1
  463. package/cjs/core/MantineProvider/convert-css-variables/convert-css-variables.cjs.map +1 -1
  464. package/cjs/core/MantineProvider/convert-css-variables/css-variables-object-to-string.cjs.map +1 -1
  465. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
  466. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
  467. package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
  468. package/cjs/core/MantineProvider/use-props/use-props.cjs.map +1 -1
  469. package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs.map +1 -1
  470. package/cjs/core/factory/factory.cjs.map +1 -1
  471. package/cjs/core/factory/polymorphic-factory.cjs.map +1 -1
  472. package/cjs/core/styles-api/use-styles/get-class-name/get-class-name.cjs.map +1 -1
  473. package/cjs/core/styles-api/use-styles/get-class-name/get-global-class-names/get-global-class-names.cjs.map +1 -1
  474. package/cjs/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.cjs.map +1 -1
  475. package/cjs/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.cjs.map +1 -1
  476. package/cjs/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.cjs.map +1 -1
  477. package/cjs/core/styles-api/use-styles/get-style/get-style.cjs.map +1 -1
  478. package/cjs/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.cjs.map +1 -1
  479. package/cjs/core/styles-api/use-styles/use-styles.cjs.map +1 -1
  480. package/cjs/core/styles-api/use-styles/use-transformed-styles.cjs.map +1 -1
  481. package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
  482. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs +3 -5
  483. package/cjs/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.cjs.map +1 -1
  484. package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs.map +1 -1
  485. package/cjs/core/utils/deep-merge/deep-merge.cjs.map +1 -1
  486. package/cjs/core/utils/filter-props/filter-props.cjs.map +1 -1
  487. package/cjs/core/utils/get-context-item-index/get-context-item-index.cjs.map +1 -1
  488. package/cjs/core/utils/get-safe-id/get-safe-id.cjs.map +1 -1
  489. package/cjs/core/utils/is-number-like/is-number-like.cjs.map +1 -1
  490. package/cjs/core/utils/units-converters/px.cjs.map +1 -1
  491. package/cjs/core/utils/units-converters/rem.cjs.map +1 -1
  492. package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
  493. package/cjs/index.cjs +42 -2
  494. package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs.map +1 -1
  495. package/cjs/utils/Floating/use-context-menu-handlers.cjs.map +1 -1
  496. package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
  497. package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
  498. package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
  499. package/esm/components/Accordion/Accordion.mjs +1 -0
  500. package/esm/components/Accordion/Accordion.mjs.map +1 -1
  501. package/esm/components/ActionIcon/ActionIcon.mjs +1 -0
  502. package/esm/components/ActionIcon/ActionIcon.mjs.map +1 -1
  503. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs +1 -1
  504. package/esm/components/ActionIcon/ActionIconGroup/ActionIconGroup.mjs.map +1 -1
  505. package/esm/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.mjs.map +1 -1
  506. package/esm/components/AppShell/AppShellFooter/AppShellFooter.mjs.map +1 -1
  507. package/esm/components/AppShell/AppShellHeader/AppShellHeader.mjs.map +1 -1
  508. package/esm/components/AppShell/AppShellMain/AppShellMain.mjs.map +1 -1
  509. package/esm/components/AppShell/AppShellMediaStyles/assign-aside-variables/assign-aside-variables.mjs.map +1 -1
  510. package/esm/components/AppShell/AppShellMediaStyles/assign-footer-variables/assign-footer-variables.mjs.map +1 -1
  511. package/esm/components/AppShell/AppShellMediaStyles/assign-header-variables/assign-header-variables.mjs.map +1 -1
  512. package/esm/components/AppShell/AppShellMediaStyles/assign-navbar-variables/assign-navbar-variables.mjs.map +1 -1
  513. package/esm/components/AppShell/AppShellMediaStyles/assign-padding-variables/assign-padding-variables.mjs.map +1 -1
  514. package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.mjs.map +1 -1
  515. package/esm/components/AppShell/AppShellMediaStyles/is-primitive-size/is-primitive-size.mjs.map +1 -1
  516. package/esm/components/AppShell/AppShellMediaStyles/is-responsive-size/is-responsive-size.mjs.map +1 -1
  517. package/esm/components/AspectRatio/AspectRatio.mjs.map +1 -1
  518. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  519. package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
  520. package/esm/components/Avatar/get-initials/get-initials.mjs.map +1 -1
  521. package/esm/components/BackgroundImage/BackgroundImage.mjs.map +1 -1
  522. package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
  523. package/esm/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
  524. package/esm/components/Button/ButtonGroup/ButtonGroup.mjs.map +1 -1
  525. package/esm/components/Button/ButtonGroupSection/ButtonGroupSection.mjs.map +1 -1
  526. package/esm/components/Checkbox/Checkbox.mjs.map +1 -1
  527. package/esm/components/Collapse/Collapse.mjs.map +1 -1
  528. package/esm/components/ColorInput/ColorInput.mjs.map +1 -1
  529. package/esm/components/ColorPicker/ColorSlider/ColorSlider.mjs.map +1 -1
  530. package/esm/components/ColorPicker/converters/converters.mjs.map +1 -1
  531. package/esm/components/ColorPicker/converters/parsers.mjs.map +1 -1
  532. package/esm/components/Combobox/ComboboxEmpty/ComboboxEmpty.mjs.map +1 -1
  533. package/esm/components/Combobox/ComboboxFooter/ComboboxFooter.mjs.map +1 -1
  534. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs +3 -2
  535. package/esm/components/Combobox/ComboboxGroup/ComboboxGroup.mjs.map +1 -1
  536. package/esm/components/Combobox/ComboboxHeader/ComboboxHeader.mjs.map +1 -1
  537. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs +2 -2
  538. package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
  539. package/esm/components/Combobox/OptionsDropdown/default-options-filter.mjs.map +1 -1
  540. package/esm/components/Combobox/use-combobox/get-index/get-index.mjs.map +1 -1
  541. package/esm/components/Combobox/use-combobox/use-combobox.mjs.map +1 -1
  542. package/esm/components/Combobox/use-pills-reorder/use-pills-reorder.mjs.map +1 -1
  543. package/esm/components/ComboboxPopover/ComboboxPopover.mjs +216 -0
  544. package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -0
  545. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs +45 -0
  546. package/esm/components/ComboboxPopover/ComboboxPopoverTarget.mjs.map +1 -0
  547. package/esm/components/DataList/DataList.context.mjs +8 -0
  548. package/esm/components/DataList/DataList.context.mjs.map +1 -0
  549. package/esm/components/DataList/DataList.mjs +61 -0
  550. package/esm/components/DataList/DataList.mjs.map +1 -0
  551. package/esm/components/DataList/DataList.module.mjs +12 -0
  552. package/esm/components/DataList/DataList.module.mjs.map +1 -0
  553. package/esm/components/DataList/DataListItem/DataListItem.mjs +32 -0
  554. package/esm/components/DataList/DataListItem/DataListItem.mjs.map +1 -0
  555. package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs +33 -0
  556. package/esm/components/DataList/DataListItemLabel/DataListItemLabel.mjs.map +1 -0
  557. package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs +33 -0
  558. package/esm/components/DataList/DataListItemValue/DataListItemValue.mjs.map +1 -0
  559. package/esm/components/Drawer/DrawerBody.mjs.map +1 -1
  560. package/esm/components/Drawer/DrawerCloseButton.mjs.map +1 -1
  561. package/esm/components/Drawer/DrawerHeader.mjs.map +1 -1
  562. package/esm/components/Drawer/DrawerOverlay.mjs.map +1 -1
  563. package/esm/components/Drawer/DrawerRoot.mjs.map +1 -1
  564. package/esm/components/Drawer/DrawerTitle.mjs.map +1 -1
  565. package/esm/components/EmptyState/EmptyState.context.mjs +8 -0
  566. package/esm/components/EmptyState/EmptyState.context.mjs.map +1 -0
  567. package/esm/components/EmptyState/EmptyState.mjs +102 -0
  568. package/esm/components/EmptyState/EmptyState.mjs.map +1 -0
  569. package/esm/components/EmptyState/EmptyState.module.mjs +14 -0
  570. package/esm/components/EmptyState/EmptyState.module.mjs.map +1 -0
  571. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs +28 -0
  572. package/esm/components/EmptyState/EmptyStateActions/EmptyStateActions.mjs.map +1 -0
  573. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs +29 -0
  574. package/esm/components/EmptyState/EmptyStateDescription/EmptyStateDescription.mjs.map +1 -0
  575. package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs +29 -0
  576. package/esm/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.mjs.map +1 -0
  577. package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs +30 -0
  578. package/esm/components/EmptyState/EmptyStateTitle/EmptyStateTitle.mjs.map +1 -0
  579. package/esm/components/FileInput/FileInput.mjs.map +1 -1
  580. package/esm/components/Grid/GridCol/GridColVariables.mjs.map +1 -1
  581. package/esm/components/Grid/GridVariables.mjs.map +1 -1
  582. package/esm/components/Group/Group.mjs.map +1 -1
  583. package/esm/components/Group/filter-falsy-children/filter-falsy-children.mjs.map +1 -1
  584. package/esm/components/Highlight/highlighter/highlighter.mjs.map +1 -1
  585. package/esm/components/HoverCard/HoverCardDropdown/HoverCardDropdown.mjs.map +1 -1
  586. package/esm/components/HoverCard/use-hover-card.mjs.map +1 -1
  587. package/esm/components/Input/Input.mjs +7 -2
  588. package/esm/components/Input/Input.mjs.map +1 -1
  589. package/esm/components/Input/Input.module.mjs +1 -0
  590. package/esm/components/Input/Input.module.mjs.map +1 -1
  591. package/esm/components/Input/InputDescription/InputDescription.mjs.map +1 -1
  592. package/esm/components/Input/InputError/InputError.mjs.map +1 -1
  593. package/esm/components/Input/InputPlaceholder/InputPlaceholder.mjs.map +1 -1
  594. package/esm/components/Input/InputSuccess/InputSuccess.mjs +48 -0
  595. package/esm/components/Input/InputSuccess/InputSuccess.mjs.map +1 -0
  596. package/esm/components/Input/InputWrapper/InputWrapper.mjs +22 -5
  597. package/esm/components/Input/InputWrapper/InputWrapper.mjs.map +1 -1
  598. package/esm/components/Input/use-input-props.mjs +4 -1
  599. package/esm/components/Input/use-input-props.mjs.map +1 -1
  600. package/esm/components/JsonInput/validate-json/validate-json.mjs.map +1 -1
  601. package/esm/components/Kbd/Kbd.mjs.map +1 -1
  602. package/esm/components/Mark/Mark.mjs.map +1 -1
  603. package/esm/components/Marquee/Marquee.mjs.map +1 -1
  604. package/esm/components/Menu/MenuDivider/MenuDivider.mjs.map +1 -1
  605. package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
  606. package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
  607. package/esm/components/Menu/MenuLabel/MenuLabel.mjs.map +1 -1
  608. package/esm/components/Menu/MenuSearch/MenuSearch.mjs.map +1 -1
  609. package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -1
  610. package/esm/components/Menu/MenuSub/MenuSub.mjs.map +1 -1
  611. package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
  612. package/esm/components/Menu/use-menu-type-ahead.mjs.map +1 -1
  613. package/esm/components/Menubar/Menubar.context.mjs +9 -0
  614. package/esm/components/Menubar/Menubar.context.mjs.map +1 -0
  615. package/esm/components/Menubar/Menubar.mjs +146 -0
  616. package/esm/components/Menubar/Menubar.mjs.map +1 -0
  617. package/esm/components/Menubar/Menubar.module.mjs +10 -0
  618. package/esm/components/Menubar/Menubar.module.mjs.map +1 -0
  619. package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs +61 -0
  620. package/esm/components/Menubar/MenubarDropdown/MenubarDropdown.mjs.map +1 -0
  621. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs +59 -0
  622. package/esm/components/Menubar/MenubarMenu/MenubarMenu.mjs.map +1 -0
  623. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs +143 -0
  624. package/esm/components/Menubar/MenubarTarget/MenubarTarget.mjs.map +1 -0
  625. package/esm/components/Modal/ModalBody.mjs.map +1 -1
  626. package/esm/components/Modal/ModalCloseButton.mjs.map +1 -1
  627. package/esm/components/Modal/ModalHeader.mjs.map +1 -1
  628. package/esm/components/Modal/ModalOverlay.mjs.map +1 -1
  629. package/esm/components/Modal/ModalTitle.mjs.map +1 -1
  630. package/esm/components/ModalBase/ModalBase.mjs.map +1 -1
  631. package/esm/components/MultiSelect/MultiSelect.mjs +4 -1
  632. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  633. package/esm/components/MultiSelect/filter-picked-values.mjs.map +1 -1
  634. package/esm/components/NativeSelect/NativeSelect.mjs.map +1 -1
  635. package/esm/components/NativeSelect/NativeSelectOption.mjs.map +1 -1
  636. package/esm/components/NumberInput/NumberInput.mjs.map +1 -1
  637. package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
  638. package/esm/components/OverflowList/get-row-position-data.mjs.map +1 -1
  639. package/esm/components/OverflowList/use-dimensions.mjs.map +1 -1
  640. package/esm/components/Overlay/Overlay.mjs.map +1 -1
  641. package/esm/components/Pagination/Pagination.mjs.map +1 -1
  642. package/esm/components/Pagination/PaginationDots/PaginationDots.mjs.map +1 -1
  643. package/esm/components/Pagination/PaginationItems/PaginationItems.mjs.map +1 -1
  644. package/esm/components/PasswordInput/PasswordInput.mjs +11 -2
  645. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  646. package/esm/components/Pill/PillGroup/PillGroup.mjs.map +1 -1
  647. package/esm/components/PillsInput/PillsInput.mjs.map +1 -1
  648. package/esm/components/PinInput/PinInput.mjs +2 -1
  649. package/esm/components/PinInput/PinInput.mjs.map +1 -1
  650. package/esm/components/PinInput/create-pin-array/create-pin-array.mjs.map +1 -1
  651. package/esm/components/Popover/use-popover.mjs.map +1 -1
  652. package/esm/components/Portal/Portal.mjs.map +1 -1
  653. package/esm/components/Progress/ProgressLabel/ProgressLabel.mjs.map +1 -1
  654. package/esm/components/Radio/Radio.mjs.map +1 -1
  655. package/esm/components/Radio/RadioCard/RadioCard.mjs.map +1 -1
  656. package/esm/components/Rating/Rating.mjs.map +1 -1
  657. package/esm/components/Rating/RatingItem/RatingItem.mjs.map +1 -1
  658. package/esm/components/Rating/StarSymbol/StarSymbol.mjs.map +1 -1
  659. package/esm/components/RingProgress/RingProgress.mjs.map +1 -1
  660. package/esm/components/RingProgress/get-curves/get-curves.mjs.map +1 -1
  661. package/esm/components/RollingNumber/get-digit-parts.mjs.map +1 -1
  662. package/esm/components/RollingNumber/get-render-slots.mjs.map +1 -1
  663. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs +1 -0
  664. package/esm/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.mjs.map +1 -1
  665. package/esm/components/ScrollArea/utils/add-unlinked-scroll-listener.mjs.map +1 -1
  666. package/esm/components/ScrollArea/utils/get-scroll-position-from-pointer.mjs.map +1 -1
  667. package/esm/components/ScrollArea/utils/get-thumb-offset-from-scroll.mjs.map +1 -1
  668. package/esm/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
  669. package/esm/components/Select/Select.mjs.map +1 -1
  670. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs +4 -1
  671. package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
  672. package/esm/components/SemiCircleProgress/SemiCircleProgress.module.mjs.map +1 -1
  673. package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
  674. package/esm/components/Skeleton/Skeleton.mjs.map +1 -1
  675. package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
  676. package/esm/components/Slider/utils/get-precision/get-precision.mjs.map +1 -1
  677. package/esm/components/Slider/utils/get-step-mark-value/get-step-mark-value.mjs.map +1 -1
  678. package/esm/components/Splitter/Splitter.context.mjs.map +1 -1
  679. package/esm/components/Splitter/Splitter.mjs +22 -1
  680. package/esm/components/Splitter/Splitter.mjs.map +1 -1
  681. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs +1 -2
  682. package/esm/components/Splitter/SplitterPane/SplitterPane.mjs.map +1 -1
  683. package/esm/components/Stack/Stack.mjs.map +1 -1
  684. package/esm/components/Stepper/Stepper.mjs.map +1 -1
  685. package/esm/components/Switch/Switch.mjs.map +1 -1
  686. package/esm/components/Table/Table.components.mjs.map +1 -1
  687. package/esm/components/TableOfContents/TableOfContents.mjs.map +1 -1
  688. package/esm/components/Tabs/Tabs.context.mjs.map +1 -1
  689. package/esm/components/Tabs/Tabs.mjs +18 -3
  690. package/esm/components/Tabs/Tabs.mjs.map +1 -1
  691. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs +7 -1
  692. package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
  693. package/esm/components/Tabs/TabsTab/TabsTab.mjs +1 -1
  694. package/esm/components/Tabs/TabsTab/TabsTab.mjs.map +1 -1
  695. package/esm/components/TagsInput/TagsInput.mjs +4 -1
  696. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  697. package/esm/components/TagsInput/filter-picked-tags.mjs.map +1 -1
  698. package/esm/components/TagsInput/get-splitted-tags.mjs.map +1 -1
  699. package/esm/components/Text/Text.mjs.map +1 -1
  700. package/esm/components/Textarea/Autosize.mjs.map +1 -1
  701. package/esm/components/ThemeIcon/ThemeIcon.mjs.map +1 -1
  702. package/esm/components/Title/Title.mjs.map +1 -1
  703. package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
  704. package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
  705. package/esm/components/Transition/get-transition-styles/get-transition-styles.mjs.map +1 -1
  706. package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
  707. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  708. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +1 -1
  709. package/esm/components/Tree/is-node-checked/is-node-checked.mjs.map +1 -1
  710. package/esm/components/Tree/is-node-indeterminate/is-node-indeterminate.mjs.map +1 -1
  711. package/esm/components/Tree/use-tree.mjs.map +1 -1
  712. package/esm/components/TreeSelect/TreeSelect.mjs +7 -1
  713. package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
  714. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs.map +1 -1
  715. package/esm/components/Typography/Typography.mjs.map +1 -1
  716. package/esm/components/UnstyledButton/UnstyledButton.mjs.map +1 -1
  717. package/esm/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -1
  718. package/esm/core/Box/Box.mjs.map +1 -1
  719. package/esm/core/Box/get-box-mod/get-box-mod.mjs.map +1 -1
  720. package/esm/core/Box/get-box-style/get-box-style.mjs.map +1 -1
  721. package/esm/core/Box/get-style-object/get-style-object.mjs.map +1 -1
  722. package/esm/core/Box/style-props/parse-style-props/parse-style-props.mjs.map +1 -1
  723. package/esm/core/Box/style-props/parse-style-props/sort-media-queries.mjs.map +1 -1
  724. package/esm/core/Box/style-props/resolvers/border-resolver/border-resolver.mjs.map +1 -1
  725. package/esm/core/Box/use-random-classname/use-random-classname.mjs.map +1 -1
  726. package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
  727. package/esm/core/InlineStyles/css-object-to-string/css-object-to-string.mjs.map +1 -1
  728. package/esm/core/InlineStyles/hash-styles.mjs.map +1 -1
  729. package/esm/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.mjs.map +1 -1
  730. package/esm/core/MantineProvider/Mantine.context.mjs.map +1 -1
  731. package/esm/core/MantineProvider/MantineClasses/MantineClasses.mjs.map +1 -1
  732. package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs +6 -2
  733. package/esm/core/MantineProvider/MantineCssVariables/default-css-variables-resolver.mjs.map +1 -1
  734. package/esm/core/MantineProvider/MantineCssVariables/get-css-color-variables.mjs.map +1 -1
  735. package/esm/core/MantineProvider/MantineCssVariables/remove-default-variables.mjs.map +1 -1
  736. package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs +3 -1
  737. package/esm/core/MantineProvider/MantineCssVariables/v8-css-variables-resolver.mjs.map +1 -1
  738. package/esm/core/MantineProvider/MantineCssVariables/virtual-color/virtual-color.mjs.map +1 -1
  739. package/esm/core/MantineProvider/color-functions/colors-tuple/colors-tuple.mjs.map +1 -1
  740. package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs +3 -1
  741. package/esm/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.mjs.map +1 -1
  742. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs +19 -4
  743. package/esm/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.mjs.map +1 -1
  744. package/esm/core/MantineProvider/color-functions/parse-theme-color/parse-theme-color.mjs.map +1 -1
  745. package/esm/core/MantineProvider/color-functions/to-rgba/to-rgba.mjs.map +1 -1
  746. package/esm/core/MantineProvider/convert-css-variables/convert-css-variables.mjs.map +1 -1
  747. package/esm/core/MantineProvider/convert-css-variables/css-variables-object-to-string.mjs.map +1 -1
  748. package/esm/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.mjs.map +1 -1
  749. package/esm/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.mjs.map +1 -1
  750. package/esm/core/MantineProvider/use-props/use-props.mjs.map +1 -1
  751. package/esm/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.mjs.map +1 -1
  752. package/esm/core/styles-api/use-styles/get-class-name/get-options-class-names/get-options-class-names.mjs.map +1 -1
  753. package/esm/core/styles-api/use-styles/get-class-name/get-resolved-class-names/get-resolved-class-names.mjs.map +1 -1
  754. package/esm/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.mjs.map +1 -1
  755. package/esm/core/styles-api/use-styles/get-style/get-style.mjs.map +1 -1
  756. package/esm/core/styles-api/use-styles/get-style/resolve-vars/merge-vars.mjs.map +1 -1
  757. package/esm/core/styles-api/use-styles/use-styles.mjs.map +1 -1
  758. package/esm/core/styles-api/use-styles/use-transformed-styles.mjs.map +1 -1
  759. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs +3 -5
  760. package/esm/core/utils/create-scoped-keydown-handler/create-scoped-keydown-handler.mjs.map +1 -1
  761. package/esm/core/utils/create-use-external-events/create-use-external-events.mjs.map +1 -1
  762. package/esm/core/utils/deep-merge/deep-merge.mjs.map +1 -1
  763. package/esm/core/utils/filter-props/filter-props.mjs.map +1 -1
  764. package/esm/core/utils/get-context-item-index/get-context-item-index.mjs.map +1 -1
  765. package/esm/core/utils/get-safe-id/get-safe-id.mjs.map +1 -1
  766. package/esm/core/utils/is-number-like/is-number-like.mjs.map +1 -1
  767. package/esm/core/utils/units-converters/px.mjs.map +1 -1
  768. package/esm/core/utils/units-converters/rem.mjs.map +1 -1
  769. package/esm/index.mjs +23 -4
  770. package/lib/components/Accordion/Accordion.d.ts +4 -4
  771. package/lib/components/ActionIcon/ActionIcon.d.ts +3 -3
  772. package/lib/components/Combobox/Combobox.types.d.ts +4 -3
  773. package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +1 -1
  774. package/lib/components/Combobox/index.d.ts +1 -1
  775. package/lib/components/ComboboxPopover/ComboboxPopover.d.ts +110 -0
  776. package/lib/components/ComboboxPopover/ComboboxPopover.types.d.ts +2 -0
  777. package/lib/components/ComboboxPopover/ComboboxPopoverTarget.d.ts +16 -0
  778. package/lib/components/ComboboxPopover/index.d.ts +14 -0
  779. package/lib/components/DataList/DataList.context.d.ts +6 -0
  780. package/lib/components/DataList/DataList.d.ts +44 -0
  781. package/lib/components/DataList/DataListItem/DataListItem.d.ts +18 -0
  782. package/lib/components/DataList/DataListItemLabel/DataListItemLabel.d.ts +18 -0
  783. package/lib/components/DataList/DataListItemValue/DataListItemValue.d.ts +18 -0
  784. package/lib/components/DataList/index.d.ts +32 -0
  785. package/lib/components/EmptyState/EmptyState.context.d.ts +8 -0
  786. package/lib/components/EmptyState/EmptyState.d.ts +83 -0
  787. package/lib/components/EmptyState/EmptyStateActions/EmptyStateActions.d.ts +18 -0
  788. package/lib/components/EmptyState/EmptyStateDescription/EmptyStateDescription.d.ts +18 -0
  789. package/lib/components/EmptyState/EmptyStateIndicator/EmptyStateIndicator.d.ts +18 -0
  790. package/lib/components/EmptyState/EmptyStateTitle/EmptyStateTitle.d.ts +20 -0
  791. package/lib/components/EmptyState/index.d.ts +13 -0
  792. package/lib/components/Input/Input.d.ts +11 -0
  793. package/lib/components/Input/InputSuccess/InputSuccess.d.ts +23 -0
  794. package/lib/components/Input/InputWrapper/InputWrapper.d.ts +7 -2
  795. package/lib/components/Input/index.d.ts +3 -1
  796. package/lib/components/Input/use-input-props.d.ts +5 -2
  797. package/lib/components/MaskInput/use-mask-input-props.d.ts +5 -1
  798. package/lib/components/Menubar/Menubar.context.d.ts +51 -0
  799. package/lib/components/Menubar/Menubar.d.ts +56 -0
  800. package/lib/components/Menubar/MenubarDropdown/MenubarDropdown.d.ts +7 -0
  801. package/lib/components/Menubar/MenubarMenu/MenubarMenu.d.ts +9 -0
  802. package/lib/components/Menubar/MenubarTarget/MenubarTarget.d.ts +14 -0
  803. package/lib/components/Menubar/index.d.ts +11 -0
  804. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  805. package/lib/components/NativeSelect/NativeSelect.d.ts +2 -2
  806. package/lib/components/PinInput/PinInput.d.ts +2 -0
  807. package/lib/components/Splitter/Splitter.context.d.ts +3 -1
  808. package/lib/components/Splitter/Splitter.d.ts +10 -10
  809. package/lib/components/Splitter/SplitterPane/SplitterPane.d.ts +9 -8
  810. package/lib/components/Tabs/Tabs.context.d.ts +2 -0
  811. package/lib/components/index.d.ts +4 -0
  812. package/lib/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.d.ts +7 -2
  813. package/lib/core/MantineProvider/color-functions/index.d.ts +1 -1
  814. package/package.json +5 -5
  815. package/styles/DataList.css +54 -0
  816. package/styles/DataList.layer.css +55 -0
  817. package/styles/EmptyState.css +121 -0
  818. package/styles/EmptyState.layer.css +122 -0
  819. package/styles/Input.css +21 -2
  820. package/styles/Input.layer.css +21 -2
  821. package/styles/Menubar.css +29 -0
  822. package/styles/Menubar.layer.css +30 -0
  823. package/styles/SemiCircleProgress.css +1 -0
  824. package/styles/SemiCircleProgress.layer.css +1 -0
  825. package/styles/default-css-variables.css +2 -0
  826. package/styles/default-css-variables.layer.css +2 -0
  827. package/styles.css +231 -2
  828. package/styles.layer.css +231 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Transition.cjs","names":["useMantineEnv","useTransition","Activity","getTransitionStyles"],"sources":["../../../src/components/Transition/Transition.tsx"],"sourcesContent":["import { Activity } from 'react';\nimport { useMantineEnv } from '../../core';\nimport { getTransitionStyles } from './get-transition-styles/get-transition-styles';\nimport { MantineTransition } from './transitions';\nimport { useTransition } from './use-transition';\n\nexport interface TransitionProps {\n /** If set, the element is kept in the DOM when hidden. React 19 `Activity` is used to preserve state while the element is not visible. */\n keepMounted?: boolean;\n\n /**\n * Controls how the element is hidden when `keepMounted` is set:\n * `'activity'` – hidden with React 19 `Activity` component,\n * `'display-none'` – hidden with `display: none` styles\n * @default 'activity'\n */\n keepMountedMode?: 'activity' | 'display-none';\n\n /** Transition name or object */\n transition?: MantineTransition;\n\n /** Transition duration in ms @default 250 */\n duration?: number;\n\n /** Exit transition duration in ms @default 250 */\n exitDuration?: number;\n\n /** Transition timing function @default theme.transitionTimingFunction */\n timingFunction?: string;\n\n /** Determines whether component should be mounted to the DOM */\n mounted: boolean;\n\n /** Render function with transition styles argument */\n children: (styles: React.CSSProperties) => React.JSX.Element;\n\n /** Called when exit transition ends */\n onExited?: () => void;\n\n /** Called when exit transition starts */\n onExit?: () => void;\n\n /** Called when enter transition starts */\n onEnter?: () => void;\n\n /** Called when enter transition ends */\n onEntered?: () => void;\n\n /** Delay in ms before enter transition starts */\n enterDelay?: number;\n\n /** Delay in ms before exit transition starts */\n exitDelay?: number;\n}\n\nexport type TransitionOverride = Partial<Omit<TransitionProps, 'mounted'>>;\n\nexport function Transition({\n keepMounted,\n keepMountedMode = 'activity',\n transition = 'fade',\n duration = 250,\n exitDuration = duration,\n mounted,\n children,\n timingFunction = 'ease',\n onExit,\n onEntered,\n onEnter,\n onExited,\n enterDelay,\n exitDelay,\n}: TransitionProps) {\n const env = useMantineEnv();\n const { transitionDuration, transitionStatus, transitionTimingFunction } = useTransition({\n mounted,\n exitDuration,\n duration,\n timingFunction,\n onExit,\n onEntered,\n onEnter,\n onExited,\n enterDelay,\n exitDelay,\n });\n\n if (env === 'test') {\n return mounted ? <>{children({})}</> : keepMounted ? children({ display: 'none' }) : null;\n }\n\n if (transitionDuration === 0) {\n if (keepMounted) {\n if (keepMountedMode === 'display-none') {\n return mounted ? <>{children({})}</> : children({ display: 'none' });\n }\n\n return <Activity mode={mounted ? 'visible' : 'hidden'}>{children({})}</Activity>;\n }\n return mounted ? <>{children({})}</> : null;\n }\n\n const isExited = transitionStatus === 'exited';\n\n if (keepMounted) {\n const keepMountedChildren = children(\n isExited\n ? keepMountedMode === 'display-none'\n ? { display: 'none' }\n : {}\n : getTransitionStyles({\n transition,\n duration: transitionDuration,\n state: transitionStatus,\n timingFunction: transitionTimingFunction,\n })\n );\n\n if (keepMountedMode === 'display-none') {\n return keepMountedChildren;\n }\n\n return <Activity mode={isExited ? 'hidden' : 'visible'}>{keepMountedChildren}</Activity>;\n }\n\n return isExited ? null : (\n <>\n {children(\n getTransitionStyles({\n transition,\n duration: transitionDuration,\n state: transitionStatus,\n timingFunction: transitionTimingFunction,\n })\n )}\n </>\n );\n}\n\nTransition.displayName = '@mantine/core/Transition';\n\nexport namespace Transition {\n export type Props = TransitionProps;\n export type Override = TransitionOverride;\n}\n"],"mappings":";;;;;;;AAyDA,SAAgB,WAAW,EACzB,aACA,kBAAkB,YAClB,aAAa,QACb,WAAW,KACX,eAAe,UACf,SACA,UACA,iBAAiB,QACjB,QACA,WACA,SACA,UACA,YACA,aACkB;CAClB,MAAM,MAAMA,wBAAAA,cAAc;CAC1B,MAAM,EAAE,oBAAoB,kBAAkB,6BAA6BC,uBAAAA,cAAc;EACvF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,QAAQ,QACV,OAAO,UAAU,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UAAG,SAAS,CAAC,CAAC,EAAI,CAAA,IAAI,cAAc,SAAS,EAAE,SAAS,OAAO,CAAC,IAAI;CAGvF,IAAI,uBAAuB,GAAG;EAC5B,IAAI,aAAa;GACf,IAAI,oBAAoB,gBACtB,OAAO,UAAU,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UAAG,SAAS,CAAC,CAAC,EAAI,CAAA,IAAI,SAAS,EAAE,SAAS,OAAO,CAAC;GAGrE,OAAO,iBAAA,GAAA,kBAAA,KAACC,MAAAA,UAAD;IAAU,MAAM,UAAU,YAAY;cAAW,SAAS,CAAC,CAAC;GAAY,CAAA;EACjF;EACA,OAAO,UAAU,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UAAG,SAAS,CAAC,CAAC,EAAI,CAAA,IAAI;CACzC;CAEA,MAAM,WAAW,qBAAqB;CAEtC,IAAI,aAAa;EACf,MAAM,sBAAsB,SAC1B,WACI,oBAAoB,iBAClB,EAAE,SAAS,OAAO,IAClB,CAAC,IACHC,8BAAAA,oBAAoB;GAClB;GACA,UAAU;GACV,OAAO;GACP,gBAAgB;EAClB,CAAC,CACP;EAEA,IAAI,oBAAoB,gBACtB,OAAO;EAGT,OAAO,iBAAA,GAAA,kBAAA,KAACD,MAAAA,UAAD;GAAU,MAAM,WAAW,WAAW;aAAY;EAA8B,CAAA;CACzF;CAEA,OAAO,WAAW,OAChB,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UACG,SACCC,8BAAAA,oBAAoB;EAClB;EACA,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB,CAAC,CACH,EACA,CAAA;AAEN;AAEA,WAAW,cAAc"}
1
+ {"version":3,"file":"Transition.cjs","names":["useMantineEnv","useTransition","Activity","getTransitionStyles"],"sources":["../../../src/components/Transition/Transition.tsx"],"sourcesContent":["import { Activity } from 'react';\nimport { useMantineEnv } from '../../core';\nimport { getTransitionStyles } from './get-transition-styles/get-transition-styles';\nimport { MantineTransition } from './transitions';\nimport { useTransition } from './use-transition';\n\nexport interface TransitionProps {\n /** If set, the element is kept in the DOM when hidden. React 19 `Activity` is used to preserve state while the element is not visible. */\n keepMounted?: boolean;\n\n /**\n * Controls how the element is hidden when `keepMounted` is set:\n * `'activity'` – hidden with React 19 `Activity` component,\n * `'display-none'` – hidden with `display: none` styles\n * @default 'activity'\n */\n keepMountedMode?: 'activity' | 'display-none';\n\n /** Transition name or object */\n transition?: MantineTransition;\n\n /** Transition duration in ms @default 250 */\n duration?: number;\n\n /** Exit transition duration in ms @default 250 */\n exitDuration?: number;\n\n /** Transition timing function @default theme.transitionTimingFunction */\n timingFunction?: string;\n\n /** Determines whether component should be mounted to the DOM */\n mounted: boolean;\n\n /** Render function with transition styles argument */\n children: (styles: React.CSSProperties) => React.JSX.Element;\n\n /** Called when exit transition ends */\n onExited?: () => void;\n\n /** Called when exit transition starts */\n onExit?: () => void;\n\n /** Called when enter transition starts */\n onEnter?: () => void;\n\n /** Called when enter transition ends */\n onEntered?: () => void;\n\n /** Delay in ms before enter transition starts */\n enterDelay?: number;\n\n /** Delay in ms before exit transition starts */\n exitDelay?: number;\n}\n\nexport type TransitionOverride = Partial<Omit<TransitionProps, 'mounted'>>;\n\nexport function Transition({\n keepMounted,\n keepMountedMode = 'activity',\n transition = 'fade',\n duration = 250,\n exitDuration = duration,\n mounted,\n children,\n timingFunction = 'ease',\n onExit,\n onEntered,\n onEnter,\n onExited,\n enterDelay,\n exitDelay,\n}: TransitionProps) {\n const env = useMantineEnv();\n const { transitionDuration, transitionStatus, transitionTimingFunction } = useTransition({\n mounted,\n exitDuration,\n duration,\n timingFunction,\n onExit,\n onEntered,\n onEnter,\n onExited,\n enterDelay,\n exitDelay,\n });\n\n if (env === 'test') {\n return mounted ? <>{children({})}</> : keepMounted ? children({ display: 'none' }) : null;\n }\n\n if (transitionDuration === 0) {\n if (keepMounted) {\n if (keepMountedMode === 'display-none') {\n return mounted ? <>{children({})}</> : children({ display: 'none' });\n }\n\n return <Activity mode={mounted ? 'visible' : 'hidden'}>{children({})}</Activity>;\n }\n return mounted ? <>{children({})}</> : null;\n }\n\n const isExited = transitionStatus === 'exited';\n\n if (keepMounted) {\n const keepMountedChildren = children(\n isExited\n ? keepMountedMode === 'display-none'\n ? { display: 'none' }\n : {}\n : getTransitionStyles({\n transition,\n duration: transitionDuration,\n state: transitionStatus,\n timingFunction: transitionTimingFunction,\n })\n );\n\n if (keepMountedMode === 'display-none') {\n return keepMountedChildren;\n }\n\n return <Activity mode={isExited ? 'hidden' : 'visible'}>{keepMountedChildren}</Activity>;\n }\n\n return isExited ? null : (\n <>\n {children(\n getTransitionStyles({\n transition,\n duration: transitionDuration,\n state: transitionStatus,\n timingFunction: transitionTimingFunction,\n })\n )}\n </>\n );\n}\n\nTransition.displayName = '@mantine/core/Transition';\n\nexport namespace Transition {\n export type Props = TransitionProps;\n export type Override = TransitionOverride;\n}\n"],"mappings":";;;;;;;AAyDA,SAAgB,WAAW,EACzB,aACA,kBAAkB,YAClB,aAAa,QACb,WAAW,KACX,eAAe,UACf,SACA,UACA,iBAAiB,QACjB,QACA,WACA,SACA,UACA,YACA,aACkB;CAClB,MAAM,MAAMA,wBAAAA,cAAc;CAC1B,MAAM,EAAE,oBAAoB,kBAAkB,6BAA6BC,uBAAAA,cAAc;EACvF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,QAAQ,QACV,OAAO,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAA,kBAAA,UAAA,EAAA,UAAG,SAAS,CAAC,CAAC,EAAI,CAAA,IAAI,cAAc,SAAS,EAAE,SAAS,OAAO,CAAC,IAAI;CAGvF,IAAI,uBAAuB,GAAG;EAC5B,IAAI,aAAa;GACf,IAAI,oBAAoB,gBACtB,OAAO,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAA,kBAAA,UAAA,EAAA,UAAG,SAAS,CAAC,CAAC,EAAI,CAAA,IAAI,SAAS,EAAE,SAAS,OAAO,CAAC;GAGrE,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,MAAAA,UAAD;IAAU,MAAM,UAAU,YAAY;cAAW,SAAS,CAAC,CAAC;GAAY,CAAA;EACjF;EACA,OAAO,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAA,kBAAA,UAAA,EAAA,UAAG,SAAS,CAAC,CAAC,EAAI,CAAA,IAAI;CACzC;CAEA,MAAM,WAAW,qBAAqB;CAEtC,IAAI,aAAa;EACf,MAAM,sBAAsB,SAC1B,WACI,oBAAoB,iBAClB,EAAE,SAAS,OAAO,IAClB,CAAC,IACHC,8BAAAA,oBAAoB;GAClB;GACA,UAAU;GACV,OAAO;GACP,gBAAgB;EAClB,CAAC,CACP;EAEA,IAAI,oBAAoB,gBACtB,OAAO;EAGT,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACD,MAAAA,UAAD;GAAU,MAAM,WAAW,WAAW;aAAY;EAA8B,CAAA;CACzF;CAEA,OAAO,WAAW,OAChB,iBAAA,GAAA,kBAAA,IAAA,CAAA,kBAAA,UAAA,EAAA,UACG,SACCC,8BAAAA,oBAAoB;EAClB;EACA,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB,CAAC,CACH,EACA,CAAA;AAEN;AAEA,WAAW,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-transition-styles.cjs","names":["transitions"],"sources":["../../../../src/components/Transition/get-transition-styles/get-transition-styles.ts"],"sourcesContent":["import { MantineTransition, transitions } from '../transitions';\n\nconst transitionStatuses = {\n entering: 'in',\n entered: 'in',\n exiting: 'out',\n exited: 'out',\n 'pre-exiting': 'out',\n 'pre-entering': 'out',\n} as const;\n\nexport function getTransitionStyles({\n transition,\n state,\n duration,\n timingFunction,\n}: {\n transition: MantineTransition;\n state: keyof typeof transitionStatuses;\n duration: number;\n timingFunction: React.CSSProperties['transitionTimingFunction'];\n}): React.CSSProperties {\n const shared: React.CSSProperties = {\n WebkitBackfaceVisibility: 'hidden',\n transitionDuration: `${duration}ms`,\n transitionTimingFunction: timingFunction,\n };\n\n if (typeof transition === 'string') {\n if (!(transition in transitions)) {\n return {};\n }\n\n return {\n transitionProperty: transitions[transition].transitionProperty,\n ...shared,\n ...transitions[transition].common,\n ...transitions[transition][transitionStatuses[state]],\n };\n }\n\n return {\n transitionProperty: transition.transitionProperty,\n ...shared,\n ...transition.common,\n ...transition[transitionStatuses[state]],\n };\n}\n"],"mappings":";;;AAEA,MAAM,qBAAqB;CACzB,UAAU;CACV,SAAS;CACT,SAAS;CACT,QAAQ;CACR,eAAe;CACf,gBAAgB;AAClB;AAEA,SAAgB,oBAAoB,EAClC,YACA,OACA,UACA,kBAMsB;CACtB,MAAM,SAA8B;EAClC,0BAA0B;EAC1B,oBAAoB,GAAG,SAAS;EAChC,0BAA0B;CAC5B;CAEA,IAAI,OAAO,eAAe,UAAU;EAClC,IAAI,EAAE,cAAcA,oBAAAA,cAClB,OAAO,CAAC;EAGV,OAAO;GACL,oBAAoBA,oBAAAA,YAAY,YAAY;GAC5C,GAAG;GACH,GAAGA,oBAAAA,YAAY,YAAY;GAC3B,GAAGA,oBAAAA,YAAY,YAAY,mBAAmB;EAChD;CACF;CAEA,OAAO;EACL,oBAAoB,WAAW;EAC/B,GAAG;EACH,GAAG,WAAW;EACd,GAAG,WAAW,mBAAmB;CACnC;AACF"}
1
+ {"version":3,"file":"get-transition-styles.cjs","names":["transitions"],"sources":["../../../../src/components/Transition/get-transition-styles/get-transition-styles.ts"],"sourcesContent":["import { MantineTransition, transitions } from '../transitions';\n\nconst transitionStatuses = {\n entering: 'in',\n entered: 'in',\n exiting: 'out',\n exited: 'out',\n 'pre-exiting': 'out',\n 'pre-entering': 'out',\n} as const;\n\nexport function getTransitionStyles({\n transition,\n state,\n duration,\n timingFunction,\n}: {\n transition: MantineTransition;\n state: keyof typeof transitionStatuses;\n duration: number;\n timingFunction: React.CSSProperties['transitionTimingFunction'];\n}): React.CSSProperties {\n const shared: React.CSSProperties = {\n WebkitBackfaceVisibility: 'hidden',\n transitionDuration: `${duration}ms`,\n transitionTimingFunction: timingFunction,\n };\n\n if (typeof transition === 'string') {\n if (!(transition in transitions)) {\n return {};\n }\n\n return {\n transitionProperty: transitions[transition].transitionProperty,\n ...shared,\n ...transitions[transition].common,\n ...transitions[transition][transitionStatuses[state]],\n };\n }\n\n return {\n transitionProperty: transition.transitionProperty,\n ...shared,\n ...transition.common,\n ...transition[transitionStatuses[state]],\n };\n}\n"],"mappings":";;;AAEA,MAAM,qBAAqB;CACzB,UAAU;CACV,SAAS;CACT,SAAS;CACT,QAAQ;CACR,eAAe;CACf,gBAAgB;AAClB;AAEA,SAAgB,oBAAoB,EAClC,YACA,OACA,UACA,kBAMsB;CACtB,MAAM,SAA8B;EAClC,0BAA0B;EAC1B,oBAAoB,GAAG,SAAS;EAChC,0BAA0B;CAC5B;CAEA,IAAI,OAAO,eAAe,UAAU;EAClC,IAAI,EAAE,cAAcA,oBAAAA,cAClB,OAAO,CAAC;EAGV,OAAO;GACL,oBAAoBA,oBAAAA,YAAY,WAAW,CAAC;GAC5C,GAAG;GACH,GAAGA,oBAAAA,YAAY,WAAW,CAAC;GAC3B,GAAGA,oBAAAA,YAAY,WAAW,CAAC,mBAAmB;EAChD;CACF;CAEA,OAAO;EACL,oBAAoB,WAAW;EAC/B,GAAG;EACH,GAAG,WAAW;EACd,GAAG,WAAW,mBAAmB;CACnC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-transition.cjs","names":["useMantineTheme"],"sources":["../../../src/components/Transition/use-transition.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { useDidUpdate, useReducedMotion } from '@mantine/hooks';\nimport { useMantineTheme } from '../../core';\n\nexport type TransitionStatus =\n | 'entered'\n | 'exited'\n | 'entering'\n | 'exiting'\n | 'pre-exiting'\n | 'pre-entering';\n\ninterface UseTransition {\n duration: number;\n exitDuration: number;\n timingFunction: string;\n mounted: boolean;\n onEnter?: () => void;\n onExit?: () => void;\n onEntered?: () => void;\n onExited?: () => void;\n enterDelay?: number;\n exitDelay?: number;\n}\n\nexport function useTransition({\n duration,\n exitDuration,\n timingFunction,\n mounted,\n onEnter,\n onExit,\n onEntered,\n onExited,\n enterDelay,\n exitDelay,\n}: UseTransition) {\n const theme = useMantineTheme();\n const shouldReduceMotion = useReducedMotion();\n const reduceMotion = theme.respectReducedMotion ? shouldReduceMotion : false;\n const [transitionDuration, setTransitionDuration] = useState(reduceMotion ? 0 : duration);\n const [transitionStatus, setStatus] = useState<TransitionStatus>(mounted ? 'entered' : 'exited');\n const transitionTimeoutRef = useRef<number>(-1);\n const delayTimeoutRef = useRef<number>(-1);\n const rafRef = useRef(-1);\n\n function clearAllTimeouts() {\n window.clearTimeout(transitionTimeoutRef.current);\n window.clearTimeout(delayTimeoutRef.current);\n cancelAnimationFrame(rafRef.current);\n }\n\n const handleStateChange = (shouldMount: boolean) => {\n clearAllTimeouts();\n const preHandler = shouldMount ? onEnter : onExit;\n const handler = shouldMount ? onEntered : onExited;\n const newTransitionDuration = reduceMotion ? 0 : shouldMount ? duration : exitDuration;\n setTransitionDuration(newTransitionDuration);\n\n if (newTransitionDuration === 0) {\n typeof preHandler === 'function' && preHandler();\n typeof handler === 'function' && handler();\n setStatus(shouldMount ? 'entered' : 'exited');\n } else {\n rafRef.current = requestAnimationFrame(() => {\n ReactDOM.flushSync(() => {\n setStatus(shouldMount ? 'pre-entering' : 'pre-exiting');\n });\n rafRef.current = requestAnimationFrame(() => {\n typeof preHandler === 'function' && preHandler();\n setStatus(shouldMount ? 'entering' : 'exiting');\n transitionTimeoutRef.current = window.setTimeout(() => {\n typeof handler === 'function' && handler();\n setStatus(shouldMount ? 'entered' : 'exited');\n }, newTransitionDuration);\n });\n });\n }\n };\n\n const handleTransitionWithDelay = (shouldMount: boolean) => {\n clearAllTimeouts();\n const delay = shouldMount ? enterDelay : exitDelay;\n if (typeof delay !== 'number') {\n handleStateChange(shouldMount);\n return;\n }\n delayTimeoutRef.current = window.setTimeout(\n () => {\n handleStateChange(shouldMount);\n },\n shouldMount ? enterDelay : exitDelay\n );\n };\n\n useDidUpdate(() => {\n handleTransitionWithDelay(mounted);\n }, [mounted]);\n\n useEffect(\n () => () => {\n clearAllTimeouts();\n },\n []\n );\n\n return {\n transitionDuration,\n transitionStatus,\n transitionTimingFunction: timingFunction || 'ease',\n };\n}\n"],"mappings":";;;;;;;;AA0BA,SAAgB,cAAc,EAC5B,UACA,cACA,gBACA,SACA,SACA,QACA,WACA,UACA,YACA,aACgB;CAChB,MAAM,QAAQA,6BAAAA,gBAAgB;CAC9B,MAAM,sBAAA,GAAA,eAAA,kBAAsC;CAC5C,MAAM,eAAe,MAAM,uBAAuB,qBAAqB;CACvE,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,UAAkC,eAAe,IAAI,QAAQ;CACxF,MAAM,CAAC,kBAAkB,cAAA,GAAA,MAAA,UAAwC,UAAU,YAAY,QAAQ;CAC/F,MAAM,wBAAA,GAAA,MAAA,QAAsC,EAAE;CAC9C,MAAM,mBAAA,GAAA,MAAA,QAAiC,EAAE;CACzC,MAAM,UAAA,GAAA,MAAA,QAAgB,EAAE;CAExB,SAAS,mBAAmB;EAC1B,OAAO,aAAa,qBAAqB,OAAO;EAChD,OAAO,aAAa,gBAAgB,OAAO;EAC3C,qBAAqB,OAAO,OAAO;CACrC;CAEA,MAAM,qBAAqB,gBAAyB;EAClD,iBAAiB;EACjB,MAAM,aAAa,cAAc,UAAU;EAC3C,MAAM,UAAU,cAAc,YAAY;EAC1C,MAAM,wBAAwB,eAAe,IAAI,cAAc,WAAW;EAC1E,sBAAsB,qBAAqB;EAE3C,IAAI,0BAA0B,GAAG;GAC/B,OAAO,eAAe,cAAc,WAAW;GAC/C,OAAO,YAAY,cAAc,QAAQ;GACzC,UAAU,cAAc,YAAY,QAAQ;EAC9C,OACE,OAAO,UAAU,4BAA4B;GAC3C,UAAA,QAAS,gBAAgB;IACvB,UAAU,cAAc,iBAAiB,aAAa;GACxD,CAAC;GACD,OAAO,UAAU,4BAA4B;IAC3C,OAAO,eAAe,cAAc,WAAW;IAC/C,UAAU,cAAc,aAAa,SAAS;IAC9C,qBAAqB,UAAU,OAAO,iBAAiB;KACrD,OAAO,YAAY,cAAc,QAAQ;KACzC,UAAU,cAAc,YAAY,QAAQ;IAC9C,GAAG,qBAAqB;GAC1B,CAAC;EACH,CAAC;CAEL;CAEA,MAAM,6BAA6B,gBAAyB;EAC1D,iBAAiB;EAEjB,IAAI,QADU,cAAc,aAAa,eACpB,UAAU;GAC7B,kBAAkB,WAAW;GAC7B;EACF;EACA,gBAAgB,UAAU,OAAO,iBACzB;GACJ,kBAAkB,WAAW;EAC/B,GACA,cAAc,aAAa,SAC7B;CACF;CAEA,CAAA,GAAA,eAAA,oBAAmB;EACjB,0BAA0B,OAAO;CACnC,GAAG,CAAC,OAAO,CAAC;CAEZ,CAAA,GAAA,MAAA,uBACc;EACV,iBAAiB;CACnB,GACA,CAAC,CACH;CAEA,OAAO;EACL;EACA;EACA,0BAA0B,kBAAkB;CAC9C;AACF"}
1
+ {"version":3,"file":"use-transition.cjs","names":["useMantineTheme"],"sources":["../../../src/components/Transition/use-transition.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { useDidUpdate, useReducedMotion } from '@mantine/hooks';\nimport { useMantineTheme } from '../../core';\n\nexport type TransitionStatus =\n | 'entered'\n | 'exited'\n | 'entering'\n | 'exiting'\n | 'pre-exiting'\n | 'pre-entering';\n\ninterface UseTransition {\n duration: number;\n exitDuration: number;\n timingFunction: string;\n mounted: boolean;\n onEnter?: () => void;\n onExit?: () => void;\n onEntered?: () => void;\n onExited?: () => void;\n enterDelay?: number;\n exitDelay?: number;\n}\n\nexport function useTransition({\n duration,\n exitDuration,\n timingFunction,\n mounted,\n onEnter,\n onExit,\n onEntered,\n onExited,\n enterDelay,\n exitDelay,\n}: UseTransition) {\n const theme = useMantineTheme();\n const shouldReduceMotion = useReducedMotion();\n const reduceMotion = theme.respectReducedMotion ? shouldReduceMotion : false;\n const [transitionDuration, setTransitionDuration] = useState(reduceMotion ? 0 : duration);\n const [transitionStatus, setStatus] = useState<TransitionStatus>(mounted ? 'entered' : 'exited');\n const transitionTimeoutRef = useRef<number>(-1);\n const delayTimeoutRef = useRef<number>(-1);\n const rafRef = useRef(-1);\n\n function clearAllTimeouts() {\n window.clearTimeout(transitionTimeoutRef.current);\n window.clearTimeout(delayTimeoutRef.current);\n cancelAnimationFrame(rafRef.current);\n }\n\n const handleStateChange = (shouldMount: boolean) => {\n clearAllTimeouts();\n const preHandler = shouldMount ? onEnter : onExit;\n const handler = shouldMount ? onEntered : onExited;\n const newTransitionDuration = reduceMotion ? 0 : shouldMount ? duration : exitDuration;\n setTransitionDuration(newTransitionDuration);\n\n if (newTransitionDuration === 0) {\n typeof preHandler === 'function' && preHandler();\n typeof handler === 'function' && handler();\n setStatus(shouldMount ? 'entered' : 'exited');\n } else {\n rafRef.current = requestAnimationFrame(() => {\n ReactDOM.flushSync(() => {\n setStatus(shouldMount ? 'pre-entering' : 'pre-exiting');\n });\n rafRef.current = requestAnimationFrame(() => {\n typeof preHandler === 'function' && preHandler();\n setStatus(shouldMount ? 'entering' : 'exiting');\n transitionTimeoutRef.current = window.setTimeout(() => {\n typeof handler === 'function' && handler();\n setStatus(shouldMount ? 'entered' : 'exited');\n }, newTransitionDuration);\n });\n });\n }\n };\n\n const handleTransitionWithDelay = (shouldMount: boolean) => {\n clearAllTimeouts();\n const delay = shouldMount ? enterDelay : exitDelay;\n if (typeof delay !== 'number') {\n handleStateChange(shouldMount);\n return;\n }\n delayTimeoutRef.current = window.setTimeout(\n () => {\n handleStateChange(shouldMount);\n },\n shouldMount ? enterDelay : exitDelay\n );\n };\n\n useDidUpdate(() => {\n handleTransitionWithDelay(mounted);\n }, [mounted]);\n\n useEffect(\n () => () => {\n clearAllTimeouts();\n },\n []\n );\n\n return {\n transitionDuration,\n transitionStatus,\n transitionTimingFunction: timingFunction || 'ease',\n };\n}\n"],"mappings":";;;;;;;;AA0BA,SAAgB,cAAc,EAC5B,UACA,cACA,gBACA,SACA,SACA,QACA,WACA,UACA,YACA,aACgB;CAChB,MAAM,QAAQA,6BAAAA,gBAAgB;CAC9B,MAAM,sBAAA,GAAA,eAAA,iBAAA,CAAsC;CAC5C,MAAM,eAAe,MAAM,uBAAuB,qBAAqB;CACvE,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,SAAA,CAAkC,eAAe,IAAI,QAAQ;CACxF,MAAM,CAAC,kBAAkB,cAAA,GAAA,MAAA,SAAA,CAAwC,UAAU,YAAY,QAAQ;CAC/F,MAAM,wBAAA,GAAA,MAAA,OAAA,CAAsC,EAAE;CAC9C,MAAM,mBAAA,GAAA,MAAA,OAAA,CAAiC,EAAE;CACzC,MAAM,UAAA,GAAA,MAAA,OAAA,CAAgB,EAAE;CAExB,SAAS,mBAAmB;EAC1B,OAAO,aAAa,qBAAqB,OAAO;EAChD,OAAO,aAAa,gBAAgB,OAAO;EAC3C,qBAAqB,OAAO,OAAO;CACrC;CAEA,MAAM,qBAAqB,gBAAyB;EAClD,iBAAiB;EACjB,MAAM,aAAa,cAAc,UAAU;EAC3C,MAAM,UAAU,cAAc,YAAY;EAC1C,MAAM,wBAAwB,eAAe,IAAI,cAAc,WAAW;EAC1E,sBAAsB,qBAAqB;EAE3C,IAAI,0BAA0B,GAAG;GAC/B,OAAO,eAAe,cAAc,WAAW;GAC/C,OAAO,YAAY,cAAc,QAAQ;GACzC,UAAU,cAAc,YAAY,QAAQ;EAC9C,OACE,OAAO,UAAU,4BAA4B;GAC3C,UAAA,QAAS,gBAAgB;IACvB,UAAU,cAAc,iBAAiB,aAAa;GACxD,CAAC;GACD,OAAO,UAAU,4BAA4B;IAC3C,OAAO,eAAe,cAAc,WAAW;IAC/C,UAAU,cAAc,aAAa,SAAS;IAC9C,qBAAqB,UAAU,OAAO,iBAAiB;KACrD,OAAO,YAAY,cAAc,QAAQ;KACzC,UAAU,cAAc,YAAY,QAAQ;IAC9C,GAAG,qBAAqB;GAC1B,CAAC;EACH,CAAC;CAEL;CAEA,MAAM,6BAA6B,gBAAyB;EAC1D,iBAAiB;EAEjB,IAAI,QADU,cAAc,aAAa,eACpB,UAAU;GAC7B,kBAAkB,WAAW;GAC7B;EACF;EACA,gBAAgB,UAAU,OAAO,iBACzB;GACJ,kBAAkB,WAAW;EAC/B,GACA,cAAc,aAAa,SAC7B;CACF;CAEA,CAAA,GAAA,eAAA,aAAA,OAAmB;EACjB,0BAA0B,OAAO;CACnC,GAAG,CAAC,OAAO,CAAC;CAEZ,CAAA,GAAA,MAAA,UAAA,aACc;EACV,iBAAiB;CACnB,GACA,CAAC,CACH;CAEA,OAAO;EACL;EACA;EACA,0BAA0B,kBAAkB;CAC9C;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlatTreeNode.cjs","names":["findElementAncestor","classes"],"sources":["../../../src/components/Tree/FlatTreeNode.tsx"],"sourcesContent":["import { memo, useRef } from 'react';\nimport { findElementAncestor } from '../../core';\nimport type { FlatTreeLineState } from './flatten-tree-data/flatten-tree-data';\nimport type { RenderNode, TreeNodeData } from './Tree';\nimport type { TreeController } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface FlatTreeNodeProps {\n /** Node data from tree data */\n node: TreeNodeData;\n\n /** Nesting level of the node, starts at 1 */\n level: number;\n\n /** Value of the parent node, `null` for root nodes */\n parent: string | null;\n\n /** Whether the node has children */\n hasChildren: boolean;\n\n /** Whether the node is expanded */\n expanded: boolean;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** Style to apply to the root element, used for virtualizer positioning */\n style?: React.CSSProperties;\n\n /** Tab index for the node */\n tabIndex?: number;\n\n /** Line state per ancestor + own level, computed by `flattenTreeData`.\n * When provided and the tree root has `data-with-lines`, connector lines are rendered. */\n linesPath?: FlatTreeLineState[];\n}\n\nexport const FlatTreeNode = memo(function FlatTreeNode({\n node,\n level,\n parent,\n hasChildren,\n expanded,\n tree,\n expandOnClick = true,\n selectOnClick,\n expandOnSpace = true,\n checkOnSpace,\n renderNode,\n style,\n tabIndex = -1,\n linesPath,\n}: FlatTreeNodeProps) {\n const ref = useRef<HTMLDivElement>(null);\n const isLoading = tree.isNodeLoading(node.value);\n const loadError = tree.getNodeLoadError(node.value);\n const selected = tree.selectedState.includes(node.value);\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (expandOnClick && hasChildren) {\n tree.toggleExpanded(node.value);\n }\n\n if (selectOnClick) {\n tree.select(node.value);\n }\n\n ref.current?.focus();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.nativeEvent.code === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const nodes = root\n ? Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n )\n : [];\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n if (index !== -1) {\n nodes[index + 1]?.focus();\n }\n } else if (hasChildren) {\n tree.expand(node.value);\n }\n }\n\n if (event.nativeEvent.code === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n tree.collapse(node.value);\n } else if (parent) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const parentElement = root?.querySelector<HTMLElement>(\n `[role=treeitem][data-value=\"${CSS.escape(parent)}\"]`\n );\n parentElement?.focus();\n }\n }\n\n if (event.nativeEvent.code === 'ArrowDown' || event.nativeEvent.code === 'ArrowUp') {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n\n if (!root) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n );\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n\n if (index === -1) {\n return;\n }\n\n const nextIndex = event.nativeEvent.code === 'ArrowDown' ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n }\n\n if (event.nativeEvent.code === 'Space') {\n if (expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n tree.toggleExpanded(node.value);\n }\n\n if (checkOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n if (tree.isNodeChecked(node.value)) {\n tree.uncheckNode(node.value);\n } else {\n tree.checkNode(node.value);\n }\n }\n }\n };\n\n const elementProps = {\n className: classes.label,\n style: {} as React.CSSProperties,\n onClick: handleClick,\n 'data-selected': selected || undefined,\n 'data-value': node.value,\n };\n\n return (\n <div\n ref={ref}\n className={classes.node}\n style={{\n ...({\n '--label-offset': `calc(var(--level-offset, var(--mantine-spacing-lg)) * ${level - 1})`,\n } as React.CSSProperties),\n ...style,\n }}\n role=\"treeitem\"\n aria-selected={selected}\n aria-expanded={hasChildren ? expanded : undefined}\n data-value={node.value}\n data-selected={selected || undefined}\n data-level={level}\n tabIndex={tabIndex}\n onKeyDown={handleKeyDown}\n >\n {linesPath?.map((state, idx) => {\n if (state === 'none') {\n return null;\n }\n const column = idx + 2;\n return (\n <span\n key={column}\n aria-hidden\n className={`${classes.flatLine}${state === 'closing' ? ` ${classes.flatLineClosing}` : ''}`}\n style={{ '--flat-line-column': column } as React.CSSProperties}\n />\n );\n })}\n {typeof renderNode === 'function' ? (\n renderNode({\n node,\n level,\n selected,\n isRoot: level === 1,\n tree,\n expanded,\n hasChildren,\n isLoading,\n loadError,\n elementProps,\n dragHandleProps: undefined,\n })\n ) : (\n <div {...elementProps}>{node.label}</div>\n )}\n </div>\n );\n});\n\nFlatTreeNode.displayName = '@mantine/core/FlatTreeNode';\n"],"mappings":"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"}
1
+ {"version":3,"file":"FlatTreeNode.cjs","names":["findElementAncestor","classes"],"sources":["../../../src/components/Tree/FlatTreeNode.tsx"],"sourcesContent":["import { memo, useRef } from 'react';\nimport { findElementAncestor } from '../../core';\nimport type { FlatTreeLineState } from './flatten-tree-data/flatten-tree-data';\nimport type { RenderNode, TreeNodeData } from './Tree';\nimport type { TreeController } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface FlatTreeNodeProps {\n /** Node data from tree data */\n node: TreeNodeData;\n\n /** Nesting level of the node, starts at 1 */\n level: number;\n\n /** Value of the parent node, `null` for root nodes */\n parent: string | null;\n\n /** Whether the node has children */\n hasChildren: boolean;\n\n /** Whether the node is expanded */\n expanded: boolean;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** Style to apply to the root element, used for virtualizer positioning */\n style?: React.CSSProperties;\n\n /** Tab index for the node */\n tabIndex?: number;\n\n /** Line state per ancestor + own level, computed by `flattenTreeData`.\n * When provided and the tree root has `data-with-lines`, connector lines are rendered. */\n linesPath?: FlatTreeLineState[];\n}\n\nexport const FlatTreeNode = memo(function FlatTreeNode({\n node,\n level,\n parent,\n hasChildren,\n expanded,\n tree,\n expandOnClick = true,\n selectOnClick,\n expandOnSpace = true,\n checkOnSpace,\n renderNode,\n style,\n tabIndex = -1,\n linesPath,\n}: FlatTreeNodeProps) {\n const ref = useRef<HTMLDivElement>(null);\n const isLoading = tree.isNodeLoading(node.value);\n const loadError = tree.getNodeLoadError(node.value);\n const selected = tree.selectedState.includes(node.value);\n\n const handleClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (expandOnClick && hasChildren) {\n tree.toggleExpanded(node.value);\n }\n\n if (selectOnClick) {\n tree.select(node.value);\n }\n\n ref.current?.focus();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.nativeEvent.code === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const nodes = root\n ? Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n )\n : [];\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n if (index !== -1) {\n nodes[index + 1]?.focus();\n }\n } else if (hasChildren) {\n tree.expand(node.value);\n }\n }\n\n if (event.nativeEvent.code === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n\n if (expanded && hasChildren) {\n tree.collapse(node.value);\n } else if (parent) {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n const parentElement = root?.querySelector<HTMLElement>(\n `[role=treeitem][data-value=\"${CSS.escape(parent)}\"]`\n );\n parentElement?.focus();\n }\n }\n\n if (event.nativeEvent.code === 'ArrowDown' || event.nativeEvent.code === 'ArrowUp') {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n\n if (!root) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll<HTMLElement>('[role=treeitem]')).filter(\n (treeNode) => treeNode.style.display !== 'none'\n );\n const index = nodes.indexOf(event.currentTarget as HTMLElement);\n\n if (index === -1) {\n return;\n }\n\n const nextIndex = event.nativeEvent.code === 'ArrowDown' ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n }\n\n if (event.nativeEvent.code === 'Space') {\n if (expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n tree.toggleExpanded(node.value);\n }\n\n if (checkOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n if (tree.isNodeChecked(node.value)) {\n tree.uncheckNode(node.value);\n } else {\n tree.checkNode(node.value);\n }\n }\n }\n };\n\n const elementProps = {\n className: classes.label,\n style: {} as React.CSSProperties,\n onClick: handleClick,\n 'data-selected': selected || undefined,\n 'data-value': node.value,\n };\n\n return (\n <div\n ref={ref}\n className={classes.node}\n style={{\n ...({\n '--label-offset': `calc(var(--level-offset, var(--mantine-spacing-lg)) * ${level - 1})`,\n } as React.CSSProperties),\n ...style,\n }}\n role=\"treeitem\"\n aria-selected={selected}\n aria-expanded={hasChildren ? expanded : undefined}\n data-value={node.value}\n data-selected={selected || undefined}\n data-level={level}\n tabIndex={tabIndex}\n onKeyDown={handleKeyDown}\n >\n {linesPath?.map((state, idx) => {\n if (state === 'none') {\n return null;\n }\n const column = idx + 2;\n return (\n <span\n key={column}\n aria-hidden\n className={`${classes.flatLine}${state === 'closing' ? ` ${classes.flatLineClosing}` : ''}`}\n style={{ '--flat-line-column': column } as React.CSSProperties}\n />\n );\n })}\n {typeof renderNode === 'function' ? (\n renderNode({\n node,\n level,\n selected,\n isRoot: level === 1,\n tree,\n expanded,\n hasChildren,\n isLoading,\n loadError,\n elementProps,\n dragHandleProps: undefined,\n })\n ) : (\n <div {...elementProps}>{node.label}</div>\n )}\n </div>\n );\n});\n\nFlatTreeNode.displayName = '@mantine/core/FlatTreeNode';\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.cjs","names":["createVarsResolver","getSpacing","factory","useProps","useTree","useStyles","TreeNode","Box","classes"],"sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { useClickOutside, useMergedRef } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport type { TreeDragDropPayload } from './move-tree-node/move-tree-node';\nimport { TreeNode } from './TreeNode';\nimport type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';\nimport { TreeController, useTree } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface TreeNodeData {\n label: React.ReactNode;\n value: string;\n nodeProps?: Record<string, any>;\n children?: TreeNodeData[];\n hasChildren?: boolean;\n}\n\nexport interface RenderTreeNodePayload {\n /** Node level in the tree */\n level: number;\n\n /** `true` if the node is expanded, applicable only for nodes with `children` */\n expanded: boolean;\n\n /** `true` if the node has non-empty `children` array or `hasChildren` is set to `true` in the data */\n hasChildren: boolean;\n\n /** `true` if the node is selected */\n selected: boolean;\n\n /** `true` if the node is at the top-most level of the tree (level 1) */\n isRoot: boolean;\n\n /** `true` if the node's children are currently being loaded */\n isLoading: boolean;\n\n /** Error from the last failed load attempt, or `null` */\n loadError: Error | null;\n\n /** Node data from the `data` prop of `Tree` */\n node: TreeNodeData;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** Props to spread into the root node element */\n elementProps: {\n className: string;\n style: React.CSSProperties;\n onClick: (event: React.MouseEvent) => void;\n 'data-selected': boolean | undefined;\n 'data-value': string;\n draggable?: boolean;\n onDragStart?: (event: React.DragEvent) => void;\n onDragOver?: (event: React.DragEvent) => void;\n onDragLeave?: (event: React.DragEvent) => void;\n onDrop?: (event: React.DragEvent) => void;\n onDragEnd?: (event: React.DragEvent) => void;\n };\n\n /** Props to spread into the drag handle element when `withDragHandle` is set on `Tree`.\n * `undefined` when `withDragHandle` is not enabled or drag-and-drop is disabled. */\n dragHandleProps: TreeDragHandleProps | undefined;\n}\n\nexport type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;\n\nexport type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';\nexport type TreeCssVariables = {\n root: '--level-offset';\n};\n\nexport interface TreeDragState {\n draggedValue: string | null;\n currentDropTarget: HTMLElement | null;\n}\n\nexport interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, ElementProps<'ul'> {\n /** Data used to render nodes */\n data: TreeNodeData[];\n\n /** Horizontal padding of each subtree level, key of `theme.spacing` or any valid CSS value @default 'lg' */\n levelOffset?: MantineSpacing;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** Use-tree hook instance that can be used to manipulate component state */\n tree?: TreeController;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** If set, selection is cleared when user clicks outside of the tree @default false */\n clearSelectionOnOutsideClick?: boolean;\n\n /** If set, tree nodes range can be selected with click when `Shift` key is pressed @default true */\n allowRangeSelection?: boolean;\n\n /** If set, subtree content is kept mounted when collapsed. React 19 `Activity` is used to preserve state. @default false */\n keepMounted?: boolean;\n\n /** Called when a node is dropped on another node, enables drag-and-drop when provided */\n onDragDrop?: (payload: TreeDragDropPayload) => void;\n\n /** Called for each potential drop target to determine whether a drop is allowed.\n * When it returns `false`, the drop indicator is hidden and the drop is rejected. */\n allowDrop?: TreeAllowDrop;\n\n /** If set, drag-and-drop must be initiated from an element that spreads `dragHandleProps`\n * from the `renderNode` payload, rather than anywhere on the node. @default false */\n withDragHandle?: boolean;\n\n /** If set, connecting lines are rendered showing parent-child relationships @default false */\n withLines?: boolean;\n}\n\nfunction getFlatValues(data: TreeNodeData[]): string[] {\n return data.reduce<string[]>((acc, item) => {\n acc.push(item.value);\n if (item.children) {\n acc.push(...getFlatValues(item.children));\n }\n return acc;\n }, []);\n}\n\nexport type TreeFactory = Factory<{\n props: TreeProps;\n ref: HTMLUListElement;\n stylesNames: TreeStylesNames;\n vars: TreeCssVariables;\n}>;\n\nconst defaultProps = {\n expandOnClick: true,\n allowRangeSelection: true,\n expandOnSpace: true,\n} satisfies Partial<TreeProps>;\n\nconst varsResolver = createVarsResolver<TreeFactory>((_theme, { levelOffset }) => ({\n root: {\n '--level-offset': getSpacing(levelOffset),\n },\n}));\n\nexport const Tree = factory<TreeFactory>((_props) => {\n const props = useProps('Tree', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n expandOnClick,\n tree,\n renderNode,\n selectOnClick,\n clearSelectionOnOutsideClick,\n allowRangeSelection,\n expandOnSpace,\n levelOffset,\n checkOnSpace,\n keepMounted,\n onDragDrop,\n allowDrop,\n withDragHandle,\n withLines,\n attributes,\n ref,\n ...others\n } = props;\n\n const defaultController = useTree();\n const controller = tree || defaultController;\n\n const dragStateRef = useRef<TreeDragState>({ draggedValue: null, currentDropTarget: null });\n\n const getStyles = useStyles<TreeFactory>({\n name: 'Tree',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const clickOutsideRef = useClickOutside(\n () => clearSelectionOnOutsideClick && controller.clearSelected()\n );\n\n const mergedRef = useMergedRef(ref, clickOutsideRef);\n\n const flatValues = useMemo(() => getFlatValues(data), [data]);\n\n useEffect(() => {\n controller.initialize(data);\n }, [data]);\n\n const nodes = data.map((node, index) => (\n <TreeNode\n key={node.value}\n node={node}\n getStyles={getStyles}\n rootIndex={index}\n expandOnClick={expandOnClick}\n selectOnClick={selectOnClick}\n controller={controller}\n renderNode={renderNode}\n flatValues={flatValues}\n allowRangeSelection={allowRangeSelection}\n expandOnSpace={expandOnSpace}\n checkOnSpace={checkOnSpace}\n keepMounted={keepMounted}\n onDragDrop={onDragDrop}\n allowDrop={allowDrop}\n withDragHandle={withDragHandle}\n dragStateRef={dragStateRef}\n data={data}\n />\n ));\n\n return (\n <Box\n component=\"ul\"\n ref={mergedRef}\n {...getStyles('root')}\n {...others}\n role=\"tree\"\n aria-multiselectable={controller.multiple}\n data-tree-root\n data-with-lines={withLines || undefined}\n >\n {nodes}\n </Box>\n );\n});\n\nTree.displayName = '@mantine/core/Tree';\nTree.classes = classes;\nTree.varsResolver = varsResolver;\n\nexport namespace Tree {\n export type Props = TreeProps;\n export type StylesNames = TreeStylesNames;\n export type Factory = TreeFactory;\n export type NodeData = TreeNodeData;\n export type RenderNodePayload = RenderTreeNodePayload;\n}\n"],"mappings":";;;;;;;;;;;;;;AA0IA,SAAS,cAAc,MAAgC;CACrD,OAAO,KAAK,QAAkB,KAAK,SAAS;EAC1C,IAAI,KAAK,KAAK,KAAK;EACnB,IAAI,KAAK,UACP,IAAI,KAAK,GAAG,cAAc,KAAK,QAAQ,CAAC;EAE1C,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AASA,MAAM,eAAe;CACnB,eAAe;CACf,qBAAqB;CACrB,eAAe;AACjB;AAEA,MAAM,eAAeA,6BAAAA,oBAAiC,QAAQ,EAAE,mBAAmB,EACjF,MAAM,EACJ,kBAAkBC,iBAAAA,WAAW,WAAW,EAC1C,EACF,EAAE;AAEF,MAAa,OAAOC,gBAAAA,SAAsB,WAAW;CACnD,MAAM,QAAQC,kBAAAA,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,eACA,MACA,YACA,eACA,8BACA,qBACA,eACA,aACA,cACA,aACA,YACA,WACA,gBACA,WACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,oBAAoBC,iBAAAA,QAAQ;CAClC,MAAM,aAAa,QAAQ;CAE3B,MAAM,gBAAA,GAAA,MAAA,QAAqC;EAAE,cAAc;EAAM,mBAAmB;CAAK,CAAC;CAE1F,MAAM,YAAYC,mBAAAA,UAAuB;EACvC,MAAM;EACN,SAAA,oBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAMD,MAAM,aAAA,GAAA,eAAA,cAAyB,MAAA,GAAA,eAAA,uBAHvB,gCAAgC,WAAW,cAAc,CAGf,CAAC;CAEnD,MAAM,cAAA,GAAA,MAAA,eAA2B,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC;CAE5D,CAAA,GAAA,MAAA,iBAAgB;EACd,WAAW,WAAW,IAAI;CAC5B,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,QAAQ,KAAK,KAAK,MAAM,UAC5B,iBAAA,GAAA,kBAAA,KAACC,iBAAAA,UAAD;EAEQ;EACK;EACX,WAAW;EACI;EACA;EACH;EACA;EACA;EACS;EACN;EACD;EACD;EACD;EACD;EACK;EACF;EACR;CACP,GAlBM,KAAK,KAkBX,CACF;CAED,OACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;EACE,WAAU;EACV,KAAK;EACL,GAAI,UAAU,MAAM;EACpB,GAAI;EACJ,MAAK;EACL,wBAAsB,WAAW;EACjC,kBAAA;EACA,mBAAiB,aAAa,KAAA;YAE7B;CACE,CAAA;AAET,CAAC;AAED,KAAK,cAAc;AACnB,KAAK,UAAUC,oBAAAA;AACf,KAAK,eAAe"}
1
+ {"version":3,"file":"Tree.cjs","names":["createVarsResolver","getSpacing","factory","useProps","useTree","useStyles","TreeNode","Box","classes"],"sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { useClickOutside, useMergedRef } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport type { TreeDragDropPayload } from './move-tree-node/move-tree-node';\nimport { TreeNode } from './TreeNode';\nimport type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';\nimport { TreeController, useTree } from './use-tree';\nimport classes from './Tree.module.css';\n\nexport interface TreeNodeData {\n label: React.ReactNode;\n value: string;\n nodeProps?: Record<string, any>;\n children?: TreeNodeData[];\n hasChildren?: boolean;\n}\n\nexport interface RenderTreeNodePayload {\n /** Node level in the tree */\n level: number;\n\n /** `true` if the node is expanded, applicable only for nodes with `children` */\n expanded: boolean;\n\n /** `true` if the node has non-empty `children` array or `hasChildren` is set to `true` in the data */\n hasChildren: boolean;\n\n /** `true` if the node is selected */\n selected: boolean;\n\n /** `true` if the node is at the top-most level of the tree (level 1) */\n isRoot: boolean;\n\n /** `true` if the node's children are currently being loaded */\n isLoading: boolean;\n\n /** Error from the last failed load attempt, or `null` */\n loadError: Error | null;\n\n /** Node data from the `data` prop of `Tree` */\n node: TreeNodeData;\n\n /** Tree controller instance, return value of `useTree` hook */\n tree: TreeController;\n\n /** Props to spread into the root node element */\n elementProps: {\n className: string;\n style: React.CSSProperties;\n onClick: (event: React.MouseEvent) => void;\n 'data-selected': boolean | undefined;\n 'data-value': string;\n draggable?: boolean;\n onDragStart?: (event: React.DragEvent) => void;\n onDragOver?: (event: React.DragEvent) => void;\n onDragLeave?: (event: React.DragEvent) => void;\n onDrop?: (event: React.DragEvent) => void;\n onDragEnd?: (event: React.DragEvent) => void;\n };\n\n /** Props to spread into the drag handle element when `withDragHandle` is set on `Tree`.\n * `undefined` when `withDragHandle` is not enabled or drag-and-drop is disabled. */\n dragHandleProps: TreeDragHandleProps | undefined;\n}\n\nexport type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;\n\nexport type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';\nexport type TreeCssVariables = {\n root: '--level-offset';\n};\n\nexport interface TreeDragState {\n draggedValue: string | null;\n currentDropTarget: HTMLElement | null;\n}\n\nexport interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, ElementProps<'ul'> {\n /** Data used to render nodes */\n data: TreeNodeData[];\n\n /** Horizontal padding of each subtree level, key of `theme.spacing` or any valid CSS value @default 'lg' */\n levelOffset?: MantineSpacing;\n\n /** If set, tree node with children is expanded on click @default true */\n expandOnClick?: boolean;\n\n /** If set, tree node with children is expanded on space key press @default true */\n expandOnSpace?: boolean;\n\n /** If set, tree node is checked on space key press @default false */\n checkOnSpace?: boolean;\n\n /** If set, tree node is selected on click @default false */\n selectOnClick?: boolean;\n\n /** Use-tree hook instance that can be used to manipulate component state */\n tree?: TreeController;\n\n /** A function to render tree node label */\n renderNode?: RenderNode;\n\n /** If set, selection is cleared when user clicks outside of the tree @default false */\n clearSelectionOnOutsideClick?: boolean;\n\n /** If set, tree nodes range can be selected with click when `Shift` key is pressed @default true */\n allowRangeSelection?: boolean;\n\n /** If set, subtree content is kept mounted when collapsed. React 19 `Activity` is used to preserve state. @default false */\n keepMounted?: boolean;\n\n /** Called when a node is dropped on another node, enables drag-and-drop when provided */\n onDragDrop?: (payload: TreeDragDropPayload) => void;\n\n /** Called for each potential drop target to determine whether a drop is allowed.\n * When it returns `false`, the drop indicator is hidden and the drop is rejected. */\n allowDrop?: TreeAllowDrop;\n\n /** If set, drag-and-drop must be initiated from an element that spreads `dragHandleProps`\n * from the `renderNode` payload, rather than anywhere on the node. @default false */\n withDragHandle?: boolean;\n\n /** If set, connecting lines are rendered showing parent-child relationships @default false */\n withLines?: boolean;\n}\n\nfunction getFlatValues(data: TreeNodeData[]): string[] {\n return data.reduce<string[]>((acc, item) => {\n acc.push(item.value);\n if (item.children) {\n acc.push(...getFlatValues(item.children));\n }\n return acc;\n }, []);\n}\n\nexport type TreeFactory = Factory<{\n props: TreeProps;\n ref: HTMLUListElement;\n stylesNames: TreeStylesNames;\n vars: TreeCssVariables;\n}>;\n\nconst defaultProps = {\n expandOnClick: true,\n allowRangeSelection: true,\n expandOnSpace: true,\n} satisfies Partial<TreeProps>;\n\nconst varsResolver = createVarsResolver<TreeFactory>((_theme, { levelOffset }) => ({\n root: {\n '--level-offset': getSpacing(levelOffset),\n },\n}));\n\nexport const Tree = factory<TreeFactory>((_props) => {\n const props = useProps('Tree', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n expandOnClick,\n tree,\n renderNode,\n selectOnClick,\n clearSelectionOnOutsideClick,\n allowRangeSelection,\n expandOnSpace,\n levelOffset,\n checkOnSpace,\n keepMounted,\n onDragDrop,\n allowDrop,\n withDragHandle,\n withLines,\n attributes,\n ref,\n ...others\n } = props;\n\n const defaultController = useTree();\n const controller = tree || defaultController;\n\n const dragStateRef = useRef<TreeDragState>({ draggedValue: null, currentDropTarget: null });\n\n const getStyles = useStyles<TreeFactory>({\n name: 'Tree',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const clickOutsideRef = useClickOutside(\n () => clearSelectionOnOutsideClick && controller.clearSelected()\n );\n\n const mergedRef = useMergedRef(ref, clickOutsideRef);\n\n const flatValues = useMemo(() => getFlatValues(data), [data]);\n\n useEffect(() => {\n controller.initialize(data);\n }, [data]);\n\n const nodes = data.map((node, index) => (\n <TreeNode\n key={node.value}\n node={node}\n getStyles={getStyles}\n rootIndex={index}\n expandOnClick={expandOnClick}\n selectOnClick={selectOnClick}\n controller={controller}\n renderNode={renderNode}\n flatValues={flatValues}\n allowRangeSelection={allowRangeSelection}\n expandOnSpace={expandOnSpace}\n checkOnSpace={checkOnSpace}\n keepMounted={keepMounted}\n onDragDrop={onDragDrop}\n allowDrop={allowDrop}\n withDragHandle={withDragHandle}\n dragStateRef={dragStateRef}\n data={data}\n />\n ));\n\n return (\n <Box\n component=\"ul\"\n ref={mergedRef}\n {...getStyles('root')}\n {...others}\n role=\"tree\"\n aria-multiselectable={controller.multiple}\n data-tree-root\n data-with-lines={withLines || undefined}\n >\n {nodes}\n </Box>\n );\n});\n\nTree.displayName = '@mantine/core/Tree';\nTree.classes = classes;\nTree.varsResolver = varsResolver;\n\nexport namespace Tree {\n export type Props = TreeProps;\n export type StylesNames = TreeStylesNames;\n export type Factory = TreeFactory;\n export type NodeData = TreeNodeData;\n export type RenderNodePayload = RenderTreeNodePayload;\n}\n"],"mappings":";;;;;;;;;;;;;;AA0IA,SAAS,cAAc,MAAgC;CACrD,OAAO,KAAK,QAAkB,KAAK,SAAS;EAC1C,IAAI,KAAK,KAAK,KAAK;EACnB,IAAI,KAAK,UACP,IAAI,KAAK,GAAG,cAAc,KAAK,QAAQ,CAAC;EAE1C,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AASA,MAAM,eAAe;CACnB,eAAe;CACf,qBAAqB;CACrB,eAAe;AACjB;AAEA,MAAM,eAAeA,6BAAAA,oBAAiC,QAAQ,EAAE,mBAAmB,EACjF,MAAM,EACJ,kBAAkBC,iBAAAA,WAAW,WAAW,EAC1C,EACF,EAAE;AAEF,MAAa,OAAOC,gBAAAA,SAAsB,WAAW;CACnD,MAAM,QAAQC,kBAAAA,SAAS,QAAQ,cAAc,MAAM;CACnD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,eACA,MACA,YACA,eACA,8BACA,qBACA,eACA,aACA,cACA,aACA,YACA,WACA,gBACA,WACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,oBAAoBC,iBAAAA,QAAQ;CAClC,MAAM,aAAa,QAAQ;CAE3B,MAAM,gBAAA,GAAA,MAAA,OAAA,CAAqC;EAAE,cAAc;EAAM,mBAAmB;CAAK,CAAC;CAE1F,MAAM,YAAYC,mBAAAA,UAAuB;EACvC,MAAM;EACN,SAAA,oBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAMD,MAAM,aAAA,GAAA,eAAA,aAAA,CAAyB,MAAA,GAAA,eAAA,gBAAA,OAHvB,gCAAgC,WAAW,cAAc,CAGf,CAAC;CAEnD,MAAM,cAAA,GAAA,MAAA,QAAA,OAA2B,cAAc,IAAI,GAAG,CAAC,IAAI,CAAC;CAE5D,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,WAAW,WAAW,IAAI;CAC5B,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,QAAQ,KAAK,KAAK,MAAM,UAC5B,iBAAA,GAAA,kBAAA,IAAA,CAACC,iBAAAA,UAAD;EAEQ;EACK;EACX,WAAW;EACI;EACA;EACH;EACA;EACA;EACS;EACN;EACD;EACD;EACD;EACD;EACK;EACF;EACR;CACP,GAlBM,KAAK,KAkBX,CACF;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;EACE,WAAU;EACV,KAAK;EACL,GAAI,UAAU,MAAM;EACpB,GAAI;EACJ,MAAK;EACL,wBAAsB,WAAW;EACjC,kBAAA;EACA,mBAAiB,aAAa,KAAA;YAE7B;CACE,CAAA;AAET,CAAC;AAED,KAAK,cAAc;AACnB,KAAK,UAAUC,oBAAAA;AACf,KAAK,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.cjs","names":["useTreeNodeDragDrop","findElementAncestor","Box","Loader","Activity"],"sources":["../../../src/components/Tree/TreeNode.tsx"],"sourcesContent":["import { Activity, useRef } from 'react';\nimport { Box, findElementAncestor, GetStylesApi } from '../../core';\nimport { Loader } from '../Loader';\nimport type { TreeDragDropPayload } from './move-tree-node/move-tree-node';\nimport type { RenderNode, TreeDragState, TreeFactory, TreeNodeData } from './Tree';\nimport type { TreeController } from './use-tree';\nimport { TreeAllowDrop, useTreeNodeDragDrop } from './use-tree-node-drag-drop';\n\nfunction getValuesRange(anchor: string | null, value: string | undefined, flatValues: string[]) {\n if (!anchor || !value) {\n return [];\n }\n\n const anchorIndex = flatValues.indexOf(anchor);\n const valueIndex = flatValues.indexOf(value);\n const start = Math.min(anchorIndex, valueIndex);\n const end = Math.max(anchorIndex, valueIndex);\n\n return flatValues.slice(start, end + 1);\n}\n\nfunction isVisibleTreeNode(node: HTMLElement, root: Element) {\n for (let current: HTMLElement | null = node; current && current !== root; ) {\n if (current.style.display === 'none') {\n return false;\n }\n current = current.parentElement;\n }\n\n return true;\n}\n\ninterface TreeNodeProps {\n node: TreeNodeData;\n getStyles: GetStylesApi<TreeFactory>;\n rootIndex: number | undefined;\n controller: TreeController;\n expandOnClick: boolean | undefined;\n flatValues: string[];\n isSubtree?: boolean;\n level?: number;\n renderNode: RenderNode | undefined;\n selectOnClick: boolean | undefined;\n allowRangeSelection: boolean | undefined;\n expandOnSpace: boolean | undefined;\n checkOnSpace: boolean | undefined;\n keepMounted: boolean | undefined;\n onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;\n allowDrop: TreeAllowDrop | undefined;\n withDragHandle: boolean | undefined;\n dragStateRef: React.RefObject<TreeDragState>;\n data: TreeNodeData[];\n}\n\nexport function TreeNode({\n node,\n getStyles,\n rootIndex,\n controller,\n expandOnClick,\n selectOnClick,\n isSubtree,\n level = 1,\n renderNode,\n flatValues,\n allowRangeSelection,\n expandOnSpace,\n checkOnSpace,\n keepMounted,\n onDragDrop,\n allowDrop,\n withDragHandle,\n dragStateRef,\n data,\n}: TreeNodeProps) {\n const ref = useRef<HTMLLIElement>(null);\n const hasLoadedChildren = Array.isArray(node.children);\n const hasAsyncChildren = !!node.hasChildren && !hasLoadedChildren;\n const hasChildren = hasLoadedChildren || hasAsyncChildren;\n const isLoading = controller.isNodeLoading(node.value);\n const loadError = controller.getNodeLoadError(node.value);\n const isExpanded = controller.expandedState[node.value] || false;\n\n const nested = (node.children || []).map((child) => (\n <TreeNode\n key={child.value}\n node={child}\n flatValues={flatValues}\n getStyles={getStyles}\n rootIndex={undefined}\n level={level + 1}\n controller={controller}\n expandOnClick={expandOnClick}\n isSubtree\n renderNode={renderNode}\n selectOnClick={selectOnClick}\n allowRangeSelection={allowRangeSelection}\n expandOnSpace={expandOnSpace}\n checkOnSpace={checkOnSpace}\n keepMounted={keepMounted}\n onDragDrop={onDragDrop}\n allowDrop={allowDrop}\n withDragHandle={withDragHandle}\n dragStateRef={dragStateRef}\n data={data}\n />\n ));\n\n const { elementProps: dragElementProps, dragHandleProps } = useTreeNodeDragDrop({\n nodeValue: node.value,\n hasChildren,\n isExpanded,\n data,\n onDragDrop,\n dragStateRef,\n allowDrop,\n withDragHandle,\n });\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.nativeEvent.code === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n\n if (isExpanded) {\n event.currentTarget.querySelector<HTMLLIElement>('[role=treeitem]')?.focus();\n } else {\n controller.expand(node.value);\n }\n }\n\n if (event.nativeEvent.code === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n if (isExpanded && hasChildren) {\n controller.collapse(node.value);\n } else if (isSubtree) {\n findElementAncestor(event.currentTarget as HTMLElement, '[role=treeitem]')?.focus();\n }\n }\n\n if (event.nativeEvent.code === 'ArrowDown' || event.nativeEvent.code === 'ArrowUp') {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n\n if (!root) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll<HTMLLIElement>('[role=treeitem]')).filter(\n (treeNode) => isVisibleTreeNode(treeNode, root)\n );\n const index = nodes.indexOf(event.currentTarget as HTMLLIElement);\n\n if (index === -1) {\n return;\n }\n\n const nextIndex = event.nativeEvent.code === 'ArrowDown' ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n\n if (event.shiftKey) {\n const selectNode = nodes[nextIndex];\n\n if (selectNode) {\n controller.setSelectedState(\n getValuesRange(controller.anchorNode, selectNode.dataset.value, flatValues)\n );\n }\n }\n }\n\n if (event.nativeEvent.code === 'Space') {\n if (expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n controller.toggleExpanded(node.value);\n }\n\n if (checkOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n controller.isNodeChecked(node.value)\n ? controller.uncheckNode(node.value)\n : controller.checkNode(node.value);\n }\n }\n };\n\n const handleNodeClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (allowRangeSelection && event.shiftKey && controller.anchorNode) {\n controller.setSelectedState(getValuesRange(controller.anchorNode, node.value, flatValues));\n ref.current?.focus();\n } else {\n if (expandOnClick) {\n controller.toggleExpanded(node.value);\n }\n\n selectOnClick && controller.select(node.value);\n ref.current?.focus();\n }\n };\n\n const selected = controller.selectedState.includes(node.value);\n const elementProps = {\n ...getStyles('label'),\n onClick: handleNodeClick,\n 'data-selected': selected || undefined,\n 'data-value': node.value,\n ...dragElementProps,\n };\n\n const withLoadingIndicator = isExpanded && isLoading && nested.length === 0;\n\n return (\n <li\n {...getStyles('node', {\n style: { '--label-offset': `calc(var(--level-offset) * ${level - 1})` },\n })}\n role=\"treeitem\"\n aria-selected={selected}\n data-value={node.value}\n data-selected={selected || undefined}\n data-level={level}\n tabIndex={rootIndex === 0 ? 0 : -1}\n onKeyDown={handleKeyDown}\n ref={ref}\n >\n {typeof renderNode === 'function' ? (\n renderNode({\n node,\n level,\n selected,\n isRoot: level === 1,\n tree: controller,\n expanded: isExpanded,\n hasChildren,\n isLoading,\n loadError,\n elementProps,\n dragHandleProps,\n })\n ) : (\n <div {...elementProps}>{node.label}</div>\n )}\n\n {withLoadingIndicator && (\n <Box component=\"ul\" role=\"group\" {...getStyles('subtree')} data-level={level}>\n <li\n {...getStyles('node', {\n style: { '--label-offset': `calc(var(--level-offset) * ${level})` },\n })}\n >\n <div {...getStyles('label')}>\n <Loader size={16} style={{ marginInlineStart: 4 }} />\n </div>\n </li>\n </Box>\n )}\n\n {keepMounted && nested.length > 0 ? (\n <Activity mode={isExpanded ? 'visible' : 'hidden'}>\n <Box component=\"ul\" role=\"group\" {...getStyles('subtree')} data-level={level}>\n {nested}\n </Box>\n </Activity>\n ) : (\n isExpanded &&\n nested.length > 0 && (\n <Box component=\"ul\" role=\"group\" {...getStyles('subtree')} data-level={level}>\n {nested}\n </Box>\n )\n )}\n </li>\n );\n}\n\nTreeNode.displayName = '@mantine/core/TreeNode';\n"],"mappings":"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"}
1
+ {"version":3,"file":"TreeNode.cjs","names":["useTreeNodeDragDrop","findElementAncestor","Box","Loader","Activity"],"sources":["../../../src/components/Tree/TreeNode.tsx"],"sourcesContent":["import { Activity, useRef } from 'react';\nimport { Box, findElementAncestor, GetStylesApi } from '../../core';\nimport { Loader } from '../Loader';\nimport type { TreeDragDropPayload } from './move-tree-node/move-tree-node';\nimport type { RenderNode, TreeDragState, TreeFactory, TreeNodeData } from './Tree';\nimport type { TreeController } from './use-tree';\nimport { TreeAllowDrop, useTreeNodeDragDrop } from './use-tree-node-drag-drop';\n\nfunction getValuesRange(anchor: string | null, value: string | undefined, flatValues: string[]) {\n if (!anchor || !value) {\n return [];\n }\n\n const anchorIndex = flatValues.indexOf(anchor);\n const valueIndex = flatValues.indexOf(value);\n const start = Math.min(anchorIndex, valueIndex);\n const end = Math.max(anchorIndex, valueIndex);\n\n return flatValues.slice(start, end + 1);\n}\n\nfunction isVisibleTreeNode(node: HTMLElement, root: Element) {\n for (let current: HTMLElement | null = node; current && current !== root; ) {\n if (current.style.display === 'none') {\n return false;\n }\n current = current.parentElement;\n }\n\n return true;\n}\n\ninterface TreeNodeProps {\n node: TreeNodeData;\n getStyles: GetStylesApi<TreeFactory>;\n rootIndex: number | undefined;\n controller: TreeController;\n expandOnClick: boolean | undefined;\n flatValues: string[];\n isSubtree?: boolean;\n level?: number;\n renderNode: RenderNode | undefined;\n selectOnClick: boolean | undefined;\n allowRangeSelection: boolean | undefined;\n expandOnSpace: boolean | undefined;\n checkOnSpace: boolean | undefined;\n keepMounted: boolean | undefined;\n onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;\n allowDrop: TreeAllowDrop | undefined;\n withDragHandle: boolean | undefined;\n dragStateRef: React.RefObject<TreeDragState>;\n data: TreeNodeData[];\n}\n\nexport function TreeNode({\n node,\n getStyles,\n rootIndex,\n controller,\n expandOnClick,\n selectOnClick,\n isSubtree,\n level = 1,\n renderNode,\n flatValues,\n allowRangeSelection,\n expandOnSpace,\n checkOnSpace,\n keepMounted,\n onDragDrop,\n allowDrop,\n withDragHandle,\n dragStateRef,\n data,\n}: TreeNodeProps) {\n const ref = useRef<HTMLLIElement>(null);\n const hasLoadedChildren = Array.isArray(node.children);\n const hasAsyncChildren = !!node.hasChildren && !hasLoadedChildren;\n const hasChildren = hasLoadedChildren || hasAsyncChildren;\n const isLoading = controller.isNodeLoading(node.value);\n const loadError = controller.getNodeLoadError(node.value);\n const isExpanded = controller.expandedState[node.value] || false;\n\n const nested = (node.children || []).map((child) => (\n <TreeNode\n key={child.value}\n node={child}\n flatValues={flatValues}\n getStyles={getStyles}\n rootIndex={undefined}\n level={level + 1}\n controller={controller}\n expandOnClick={expandOnClick}\n isSubtree\n renderNode={renderNode}\n selectOnClick={selectOnClick}\n allowRangeSelection={allowRangeSelection}\n expandOnSpace={expandOnSpace}\n checkOnSpace={checkOnSpace}\n keepMounted={keepMounted}\n onDragDrop={onDragDrop}\n allowDrop={allowDrop}\n withDragHandle={withDragHandle}\n dragStateRef={dragStateRef}\n data={data}\n />\n ));\n\n const { elementProps: dragElementProps, dragHandleProps } = useTreeNodeDragDrop({\n nodeValue: node.value,\n hasChildren,\n isExpanded,\n data,\n onDragDrop,\n dragStateRef,\n allowDrop,\n withDragHandle,\n });\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.nativeEvent.code === 'ArrowRight') {\n event.stopPropagation();\n event.preventDefault();\n\n if (isExpanded) {\n event.currentTarget.querySelector<HTMLLIElement>('[role=treeitem]')?.focus();\n } else {\n controller.expand(node.value);\n }\n }\n\n if (event.nativeEvent.code === 'ArrowLeft') {\n event.stopPropagation();\n event.preventDefault();\n if (isExpanded && hasChildren) {\n controller.collapse(node.value);\n } else if (isSubtree) {\n findElementAncestor(event.currentTarget as HTMLElement, '[role=treeitem]')?.focus();\n }\n }\n\n if (event.nativeEvent.code === 'ArrowDown' || event.nativeEvent.code === 'ArrowUp') {\n const root = findElementAncestor(event.currentTarget as HTMLElement, '[data-tree-root]');\n\n if (!root) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const nodes = Array.from(root.querySelectorAll<HTMLLIElement>('[role=treeitem]')).filter(\n (treeNode) => isVisibleTreeNode(treeNode, root)\n );\n const index = nodes.indexOf(event.currentTarget as HTMLLIElement);\n\n if (index === -1) {\n return;\n }\n\n const nextIndex = event.nativeEvent.code === 'ArrowDown' ? index + 1 : index - 1;\n nodes[nextIndex]?.focus();\n\n if (event.shiftKey) {\n const selectNode = nodes[nextIndex];\n\n if (selectNode) {\n controller.setSelectedState(\n getValuesRange(controller.anchorNode, selectNode.dataset.value, flatValues)\n );\n }\n }\n }\n\n if (event.nativeEvent.code === 'Space') {\n if (expandOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n controller.toggleExpanded(node.value);\n }\n\n if (checkOnSpace) {\n event.stopPropagation();\n event.preventDefault();\n controller.isNodeChecked(node.value)\n ? controller.uncheckNode(node.value)\n : controller.checkNode(node.value);\n }\n }\n };\n\n const handleNodeClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (allowRangeSelection && event.shiftKey && controller.anchorNode) {\n controller.setSelectedState(getValuesRange(controller.anchorNode, node.value, flatValues));\n ref.current?.focus();\n } else {\n if (expandOnClick) {\n controller.toggleExpanded(node.value);\n }\n\n selectOnClick && controller.select(node.value);\n ref.current?.focus();\n }\n };\n\n const selected = controller.selectedState.includes(node.value);\n const elementProps = {\n ...getStyles('label'),\n onClick: handleNodeClick,\n 'data-selected': selected || undefined,\n 'data-value': node.value,\n ...dragElementProps,\n };\n\n const withLoadingIndicator = isExpanded && isLoading && nested.length === 0;\n\n return (\n <li\n {...getStyles('node', {\n style: { '--label-offset': `calc(var(--level-offset) * ${level - 1})` },\n })}\n role=\"treeitem\"\n aria-selected={selected}\n data-value={node.value}\n data-selected={selected || undefined}\n data-level={level}\n tabIndex={rootIndex === 0 ? 0 : -1}\n onKeyDown={handleKeyDown}\n ref={ref}\n >\n {typeof renderNode === 'function' ? (\n renderNode({\n node,\n level,\n selected,\n isRoot: level === 1,\n tree: controller,\n expanded: isExpanded,\n hasChildren,\n isLoading,\n loadError,\n elementProps,\n dragHandleProps,\n })\n ) : (\n <div {...elementProps}>{node.label}</div>\n )}\n\n {withLoadingIndicator && (\n <Box component=\"ul\" role=\"group\" {...getStyles('subtree')} data-level={level}>\n <li\n {...getStyles('node', {\n style: { '--label-offset': `calc(var(--level-offset) * ${level})` },\n })}\n >\n <div {...getStyles('label')}>\n <Loader size={16} style={{ marginInlineStart: 4 }} />\n </div>\n </li>\n </Box>\n )}\n\n {keepMounted && nested.length > 0 ? (\n <Activity mode={isExpanded ? 'visible' : 'hidden'}>\n <Box component=\"ul\" role=\"group\" {...getStyles('subtree')} data-level={level}>\n {nested}\n </Box>\n </Activity>\n ) : (\n isExpanded &&\n nested.length > 0 && (\n <Box component=\"ul\" role=\"group\" {...getStyles('subtree')} data-level={level}>\n {nested}\n </Box>\n )\n )}\n </li>\n );\n}\n\nTreeNode.displayName = '@mantine/core/TreeNode';\n"],"mappings":";;;;;;;;AAQA,SAAS,eAAe,QAAuB,OAA2B,YAAsB;CAC9F,IAAI,CAAC,UAAU,CAAC,OACd,OAAO,CAAC;CAGV,MAAM,cAAc,WAAW,QAAQ,MAAM;CAC7C,MAAM,aAAa,WAAW,QAAQ,KAAK;CAC3C,MAAM,QAAQ,KAAK,IAAI,aAAa,UAAU;CAC9C,MAAM,MAAM,KAAK,IAAI,aAAa,UAAU;CAE5C,OAAO,WAAW,MAAM,OAAO,MAAM,CAAC;AACxC;AAEA,SAAS,kBAAkB,MAAmB,MAAe;CAC3D,KAAK,IAAI,UAA8B,MAAM,WAAW,YAAY,OAAQ;EAC1E,IAAI,QAAQ,MAAM,YAAY,QAC5B,OAAO;EAET,UAAU,QAAQ;CACpB;CAEA,OAAO;AACT;AAwBA,SAAgB,SAAS,EACvB,MACA,WACA,WACA,YACA,eACA,eACA,WACA,QAAQ,GACR,YACA,YACA,qBACA,eACA,cACA,aACA,YACA,WACA,gBACA,cACA,QACgB;CAChB,MAAM,OAAA,GAAA,MAAA,OAAA,CAA4B,IAAI;CACtC,MAAM,oBAAoB,MAAM,QAAQ,KAAK,QAAQ;CACrD,MAAM,mBAAmB,CAAC,CAAC,KAAK,eAAe,CAAC;CAChD,MAAM,cAAc,qBAAqB;CACzC,MAAM,YAAY,WAAW,cAAc,KAAK,KAAK;CACrD,MAAM,YAAY,WAAW,iBAAiB,KAAK,KAAK;CACxD,MAAM,aAAa,WAAW,cAAc,KAAK,UAAU;CAE3D,MAAM,UAAU,KAAK,YAAY,CAAC,EAAA,CAAG,KAAK,UACxC,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EAEE,MAAM;EACM;EACD;EACX,WAAW,KAAA;EACX,OAAO,QAAQ;EACH;EACG;EACf,WAAA;EACY;EACG;EACM;EACN;EACD;EACD;EACD;EACD;EACK;EACF;EACR;CACP,GApBM,MAAM,KAoBZ,CACF;CAED,MAAM,EAAE,cAAc,kBAAkB,oBAAoBA,gCAAAA,oBAAoB;EAC9E,WAAW,KAAK;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,iBAAiB,UAA+B;EACpD,IAAI,MAAM,YAAY,SAAS,cAAc;GAC3C,MAAM,gBAAgB;GACtB,MAAM,eAAe;GAErB,IAAI,YACF,MAAM,cAAc,cAA6B,iBAAiB,CAAC,EAAE,MAAM;QAE3E,WAAW,OAAO,KAAK,KAAK;EAEhC;EAEA,IAAI,MAAM,YAAY,SAAS,aAAa;GAC1C,MAAM,gBAAgB;GACtB,MAAM,eAAe;GACrB,IAAI,cAAc,aAChB,WAAW,SAAS,KAAK,KAAK;QACzB,IAAI,WACT,8BAAA,oBAAoB,MAAM,eAA8B,iBAAiB,CAAC,EAAE,MAAM;EAEtF;EAEA,IAAI,MAAM,YAAY,SAAS,eAAe,MAAM,YAAY,SAAS,WAAW;GAClF,MAAM,OAAOC,8BAAAA,oBAAoB,MAAM,eAA8B,kBAAkB;GAEvF,IAAI,CAAC,MACH;GAGF,MAAM,gBAAgB;GACtB,MAAM,eAAe;GACrB,MAAM,QAAQ,MAAM,KAAK,KAAK,iBAAgC,iBAAiB,CAAC,CAAC,CAAC,QAC/E,aAAa,kBAAkB,UAAU,IAAI,CAChD;GACA,MAAM,QAAQ,MAAM,QAAQ,MAAM,aAA8B;GAEhE,IAAI,UAAU,IACZ;GAGF,MAAM,YAAY,MAAM,YAAY,SAAS,cAAc,QAAQ,IAAI,QAAQ;GAC/E,MAAM,UAAU,EAAE,MAAM;GAExB,IAAI,MAAM,UAAU;IAClB,MAAM,aAAa,MAAM;IAEzB,IAAI,YACF,WAAW,iBACT,eAAe,WAAW,YAAY,WAAW,QAAQ,OAAO,UAAU,CAC5E;GAEJ;EACF;EAEA,IAAI,MAAM,YAAY,SAAS,SAAS;GACtC,IAAI,eAAe;IACjB,MAAM,gBAAgB;IACtB,MAAM,eAAe;IACrB,WAAW,eAAe,KAAK,KAAK;GACtC;GAEA,IAAI,cAAc;IAChB,MAAM,gBAAgB;IACtB,MAAM,eAAe;IACrB,WAAW,cAAc,KAAK,KAAK,IAC/B,WAAW,YAAY,KAAK,KAAK,IACjC,WAAW,UAAU,KAAK,KAAK;GACrC;EACF;CACF;CAEA,MAAM,mBAAmB,UAA4B;EACnD,MAAM,gBAAgB;EAEtB,IAAI,uBAAuB,MAAM,YAAY,WAAW,YAAY;GAClE,WAAW,iBAAiB,eAAe,WAAW,YAAY,KAAK,OAAO,UAAU,CAAC;GACzF,IAAI,SAAS,MAAM;EACrB,OAAO;GACL,IAAI,eACF,WAAW,eAAe,KAAK,KAAK;GAGtC,iBAAiB,WAAW,OAAO,KAAK,KAAK;GAC7C,IAAI,SAAS,MAAM;EACrB;CACF;CAEA,MAAM,WAAW,WAAW,cAAc,SAAS,KAAK,KAAK;CAC7D,MAAM,eAAe;EACnB,GAAG,UAAU,OAAO;EACpB,SAAS;EACT,iBAAiB,YAAY,KAAA;EAC7B,cAAc,KAAK;EACnB,GAAG;CACL;CAEA,MAAM,uBAAuB,cAAc,aAAa,OAAO,WAAW;CAE1E,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,MAAD;EACE,GAAI,UAAU,QAAQ,EACpB,OAAO,EAAE,kBAAkB,8BAA8B,QAAQ,EAAE,GAAG,EACxE,CAAC;EACD,MAAK;EACL,iBAAe;EACf,cAAY,KAAK;EACjB,iBAAe,YAAY,KAAA;EAC3B,cAAY;EACZ,UAAU,cAAc,IAAI,IAAI;EAChC,WAAW;EACN;YAXP;GAaG,OAAO,eAAe,aACrB,WAAW;IACT;IACA;IACA;IACA,QAAQ,UAAU;IAClB,MAAM;IACN,UAAU;IACV;IACA;IACA;IACA;IACA;GACF,CAAC,IAED,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,GAAI;cAAe,KAAK;GAAW,CAAA;GAGzC,wBACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;IAAK,WAAU;IAAK,MAAK;IAAQ,GAAI,UAAU,SAAS;IAAG,cAAY;cACrE,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD;KACE,GAAI,UAAU,QAAQ,EACpB,OAAO,EAAE,kBAAkB,8BAA8B,MAAM,GAAG,EACpE,CAAC;eAED,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;MAAK,GAAI,UAAU,OAAO;gBACxB,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;OAAQ,MAAM;OAAI,OAAO,EAAE,mBAAmB,EAAE;MAAI,CAAA;KACjD,CAAA;IACH,CAAA;GACD,CAAA;GAGN,eAAe,OAAO,SAAS,IAC9B,iBAAA,GAAA,kBAAA,IAAA,CAACC,MAAAA,UAAD;IAAU,MAAM,aAAa,YAAY;cACvC,iBAAA,GAAA,kBAAA,IAAA,CAACF,YAAAA,KAAD;KAAK,WAAU;KAAK,MAAK;KAAQ,GAAI,UAAU,SAAS;KAAG,cAAY;eACpE;IACE,CAAA;GACG,CAAA,IAEV,cACA,OAAO,SAAS,KACd,iBAAA,GAAA,kBAAA,IAAA,CAACA,YAAAA,KAAD;IAAK,WAAU;IAAK,MAAK;IAAQ,GAAI,UAAU,SAAS;IAAG,cAAY;cACpE;GACE,CAAA;EAGP;;AAER;AAEA,SAAS,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-tree-data.cjs","names":[],"sources":["../../../../src/components/Tree/filter-tree-data/filter-tree-data.ts"],"sourcesContent":["import type { TreeNodeData } from '../Tree';\n\nexport type TreeNodeFilter = (query: string, node: TreeNodeData) => boolean;\n\nexport function defaultTreeNodeFilter(query: string, node: TreeNodeData): boolean {\n const label = typeof node.label === 'string' ? node.label : node.value;\n return label.toLowerCase().includes(query.toLowerCase().trim());\n}\n\nexport function filterTreeData(\n data: TreeNodeData[],\n query: string,\n filter: TreeNodeFilter = defaultTreeNodeFilter\n): TreeNodeData[] {\n if (!query.trim()) {\n return data;\n }\n\n const result: TreeNodeData[] = [];\n\n for (const node of data) {\n const nodeMatches = filter(query, node);\n const filteredChildren =\n Array.isArray(node.children) && node.children.length > 0\n ? filterTreeData(node.children, query, filter)\n : [];\n\n if (nodeMatches || filteredChildren.length > 0) {\n result.push(\n filteredChildren.length > 0 ? { ...node, children: filteredChildren } : { ...node }\n );\n }\n }\n\n return result;\n}\n"],"mappings":";;AAIA,SAAgB,sBAAsB,OAAe,MAA6B;CAEhF,QADc,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,KAAK,OACpD,YAAY,EAAE,SAAS,MAAM,YAAY,EAAE,KAAK,CAAC;AAChE;AAEA,SAAgB,eACd,MACA,OACA,SAAyB,uBACT;CAChB,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;CAGT,MAAM,SAAyB,CAAC;CAEhC,KAAK,MAAM,QAAQ,MAAM;EACvB,MAAM,cAAc,OAAO,OAAO,IAAI;EACtC,MAAM,mBACJ,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS,IACnD,eAAe,KAAK,UAAU,OAAO,MAAM,IAC3C,CAAC;EAEP,IAAI,eAAe,iBAAiB,SAAS,GAC3C,OAAO,KACL,iBAAiB,SAAS,IAAI;GAAE,GAAG;GAAM,UAAU;EAAiB,IAAI,EAAE,GAAG,KAAK,CACpF;CAEJ;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"filter-tree-data.cjs","names":[],"sources":["../../../../src/components/Tree/filter-tree-data/filter-tree-data.ts"],"sourcesContent":["import type { TreeNodeData } from '../Tree';\n\nexport type TreeNodeFilter = (query: string, node: TreeNodeData) => boolean;\n\nexport function defaultTreeNodeFilter(query: string, node: TreeNodeData): boolean {\n const label = typeof node.label === 'string' ? node.label : node.value;\n return label.toLowerCase().includes(query.toLowerCase().trim());\n}\n\nexport function filterTreeData(\n data: TreeNodeData[],\n query: string,\n filter: TreeNodeFilter = defaultTreeNodeFilter\n): TreeNodeData[] {\n if (!query.trim()) {\n return data;\n }\n\n const result: TreeNodeData[] = [];\n\n for (const node of data) {\n const nodeMatches = filter(query, node);\n const filteredChildren =\n Array.isArray(node.children) && node.children.length > 0\n ? filterTreeData(node.children, query, filter)\n : [];\n\n if (nodeMatches || filteredChildren.length > 0) {\n result.push(\n filteredChildren.length > 0 ? { ...node, children: filteredChildren } : { ...node }\n );\n }\n }\n\n return result;\n}\n"],"mappings":";;AAIA,SAAgB,sBAAsB,OAAe,MAA6B;CAEhF,QADc,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,KAAK,MAAA,CACpD,YAAY,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;AAChE;AAEA,SAAgB,eACd,MACA,OACA,SAAyB,uBACT;CAChB,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;CAGT,MAAM,SAAyB,CAAC;CAEhC,KAAK,MAAM,QAAQ,MAAM;EACvB,MAAM,cAAc,OAAO,OAAO,IAAI;EACtC,MAAM,mBACJ,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS,IACnD,eAAe,KAAK,UAAU,OAAO,MAAM,IAC3C,CAAC;EAEP,IAAI,eAAe,iBAAiB,SAAS,GAC3C,OAAO,KACL,iBAAiB,SAAS,IAAI;GAAE,GAAG;GAAM,UAAU;EAAiB,IAAI,EAAE,GAAG,KAAK,CACpF;CAEJ;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-node-checked.cjs","names":["getAllCheckedNodes","memoize"],"sources":["../../../../src/components/Tree/is-node-checked/is-node-checked.ts"],"sourcesContent":["import { memoize } from '../../../core';\nimport { getAllCheckedNodes } from '../get-all-checked-nodes/get-all-checked-nodes';\nimport type { TreeNodeData } from '../Tree';\n\nexport function isNodeChecked(\n value: string,\n data: TreeNodeData[],\n checkedState: string[]\n): boolean {\n if (checkedState.length === 0) {\n return false;\n }\n\n if (checkedState.includes(value)) {\n return true;\n }\n\n const checkedNodes = getAllCheckedNodes(data, checkedState).result;\n return checkedNodes.some((node) => node.value === value && node.checked);\n}\n\nexport const memoizedIsNodeChecked = memoize(isNodeChecked);\n"],"mappings":";;;;AAIA,SAAgB,cACd,OACA,MACA,cACS;CACT,IAAI,aAAa,WAAW,GAC1B,OAAO;CAGT,IAAI,aAAa,SAAS,KAAK,GAC7B,OAAO;CAIT,OADqBA,8BAAAA,mBAAmB,MAAM,YAAY,EAAE,OACxC,MAAM,SAAS,KAAK,UAAU,SAAS,KAAK,OAAO;AACzE;AAEA,MAAa,wBAAwBC,gBAAAA,QAAQ,aAAa"}
1
+ {"version":3,"file":"is-node-checked.cjs","names":["getAllCheckedNodes","memoize"],"sources":["../../../../src/components/Tree/is-node-checked/is-node-checked.ts"],"sourcesContent":["import { memoize } from '../../../core';\nimport { getAllCheckedNodes } from '../get-all-checked-nodes/get-all-checked-nodes';\nimport type { TreeNodeData } from '../Tree';\n\nexport function isNodeChecked(\n value: string,\n data: TreeNodeData[],\n checkedState: string[]\n): boolean {\n if (checkedState.length === 0) {\n return false;\n }\n\n if (checkedState.includes(value)) {\n return true;\n }\n\n const checkedNodes = getAllCheckedNodes(data, checkedState).result;\n return checkedNodes.some((node) => node.value === value && node.checked);\n}\n\nexport const memoizedIsNodeChecked = memoize(isNodeChecked);\n"],"mappings":";;;;AAIA,SAAgB,cACd,OACA,MACA,cACS;CACT,IAAI,aAAa,WAAW,GAC1B,OAAO;CAGT,IAAI,aAAa,SAAS,KAAK,GAC7B,OAAO;CAIT,OADqBA,8BAAAA,mBAAmB,MAAM,YAAY,CAAC,CAAC,OACxC,MAAM,SAAS,KAAK,UAAU,SAAS,KAAK,OAAO;AACzE;AAEA,MAAa,wBAAwBC,gBAAAA,QAAQ,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-node-indeterminate.cjs","names":["getAllCheckedNodes","memoize"],"sources":["../../../../src/components/Tree/is-node-indeterminate/is-node-indeterminate.ts"],"sourcesContent":["import { memoize } from '../../../core';\nimport { getAllCheckedNodes } from '../get-all-checked-nodes/get-all-checked-nodes';\nimport type { TreeNodeData } from '../Tree';\n\nexport function isNodeIndeterminate(\n value: string,\n data: TreeNodeData[],\n checkedState: string[]\n): boolean {\n if (checkedState.length === 0) {\n return false;\n }\n\n const checkedNodes = getAllCheckedNodes(data, checkedState).result;\n return checkedNodes.some((node) => node.value === value && node.indeterminate);\n}\n\nexport const memoizedIsNodeIndeterminate = memoize(isNodeIndeterminate);\n"],"mappings":";;;;AAIA,SAAgB,oBACd,OACA,MACA,cACS;CACT,IAAI,aAAa,WAAW,GAC1B,OAAO;CAIT,OADqBA,8BAAAA,mBAAmB,MAAM,YAAY,EAAE,OACxC,MAAM,SAAS,KAAK,UAAU,SAAS,KAAK,aAAa;AAC/E;AAEA,MAAa,8BAA8BC,gBAAAA,QAAQ,mBAAmB"}
1
+ {"version":3,"file":"is-node-indeterminate.cjs","names":["getAllCheckedNodes","memoize"],"sources":["../../../../src/components/Tree/is-node-indeterminate/is-node-indeterminate.ts"],"sourcesContent":["import { memoize } from '../../../core';\nimport { getAllCheckedNodes } from '../get-all-checked-nodes/get-all-checked-nodes';\nimport type { TreeNodeData } from '../Tree';\n\nexport function isNodeIndeterminate(\n value: string,\n data: TreeNodeData[],\n checkedState: string[]\n): boolean {\n if (checkedState.length === 0) {\n return false;\n }\n\n const checkedNodes = getAllCheckedNodes(data, checkedState).result;\n return checkedNodes.some((node) => node.value === value && node.indeterminate);\n}\n\nexport const memoizedIsNodeIndeterminate = memoize(isNodeIndeterminate);\n"],"mappings":";;;;AAIA,SAAgB,oBACd,OACA,MACA,cACS;CACT,IAAI,aAAa,WAAW,GAC1B,OAAO;CAIT,OADqBA,8BAAAA,mBAAmB,MAAM,YAAY,CAAC,CAAC,OACxC,MAAM,SAAS,KAAK,UAAU,SAAS,KAAK,aAAa;AAC/E;AAEA,MAAa,8BAA8BC,gBAAAA,QAAQ,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-tree-node-drag-drop.cjs","names":["findTreeNode"],"sources":["../../../src/components/Tree/use-tree-node-drag-drop.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { findTreeNode } from './get-children-nodes-values/get-children-nodes-values';\nimport type { TreeDragDropPayload, TreeDragDropPosition } from './move-tree-node/move-tree-node';\nimport type { TreeDragState, TreeNodeData } from './Tree';\n\nexport type TreeAllowDrop = (payload: TreeDragDropPayload) => boolean;\n\ninterface UseTreeNodeDragDropInput {\n nodeValue: string;\n hasChildren: boolean;\n isExpanded: boolean;\n data: TreeNodeData[];\n onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;\n dragStateRef: React.RefObject<TreeDragState>;\n allowDrop: TreeAllowDrop | undefined;\n withDragHandle: boolean | undefined;\n}\n\nexport interface TreeDragHandleProps {\n onMouseDown: (event: React.MouseEvent) => void;\n}\n\nfunction isDescendantOf(\n data: TreeNodeData[],\n ancestorValue: string,\n descendantValue: string\n): boolean {\n const ancestor = findTreeNode(ancestorValue, data);\n if (!ancestor || !ancestor.children) {\n return false;\n }\n\n function check(nodes: TreeNodeData[]): boolean {\n for (const node of nodes) {\n if (node.value === descendantValue) {\n return true;\n }\n\n if (node.children && check(node.children)) {\n return true;\n }\n }\n\n return false;\n }\n\n return check(ancestor.children);\n}\n\nfunction getDragDropPosition(\n event: React.DragEvent,\n element: HTMLElement,\n hasChildren: boolean,\n isExpanded: boolean\n): TreeDragDropPosition {\n const rect = element.getBoundingClientRect();\n const y = event.clientY - rect.top;\n const height = rect.height;\n\n if (hasChildren) {\n // Expanded folder: the subtree is visually below the label, so an 'after' drop\n // on the label itself would be ambiguous — the indicator would render between\n // the folder name and its first child, which reads as \"as first child\". Use\n // 2 zones: 'before' (top half) and 'inside' (bottom half). To drop after an\n // expanded folder, hover over the next sibling's 'before' position.\n if (isExpanded) {\n if (y < height * 0.5) {\n return 'before';\n }\n return 'inside';\n }\n\n // Collapsed folder: full 3-zone behavior.\n if (y < height * 0.25) {\n return 'before';\n }\n\n if (y > height * 0.75) {\n return 'after';\n }\n\n return 'inside';\n }\n\n if (y < height * 0.5) {\n return 'before';\n }\n\n return 'after';\n}\n\nconst EMPTY_DRAG_PROPS = { elementProps: {}, dragHandleProps: undefined } as const;\n\nexport function useTreeNodeDragDrop({\n nodeValue,\n hasChildren,\n isExpanded,\n data,\n onDragDrop,\n dragStateRef,\n allowDrop,\n withDragHandle,\n}: UseTreeNodeDragDropInput) {\n const [isDragHandleActive, setIsDragHandleActive] = useState(false);\n\n useEffect(() => {\n if (!withDragHandle || !isDragHandleActive) {\n return undefined;\n }\n\n const handleWindowMouseUp = () => setIsDragHandleActive(false);\n window.addEventListener('mouseup', handleWindowMouseUp);\n return () => window.removeEventListener('mouseup', handleWindowMouseUp);\n }, [withDragHandle, isDragHandleActive]);\n\n if (!onDragDrop) {\n return EMPTY_DRAG_PROPS;\n }\n\n const handleDragStart = (event: React.DragEvent) => {\n if (withDragHandle && !isDragHandleActive) {\n return;\n }\n\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', nodeValue);\n dragStateRef.current.draggedValue = nodeValue;\n\n const target = event.currentTarget as HTMLElement;\n const treeItem = target.closest('[role=treeitem]') as HTMLElement | null;\n if (treeItem) {\n treeItem.setAttribute('data-dragging', 'true');\n }\n\n requestAnimationFrame(() => {\n target.setAttribute('data-dragging', 'true');\n });\n };\n\n const handleDragOver = (event: React.DragEvent) => {\n const draggedValue = dragStateRef.current.draggedValue;\n if (!draggedValue || draggedValue === nodeValue) {\n return;\n }\n\n if (isDescendantOf(data, draggedValue, nodeValue)) {\n return;\n }\n\n const target = event.currentTarget as HTMLElement;\n const position = getDragDropPosition(event, target, hasChildren, isExpanded);\n\n if (allowDrop && !allowDrop({ draggedNode: draggedValue, targetNode: nodeValue, position })) {\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget && prevTarget !== target) {\n prevTarget.removeAttribute('data-drag-over');\n }\n target.removeAttribute('data-drag-over');\n dragStateRef.current.currentDropTarget = null;\n return;\n }\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\n const handleDragLeave = (event: React.DragEvent) => {\n const target = event.currentTarget as HTMLElement;\n const related = event.relatedTarget as HTMLElement | null;\n\n if (related && target.contains(related)) {\n return;\n }\n\n target.removeAttribute('data-drag-over');\n\n if (dragStateRef.current.currentDropTarget === target) {\n dragStateRef.current.currentDropTarget = null;\n }\n };\n\n const handleDrop = (event: React.DragEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n const target = event.currentTarget as HTMLElement;\n const position = target.getAttribute('data-drag-over') as TreeDragDropPosition | null;\n target.removeAttribute('data-drag-over');\n\n const draggedValue = dragStateRef.current.draggedValue;\n if (draggedValue && position && draggedValue !== nodeValue) {\n const payload = { draggedNode: draggedValue, targetNode: nodeValue, position };\n if (!allowDrop || allowDrop(payload)) {\n onDragDrop(payload);\n }\n }\n\n dragStateRef.current.draggedValue = null;\n dragStateRef.current.currentDropTarget = null;\n };\n\n const handleDragEnd = (event: React.DragEvent) => {\n const target = event.currentTarget as HTMLElement;\n target.removeAttribute('data-dragging');\n\n const treeItem = target.closest('[role=treeitem]') as HTMLElement | null;\n if (treeItem) {\n treeItem.removeAttribute('data-dragging');\n }\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n dragStateRef.current.draggedValue = null;\n dragStateRef.current.currentDropTarget = null;\n\n if (withDragHandle) {\n setIsDragHandleActive(false);\n }\n };\n\n const elementProps = {\n draggable: withDragHandle ? isDragHandleActive : true,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop,\n onDragEnd: handleDragEnd,\n };\n\n const dragHandleProps: TreeDragHandleProps | undefined = withDragHandle\n ? { onMouseDown: () => setIsDragHandleActive(true) }\n : undefined;\n\n return { elementProps, dragHandleProps };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-tree-node-drag-drop.cjs","names":["findTreeNode"],"sources":["../../../src/components/Tree/use-tree-node-drag-drop.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { findTreeNode } from './get-children-nodes-values/get-children-nodes-values';\nimport type { TreeDragDropPayload, TreeDragDropPosition } from './move-tree-node/move-tree-node';\nimport type { TreeDragState, TreeNodeData } from './Tree';\n\nexport type TreeAllowDrop = (payload: TreeDragDropPayload) => boolean;\n\ninterface UseTreeNodeDragDropInput {\n nodeValue: string;\n hasChildren: boolean;\n isExpanded: boolean;\n data: TreeNodeData[];\n onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;\n dragStateRef: React.RefObject<TreeDragState>;\n allowDrop: TreeAllowDrop | undefined;\n withDragHandle: boolean | undefined;\n}\n\nexport interface TreeDragHandleProps {\n onMouseDown: (event: React.MouseEvent) => void;\n}\n\nfunction isDescendantOf(\n data: TreeNodeData[],\n ancestorValue: string,\n descendantValue: string\n): boolean {\n const ancestor = findTreeNode(ancestorValue, data);\n if (!ancestor || !ancestor.children) {\n return false;\n }\n\n function check(nodes: TreeNodeData[]): boolean {\n for (const node of nodes) {\n if (node.value === descendantValue) {\n return true;\n }\n\n if (node.children && check(node.children)) {\n return true;\n }\n }\n\n return false;\n }\n\n return check(ancestor.children);\n}\n\nfunction getDragDropPosition(\n event: React.DragEvent,\n element: HTMLElement,\n hasChildren: boolean,\n isExpanded: boolean\n): TreeDragDropPosition {\n const rect = element.getBoundingClientRect();\n const y = event.clientY - rect.top;\n const height = rect.height;\n\n if (hasChildren) {\n // Expanded folder: the subtree is visually below the label, so an 'after' drop\n // on the label itself would be ambiguous — the indicator would render between\n // the folder name and its first child, which reads as \"as first child\". Use\n // 2 zones: 'before' (top half) and 'inside' (bottom half). To drop after an\n // expanded folder, hover over the next sibling's 'before' position.\n if (isExpanded) {\n if (y < height * 0.5) {\n return 'before';\n }\n return 'inside';\n }\n\n // Collapsed folder: full 3-zone behavior.\n if (y < height * 0.25) {\n return 'before';\n }\n\n if (y > height * 0.75) {\n return 'after';\n }\n\n return 'inside';\n }\n\n if (y < height * 0.5) {\n return 'before';\n }\n\n return 'after';\n}\n\nconst EMPTY_DRAG_PROPS = { elementProps: {}, dragHandleProps: undefined } as const;\n\nexport function useTreeNodeDragDrop({\n nodeValue,\n hasChildren,\n isExpanded,\n data,\n onDragDrop,\n dragStateRef,\n allowDrop,\n withDragHandle,\n}: UseTreeNodeDragDropInput) {\n const [isDragHandleActive, setIsDragHandleActive] = useState(false);\n\n useEffect(() => {\n if (!withDragHandle || !isDragHandleActive) {\n return undefined;\n }\n\n const handleWindowMouseUp = () => setIsDragHandleActive(false);\n window.addEventListener('mouseup', handleWindowMouseUp);\n return () => window.removeEventListener('mouseup', handleWindowMouseUp);\n }, [withDragHandle, isDragHandleActive]);\n\n if (!onDragDrop) {\n return EMPTY_DRAG_PROPS;\n }\n\n const handleDragStart = (event: React.DragEvent) => {\n if (withDragHandle && !isDragHandleActive) {\n return;\n }\n\n event.stopPropagation();\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', nodeValue);\n dragStateRef.current.draggedValue = nodeValue;\n\n const target = event.currentTarget as HTMLElement;\n const treeItem = target.closest('[role=treeitem]') as HTMLElement | null;\n if (treeItem) {\n treeItem.setAttribute('data-dragging', 'true');\n }\n\n requestAnimationFrame(() => {\n target.setAttribute('data-dragging', 'true');\n });\n };\n\n const handleDragOver = (event: React.DragEvent) => {\n const draggedValue = dragStateRef.current.draggedValue;\n if (!draggedValue || draggedValue === nodeValue) {\n return;\n }\n\n if (isDescendantOf(data, draggedValue, nodeValue)) {\n return;\n }\n\n const target = event.currentTarget as HTMLElement;\n const position = getDragDropPosition(event, target, hasChildren, isExpanded);\n\n if (allowDrop && !allowDrop({ draggedNode: draggedValue, targetNode: nodeValue, position })) {\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget && prevTarget !== target) {\n prevTarget.removeAttribute('data-drag-over');\n }\n target.removeAttribute('data-drag-over');\n dragStateRef.current.currentDropTarget = null;\n return;\n }\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\n const handleDragLeave = (event: React.DragEvent) => {\n const target = event.currentTarget as HTMLElement;\n const related = event.relatedTarget as HTMLElement | null;\n\n if (related && target.contains(related)) {\n return;\n }\n\n target.removeAttribute('data-drag-over');\n\n if (dragStateRef.current.currentDropTarget === target) {\n dragStateRef.current.currentDropTarget = null;\n }\n };\n\n const handleDrop = (event: React.DragEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n const target = event.currentTarget as HTMLElement;\n const position = target.getAttribute('data-drag-over') as TreeDragDropPosition | null;\n target.removeAttribute('data-drag-over');\n\n const draggedValue = dragStateRef.current.draggedValue;\n if (draggedValue && position && draggedValue !== nodeValue) {\n const payload = { draggedNode: draggedValue, targetNode: nodeValue, position };\n if (!allowDrop || allowDrop(payload)) {\n onDragDrop(payload);\n }\n }\n\n dragStateRef.current.draggedValue = null;\n dragStateRef.current.currentDropTarget = null;\n };\n\n const handleDragEnd = (event: React.DragEvent) => {\n const target = event.currentTarget as HTMLElement;\n target.removeAttribute('data-dragging');\n\n const treeItem = target.closest('[role=treeitem]') as HTMLElement | null;\n if (treeItem) {\n treeItem.removeAttribute('data-dragging');\n }\n\n const prevTarget = dragStateRef.current.currentDropTarget;\n if (prevTarget) {\n prevTarget.removeAttribute('data-drag-over');\n }\n\n dragStateRef.current.draggedValue = null;\n dragStateRef.current.currentDropTarget = null;\n\n if (withDragHandle) {\n setIsDragHandleActive(false);\n }\n };\n\n const elementProps = {\n draggable: withDragHandle ? isDragHandleActive : true,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop,\n onDragEnd: handleDragEnd,\n };\n\n const dragHandleProps: TreeDragHandleProps | undefined = withDragHandle\n ? { onMouseDown: () => setIsDragHandleActive(true) }\n : undefined;\n\n return { elementProps, dragHandleProps };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-tree.cjs","names":["getChildrenNodesValues","findTreeNode","getAllChildrenNodes","getAllCheckedNodes","memoizedIsNodeChecked","memoizedIsNodeIndeterminate"],"sources":["../../../src/components/Tree/use-tree.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport {\n CheckedNodeStatus,\n getAllCheckedNodes,\n} from './get-all-checked-nodes/get-all-checked-nodes';\nimport {\n findTreeNode,\n getAllChildrenNodes,\n getChildrenNodesValues,\n} from './get-children-nodes-values/get-children-nodes-values';\nimport { memoizedIsNodeChecked } from './is-node-checked/is-node-checked';\nimport { memoizedIsNodeIndeterminate } from './is-node-indeterminate/is-node-indeterminate';\nimport type { TreeNodeData } from './Tree';\n\nexport type TreeExpandedState = Record<string, boolean>;\n\nfunction getInitialTreeExpandedState(\n initialState: TreeExpandedState,\n data: TreeNodeData[],\n value: string | string[] | undefined,\n acc: TreeExpandedState = {}\n) {\n data.forEach((node) => {\n acc[node.value] = node.value in initialState ? initialState[node.value] : node.value === value;\n\n if (Array.isArray(node.children)) {\n getInitialTreeExpandedState(initialState, node.children, value, acc);\n }\n });\n\n return acc;\n}\n\nexport function getTreeExpandedState(\n data: TreeNodeData[],\n expandedNodesValues: string[] | '*'\n): Record<string, boolean> {\n const state = getInitialTreeExpandedState({}, data, []);\n\n if (expandedNodesValues === '*') {\n const result: Record<string, boolean> = {};\n const keys = Object.keys(state);\n for (let i = 0; i < keys.length; i++) {\n result[keys[i]] = true;\n }\n return result;\n }\n\n expandedNodesValues.forEach((node) => {\n state[node] = true;\n });\n\n return state;\n}\n\nfunction getInitialCheckedState(\n initialState: string[],\n data: TreeNodeData[],\n checkStrictly: boolean\n) {\n if (checkStrictly) {\n return initialState;\n }\n\n const acc: string[] = [];\n\n initialState.forEach((node) => acc.push(...getChildrenNodesValues(node, data)));\n\n return Array.from(new Set(acc));\n}\n\nfunction getAllNodeValues(data: TreeNodeData[]): string[] {\n const acc: string[] = [];\n for (const node of data) {\n acc.push(node.value);\n if (Array.isArray(node.children) && node.children.length > 0) {\n acc.push(...getAllNodeValues(node.children));\n }\n }\n return acc;\n}\n\nexport interface UseTreeInput {\n /** Initial expanded state of all nodes, uncontrolled state */\n initialExpandedState?: TreeExpandedState;\n\n /** Expanded state of all nodes, controlled state */\n expandedState?: TreeExpandedState;\n\n /** Called when the tree expanded state changes */\n onExpandedStateChange?: (expandedState: TreeExpandedState) => void;\n\n /** Initial selected state of nodes */\n initialSelectedState?: string[];\n\n /** Selected state of all nodes, controlled state */\n selectedState?: string[];\n\n /** Called when the tree selected state changes */\n onSelectedStateChange?: (selectedState: string[]) => void;\n\n /** Initial checked state of nodes */\n initialCheckedState?: string[];\n\n /** Checked state of all nodes, controlled state */\n checkedState?: string[];\n\n /** Called when the tree checked state changes */\n onCheckedStateChange?: (checkedState: string[]) => void;\n\n /** Determines whether multiple node can be selected at a time */\n multiple?: boolean;\n\n /** Called with the node value when it is expanded */\n onNodeExpand?: (value: string) => void;\n\n /** Called with the node value when it is collapsed */\n onNodeCollapse?: (value: string) => void;\n\n /** Called when a node with `hasChildren: true` is expanded for the first time.\n * The callback should update the tree data with loaded children.\n */\n onLoadChildren?: (nodeValue: string) => Promise<void>;\n\n /** When `true`, checking a parent does not affect children and vice versa.\n * Each node's checked state is fully independent. @default false\n */\n checkStrictly?: boolean;\n}\n\nexport interface UseTreeReturnType {\n /** When `true`, each node's checked state is independent (no parent-child cascading) */\n checkStrictly: boolean;\n\n /** Determines whether multiple node can be selected at a time */\n multiple: boolean;\n\n /** A record of `node.value` and boolean values that represent nodes expanded state */\n expandedState: TreeExpandedState;\n\n /** An array of selected nodes values */\n selectedState: string[];\n\n /** An array of checked nodes values */\n checkedState: string[];\n\n /** A value of the node that was last clicked\n * Anchor node is used to determine range of selected nodes for multiple selection\n */\n anchorNode: string | null;\n\n /** Initializes tree state based on provided data, called automatically by the Tree component */\n initialize: (data: TreeNodeData[]) => void;\n\n /** Toggles expanded state of the node with provided value */\n toggleExpanded: (value: string) => void;\n\n /** Collapses node with provided value */\n collapse: (value: string) => void;\n\n /** Expands node with provided value */\n expand: (value: string) => void;\n\n /** Expands all nodes */\n expandAllNodes: () => void;\n\n /** Collapses all nodes */\n collapseAllNodes: () => void;\n\n /** Sets expanded state */\n setExpandedState: (value: TreeExpandedState) => void;\n\n /** Toggles selected state of the node with provided value */\n toggleSelected: (value: string) => void;\n\n /** Selects node with provided value */\n select: (value: string) => void;\n\n /** Deselects node with provided value */\n deselect: (value: string) => void;\n\n /** Clears selected state */\n clearSelected: () => void;\n\n /** Sets selected state */\n setSelectedState: (value: string[]) => void;\n\n /** Checks node with provided value */\n checkNode: (value: string) => void;\n\n /** Unchecks node with provided value */\n uncheckNode: (value: string) => void;\n\n /** Checks all nodes */\n checkAllNodes: () => void;\n\n /** Unchecks all nodes */\n uncheckAllNodes: () => void;\n\n /** Sets checked state */\n setCheckedState: (value: string[]) => void;\n\n /** Returns all checked nodes with status */\n getCheckedNodes: () => CheckedNodeStatus[];\n\n /** Returns `true` if node with provided value is checked */\n isNodeChecked: (value: string) => boolean;\n\n /** Returns `true` if node with provided value is indeterminate */\n isNodeIndeterminate: (value: string) => boolean;\n\n /** Returns `true` if the node's children are currently being loaded */\n isNodeLoading: (value: string) => boolean;\n\n /** Returns the error from the last failed load attempt for the given node, or `null` */\n getNodeLoadError: (value: string) => Error | null;\n\n /** Programmatically triggers loading of a node's children */\n loadNode: (value: string) => Promise<void>;\n\n /** Clears the loaded cache for a node, causing it to re-fetch on next expand */\n invalidateNode: (value: string) => void;\n}\n\nexport function useTree({\n initialSelectedState = [],\n expandedState,\n initialCheckedState = [],\n checkedState,\n initialExpandedState = {},\n selectedState,\n multiple = false,\n onNodeCollapse,\n onNodeExpand,\n onCheckedStateChange,\n onSelectedStateChange,\n onExpandedStateChange,\n onLoadChildren,\n checkStrictly = false,\n}: UseTreeInput = {}): UseTreeReturnType {\n const [data, setData] = useState<TreeNodeData[]>([]);\n const [_expandedState, setExpandedState] = useUncontrolled({\n value: expandedState,\n defaultValue: initialExpandedState,\n finalValue: {},\n onChange: onExpandedStateChange,\n });\n\n const [_selectedState, setSelectedState] = useUncontrolled({\n value: selectedState,\n defaultValue: initialSelectedState,\n finalValue: [],\n onChange: onSelectedStateChange,\n });\n\n const [_checkedState, setCheckedState] = useUncontrolled({\n value: checkedState,\n defaultValue: initialCheckedState,\n finalValue: [],\n onChange: onCheckedStateChange,\n });\n\n const [anchorNode, setAnchorNode] = useState<string | null>(null);\n\n const loadingNodesRef = useRef(new Set<string>());\n const loadedNodesRef = useRef(new Set<string>());\n const [loadingNodes, setLoadingNodes] = useState<string[]>([]);\n const [loadErrors, setLoadErrors] = useState<Record<string, Error>>({});\n\n const initialize = useCallback(\n (_data: TreeNodeData[]) => {\n setExpandedState(getInitialTreeExpandedState(_expandedState, _data, _selectedState));\n setCheckedState(getInitialCheckedState(_checkedState, _data, checkStrictly));\n setData(_data);\n },\n [_selectedState, _checkedState, _expandedState, checkStrictly]\n );\n\n const loadNodeImpl = useCallback(\n async (value: string) => {\n if (!onLoadChildren) {\n return;\n }\n\n if (loadingNodesRef.current.has(value) || loadedNodesRef.current.has(value)) {\n return;\n }\n\n loadingNodesRef.current.add(value);\n setLoadingNodes(Array.from(loadingNodesRef.current));\n setLoadErrors((prev) => {\n if (!(value in prev)) {\n return prev;\n }\n\n const next = { ...prev };\n delete next[value];\n return next;\n });\n\n try {\n await onLoadChildren(value);\n loadedNodesRef.current.add(value);\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n setLoadErrors((prev) => ({ ...prev, [value]: err }));\n } finally {\n loadingNodesRef.current.delete(value);\n setLoadingNodes(Array.from(loadingNodesRef.current));\n }\n },\n [onLoadChildren]\n );\n\n const tryLoadAsync = useCallback(\n (value: string) => {\n if (!onLoadChildren) {\n return;\n }\n\n const node = findTreeNode(value, data);\n if (node && node.hasChildren && !Array.isArray(node.children)) {\n loadNodeImpl(value);\n }\n },\n [onLoadChildren, data, loadNodeImpl]\n );\n\n const toggleExpanded = useCallback(\n (value: string) => {\n const nextState = { ..._expandedState, [value]: !_expandedState[value] };\n nextState[value] ? onNodeExpand?.(value) : onNodeCollapse?.(value);\n if (nextState[value]) {\n tryLoadAsync(value);\n }\n setExpandedState(nextState);\n },\n [onNodeCollapse, onNodeExpand, _expandedState, tryLoadAsync]\n );\n\n const collapse = useCallback(\n (value: string) => {\n if (_expandedState[value] !== false) {\n onNodeCollapse?.(value);\n }\n\n setExpandedState({ ..._expandedState, [value]: false });\n },\n [onNodeCollapse, _expandedState]\n );\n\n const expand = useCallback(\n (value: string) => {\n if (_expandedState[value] !== true) {\n onNodeExpand?.(value);\n }\n\n tryLoadAsync(value);\n setExpandedState({ ..._expandedState, [value]: true });\n },\n [onNodeExpand, _expandedState, tryLoadAsync]\n );\n\n const expandAllNodes = useCallback(() => {\n const nextState = { ..._expandedState };\n Object.keys(nextState).forEach((key) => {\n nextState[key] = true;\n tryLoadAsync(key);\n });\n\n setExpandedState(nextState);\n }, [_expandedState, tryLoadAsync]);\n\n const collapseAllNodes = useCallback(() => {\n const nextState = { ..._expandedState };\n Object.keys(nextState).forEach((key) => {\n nextState[key] = false;\n });\n\n setExpandedState(nextState);\n }, [_expandedState]);\n\n const toggleSelected = useCallback(\n (value: string) => {\n if (!multiple) {\n if (_selectedState.includes(value)) {\n setAnchorNode(null);\n return [];\n }\n\n setAnchorNode(value);\n return [value];\n }\n\n if (_selectedState.includes(value)) {\n setAnchorNode(null);\n return _selectedState.filter((item) => item !== value);\n }\n\n setAnchorNode(value);\n setSelectedState([..._selectedState, value]);\n },\n [_selectedState]\n );\n\n const select = useCallback(\n (value: string) => {\n setAnchorNode(value);\n setSelectedState(\n multiple\n ? _selectedState.includes(value)\n ? _selectedState\n : [..._selectedState, value]\n : [value]\n );\n },\n [_selectedState]\n );\n\n const deselect = useCallback(\n (value: string) => {\n anchorNode === value && setAnchorNode(null);\n setSelectedState(_selectedState.filter((item) => item !== value));\n },\n [_selectedState]\n );\n\n const clearSelected = useCallback(() => {\n setSelectedState([]);\n setAnchorNode(null);\n }, []);\n\n const checkNode = useCallback(\n (value: string) => {\n if (checkStrictly) {\n if (!_checkedState.includes(value)) {\n setCheckedState([..._checkedState, value]);\n }\n } else {\n const checkedNodes = getChildrenNodesValues(value, data);\n setCheckedState(Array.from(new Set([..._checkedState, ...checkedNodes])));\n }\n },\n [data, _checkedState, checkStrictly]\n );\n\n const uncheckNode = useCallback(\n (value: string) => {\n if (checkStrictly) {\n setCheckedState(_checkedState.filter((item) => item !== value));\n } else {\n const checkedNodes = getChildrenNodesValues(value, data);\n setCheckedState(_checkedState.filter((item) => !checkedNodes.includes(item)));\n }\n },\n [data, _checkedState, checkStrictly]\n );\n\n const checkAllNodes = useCallback(() => {\n if (checkStrictly) {\n setCheckedState(getAllNodeValues(data));\n } else {\n setCheckedState(getAllChildrenNodes(data));\n }\n }, [data, checkStrictly]);\n\n const uncheckAllNodes = useCallback(() => {\n setCheckedState([]);\n }, []);\n\n const getCheckedNodes = useCallback((): CheckedNodeStatus[] => {\n if (checkStrictly) {\n return _checkedState.map((value) => {\n const node = findTreeNode(value, data);\n return {\n checked: true,\n indeterminate: false,\n value,\n hasChildren: node\n ? (Array.isArray(node.children) && node.children.length > 0) || !!node.hasChildren\n : false,\n };\n });\n }\n return getAllCheckedNodes(data, _checkedState).result;\n }, [checkStrictly, _checkedState, data]);\n\n const isNodeChecked = useCallback(\n (value: string) => {\n if (checkStrictly) {\n return _checkedState.includes(value);\n }\n return memoizedIsNodeChecked(value, data, _checkedState);\n },\n [checkStrictly, _checkedState, data]\n );\n\n const isNodeIndeterminate = useCallback(\n (value: string) => {\n if (checkStrictly) {\n return false;\n }\n return memoizedIsNodeIndeterminate(value, data, _checkedState);\n },\n [checkStrictly, _checkedState, data]\n );\n\n const isNodeLoading = useCallback(\n (value: string) => loadingNodes.includes(value),\n [loadingNodes]\n );\n\n const getNodeLoadError = useCallback((value: string) => loadErrors[value] || null, [loadErrors]);\n\n const invalidateNode = useCallback((value: string) => {\n loadedNodesRef.current.delete(value);\n setLoadErrors((prev) => {\n if (!(value in prev)) {\n return prev;\n }\n\n const next = { ...prev };\n delete next[value];\n return next;\n });\n }, []);\n\n return useMemo(\n () => ({\n checkStrictly,\n multiple,\n expandedState: _expandedState,\n selectedState: _selectedState,\n checkedState: _checkedState,\n anchorNode,\n initialize,\n\n toggleExpanded,\n collapse,\n expand,\n expandAllNodes,\n collapseAllNodes,\n setExpandedState,\n\n checkNode,\n uncheckNode,\n checkAllNodes,\n uncheckAllNodes,\n setCheckedState,\n\n toggleSelected,\n select,\n deselect,\n clearSelected,\n setSelectedState,\n\n getCheckedNodes,\n isNodeChecked,\n isNodeIndeterminate,\n\n isNodeLoading,\n getNodeLoadError,\n loadNode: loadNodeImpl,\n invalidateNode,\n }),\n [\n checkStrictly,\n multiple,\n _expandedState,\n _selectedState,\n _checkedState,\n anchorNode,\n initialize,\n toggleExpanded,\n collapse,\n expand,\n expandAllNodes,\n collapseAllNodes,\n setExpandedState,\n checkNode,\n uncheckNode,\n checkAllNodes,\n uncheckAllNodes,\n setCheckedState,\n toggleSelected,\n select,\n deselect,\n clearSelected,\n setSelectedState,\n getCheckedNodes,\n isNodeChecked,\n isNodeIndeterminate,\n isNodeLoading,\n getNodeLoadError,\n loadNodeImpl,\n invalidateNode,\n ]\n );\n}\n\nexport type TreeController = ReturnType<typeof useTree>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-tree.cjs","names":["getChildrenNodesValues","findTreeNode","getAllChildrenNodes","getAllCheckedNodes","memoizedIsNodeChecked","memoizedIsNodeIndeterminate"],"sources":["../../../src/components/Tree/use-tree.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport {\n CheckedNodeStatus,\n getAllCheckedNodes,\n} from './get-all-checked-nodes/get-all-checked-nodes';\nimport {\n findTreeNode,\n getAllChildrenNodes,\n getChildrenNodesValues,\n} from './get-children-nodes-values/get-children-nodes-values';\nimport { memoizedIsNodeChecked } from './is-node-checked/is-node-checked';\nimport { memoizedIsNodeIndeterminate } from './is-node-indeterminate/is-node-indeterminate';\nimport type { TreeNodeData } from './Tree';\n\nexport type TreeExpandedState = Record<string, boolean>;\n\nfunction getInitialTreeExpandedState(\n initialState: TreeExpandedState,\n data: TreeNodeData[],\n value: string | string[] | undefined,\n acc: TreeExpandedState = {}\n) {\n data.forEach((node) => {\n acc[node.value] = node.value in initialState ? initialState[node.value] : node.value === value;\n\n if (Array.isArray(node.children)) {\n getInitialTreeExpandedState(initialState, node.children, value, acc);\n }\n });\n\n return acc;\n}\n\nexport function getTreeExpandedState(\n data: TreeNodeData[],\n expandedNodesValues: string[] | '*'\n): Record<string, boolean> {\n const state = getInitialTreeExpandedState({}, data, []);\n\n if (expandedNodesValues === '*') {\n const result: Record<string, boolean> = {};\n const keys = Object.keys(state);\n for (let i = 0; i < keys.length; i++) {\n result[keys[i]] = true;\n }\n return result;\n }\n\n expandedNodesValues.forEach((node) => {\n state[node] = true;\n });\n\n return state;\n}\n\nfunction getInitialCheckedState(\n initialState: string[],\n data: TreeNodeData[],\n checkStrictly: boolean\n) {\n if (checkStrictly) {\n return initialState;\n }\n\n const acc: string[] = [];\n\n initialState.forEach((node) => acc.push(...getChildrenNodesValues(node, data)));\n\n return Array.from(new Set(acc));\n}\n\nfunction getAllNodeValues(data: TreeNodeData[]): string[] {\n const acc: string[] = [];\n for (const node of data) {\n acc.push(node.value);\n if (Array.isArray(node.children) && node.children.length > 0) {\n acc.push(...getAllNodeValues(node.children));\n }\n }\n return acc;\n}\n\nexport interface UseTreeInput {\n /** Initial expanded state of all nodes, uncontrolled state */\n initialExpandedState?: TreeExpandedState;\n\n /** Expanded state of all nodes, controlled state */\n expandedState?: TreeExpandedState;\n\n /** Called when the tree expanded state changes */\n onExpandedStateChange?: (expandedState: TreeExpandedState) => void;\n\n /** Initial selected state of nodes */\n initialSelectedState?: string[];\n\n /** Selected state of all nodes, controlled state */\n selectedState?: string[];\n\n /** Called when the tree selected state changes */\n onSelectedStateChange?: (selectedState: string[]) => void;\n\n /** Initial checked state of nodes */\n initialCheckedState?: string[];\n\n /** Checked state of all nodes, controlled state */\n checkedState?: string[];\n\n /** Called when the tree checked state changes */\n onCheckedStateChange?: (checkedState: string[]) => void;\n\n /** Determines whether multiple node can be selected at a time */\n multiple?: boolean;\n\n /** Called with the node value when it is expanded */\n onNodeExpand?: (value: string) => void;\n\n /** Called with the node value when it is collapsed */\n onNodeCollapse?: (value: string) => void;\n\n /** Called when a node with `hasChildren: true` is expanded for the first time.\n * The callback should update the tree data with loaded children.\n */\n onLoadChildren?: (nodeValue: string) => Promise<void>;\n\n /** When `true`, checking a parent does not affect children and vice versa.\n * Each node's checked state is fully independent. @default false\n */\n checkStrictly?: boolean;\n}\n\nexport interface UseTreeReturnType {\n /** When `true`, each node's checked state is independent (no parent-child cascading) */\n checkStrictly: boolean;\n\n /** Determines whether multiple node can be selected at a time */\n multiple: boolean;\n\n /** A record of `node.value` and boolean values that represent nodes expanded state */\n expandedState: TreeExpandedState;\n\n /** An array of selected nodes values */\n selectedState: string[];\n\n /** An array of checked nodes values */\n checkedState: string[];\n\n /** A value of the node that was last clicked\n * Anchor node is used to determine range of selected nodes for multiple selection\n */\n anchorNode: string | null;\n\n /** Initializes tree state based on provided data, called automatically by the Tree component */\n initialize: (data: TreeNodeData[]) => void;\n\n /** Toggles expanded state of the node with provided value */\n toggleExpanded: (value: string) => void;\n\n /** Collapses node with provided value */\n collapse: (value: string) => void;\n\n /** Expands node with provided value */\n expand: (value: string) => void;\n\n /** Expands all nodes */\n expandAllNodes: () => void;\n\n /** Collapses all nodes */\n collapseAllNodes: () => void;\n\n /** Sets expanded state */\n setExpandedState: (value: TreeExpandedState) => void;\n\n /** Toggles selected state of the node with provided value */\n toggleSelected: (value: string) => void;\n\n /** Selects node with provided value */\n select: (value: string) => void;\n\n /** Deselects node with provided value */\n deselect: (value: string) => void;\n\n /** Clears selected state */\n clearSelected: () => void;\n\n /** Sets selected state */\n setSelectedState: (value: string[]) => void;\n\n /** Checks node with provided value */\n checkNode: (value: string) => void;\n\n /** Unchecks node with provided value */\n uncheckNode: (value: string) => void;\n\n /** Checks all nodes */\n checkAllNodes: () => void;\n\n /** Unchecks all nodes */\n uncheckAllNodes: () => void;\n\n /** Sets checked state */\n setCheckedState: (value: string[]) => void;\n\n /** Returns all checked nodes with status */\n getCheckedNodes: () => CheckedNodeStatus[];\n\n /** Returns `true` if node with provided value is checked */\n isNodeChecked: (value: string) => boolean;\n\n /** Returns `true` if node with provided value is indeterminate */\n isNodeIndeterminate: (value: string) => boolean;\n\n /** Returns `true` if the node's children are currently being loaded */\n isNodeLoading: (value: string) => boolean;\n\n /** Returns the error from the last failed load attempt for the given node, or `null` */\n getNodeLoadError: (value: string) => Error | null;\n\n /** Programmatically triggers loading of a node's children */\n loadNode: (value: string) => Promise<void>;\n\n /** Clears the loaded cache for a node, causing it to re-fetch on next expand */\n invalidateNode: (value: string) => void;\n}\n\nexport function useTree({\n initialSelectedState = [],\n expandedState,\n initialCheckedState = [],\n checkedState,\n initialExpandedState = {},\n selectedState,\n multiple = false,\n onNodeCollapse,\n onNodeExpand,\n onCheckedStateChange,\n onSelectedStateChange,\n onExpandedStateChange,\n onLoadChildren,\n checkStrictly = false,\n}: UseTreeInput = {}): UseTreeReturnType {\n const [data, setData] = useState<TreeNodeData[]>([]);\n const [_expandedState, setExpandedState] = useUncontrolled({\n value: expandedState,\n defaultValue: initialExpandedState,\n finalValue: {},\n onChange: onExpandedStateChange,\n });\n\n const [_selectedState, setSelectedState] = useUncontrolled({\n value: selectedState,\n defaultValue: initialSelectedState,\n finalValue: [],\n onChange: onSelectedStateChange,\n });\n\n const [_checkedState, setCheckedState] = useUncontrolled({\n value: checkedState,\n defaultValue: initialCheckedState,\n finalValue: [],\n onChange: onCheckedStateChange,\n });\n\n const [anchorNode, setAnchorNode] = useState<string | null>(null);\n\n const loadingNodesRef = useRef(new Set<string>());\n const loadedNodesRef = useRef(new Set<string>());\n const [loadingNodes, setLoadingNodes] = useState<string[]>([]);\n const [loadErrors, setLoadErrors] = useState<Record<string, Error>>({});\n\n const initialize = useCallback(\n (_data: TreeNodeData[]) => {\n setExpandedState(getInitialTreeExpandedState(_expandedState, _data, _selectedState));\n setCheckedState(getInitialCheckedState(_checkedState, _data, checkStrictly));\n setData(_data);\n },\n [_selectedState, _checkedState, _expandedState, checkStrictly]\n );\n\n const loadNodeImpl = useCallback(\n async (value: string) => {\n if (!onLoadChildren) {\n return;\n }\n\n if (loadingNodesRef.current.has(value) || loadedNodesRef.current.has(value)) {\n return;\n }\n\n loadingNodesRef.current.add(value);\n setLoadingNodes(Array.from(loadingNodesRef.current));\n setLoadErrors((prev) => {\n if (!(value in prev)) {\n return prev;\n }\n\n const next = { ...prev };\n delete next[value];\n return next;\n });\n\n try {\n await onLoadChildren(value);\n loadedNodesRef.current.add(value);\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n setLoadErrors((prev) => ({ ...prev, [value]: err }));\n } finally {\n loadingNodesRef.current.delete(value);\n setLoadingNodes(Array.from(loadingNodesRef.current));\n }\n },\n [onLoadChildren]\n );\n\n const tryLoadAsync = useCallback(\n (value: string) => {\n if (!onLoadChildren) {\n return;\n }\n\n const node = findTreeNode(value, data);\n if (node && node.hasChildren && !Array.isArray(node.children)) {\n loadNodeImpl(value);\n }\n },\n [onLoadChildren, data, loadNodeImpl]\n );\n\n const toggleExpanded = useCallback(\n (value: string) => {\n const nextState = { ..._expandedState, [value]: !_expandedState[value] };\n nextState[value] ? onNodeExpand?.(value) : onNodeCollapse?.(value);\n if (nextState[value]) {\n tryLoadAsync(value);\n }\n setExpandedState(nextState);\n },\n [onNodeCollapse, onNodeExpand, _expandedState, tryLoadAsync]\n );\n\n const collapse = useCallback(\n (value: string) => {\n if (_expandedState[value] !== false) {\n onNodeCollapse?.(value);\n }\n\n setExpandedState({ ..._expandedState, [value]: false });\n },\n [onNodeCollapse, _expandedState]\n );\n\n const expand = useCallback(\n (value: string) => {\n if (_expandedState[value] !== true) {\n onNodeExpand?.(value);\n }\n\n tryLoadAsync(value);\n setExpandedState({ ..._expandedState, [value]: true });\n },\n [onNodeExpand, _expandedState, tryLoadAsync]\n );\n\n const expandAllNodes = useCallback(() => {\n const nextState = { ..._expandedState };\n Object.keys(nextState).forEach((key) => {\n nextState[key] = true;\n tryLoadAsync(key);\n });\n\n setExpandedState(nextState);\n }, [_expandedState, tryLoadAsync]);\n\n const collapseAllNodes = useCallback(() => {\n const nextState = { ..._expandedState };\n Object.keys(nextState).forEach((key) => {\n nextState[key] = false;\n });\n\n setExpandedState(nextState);\n }, [_expandedState]);\n\n const toggleSelected = useCallback(\n (value: string) => {\n if (!multiple) {\n if (_selectedState.includes(value)) {\n setAnchorNode(null);\n return [];\n }\n\n setAnchorNode(value);\n return [value];\n }\n\n if (_selectedState.includes(value)) {\n setAnchorNode(null);\n return _selectedState.filter((item) => item !== value);\n }\n\n setAnchorNode(value);\n setSelectedState([..._selectedState, value]);\n },\n [_selectedState]\n );\n\n const select = useCallback(\n (value: string) => {\n setAnchorNode(value);\n setSelectedState(\n multiple\n ? _selectedState.includes(value)\n ? _selectedState\n : [..._selectedState, value]\n : [value]\n );\n },\n [_selectedState]\n );\n\n const deselect = useCallback(\n (value: string) => {\n anchorNode === value && setAnchorNode(null);\n setSelectedState(_selectedState.filter((item) => item !== value));\n },\n [_selectedState]\n );\n\n const clearSelected = useCallback(() => {\n setSelectedState([]);\n setAnchorNode(null);\n }, []);\n\n const checkNode = useCallback(\n (value: string) => {\n if (checkStrictly) {\n if (!_checkedState.includes(value)) {\n setCheckedState([..._checkedState, value]);\n }\n } else {\n const checkedNodes = getChildrenNodesValues(value, data);\n setCheckedState(Array.from(new Set([..._checkedState, ...checkedNodes])));\n }\n },\n [data, _checkedState, checkStrictly]\n );\n\n const uncheckNode = useCallback(\n (value: string) => {\n if (checkStrictly) {\n setCheckedState(_checkedState.filter((item) => item !== value));\n } else {\n const checkedNodes = getChildrenNodesValues(value, data);\n setCheckedState(_checkedState.filter((item) => !checkedNodes.includes(item)));\n }\n },\n [data, _checkedState, checkStrictly]\n );\n\n const checkAllNodes = useCallback(() => {\n if (checkStrictly) {\n setCheckedState(getAllNodeValues(data));\n } else {\n setCheckedState(getAllChildrenNodes(data));\n }\n }, [data, checkStrictly]);\n\n const uncheckAllNodes = useCallback(() => {\n setCheckedState([]);\n }, []);\n\n const getCheckedNodes = useCallback((): CheckedNodeStatus[] => {\n if (checkStrictly) {\n return _checkedState.map((value) => {\n const node = findTreeNode(value, data);\n return {\n checked: true,\n indeterminate: false,\n value,\n hasChildren: node\n ? (Array.isArray(node.children) && node.children.length > 0) || !!node.hasChildren\n : false,\n };\n });\n }\n return getAllCheckedNodes(data, _checkedState).result;\n }, [checkStrictly, _checkedState, data]);\n\n const isNodeChecked = useCallback(\n (value: string) => {\n if (checkStrictly) {\n return _checkedState.includes(value);\n }\n return memoizedIsNodeChecked(value, data, _checkedState);\n },\n [checkStrictly, _checkedState, data]\n );\n\n const isNodeIndeterminate = useCallback(\n (value: string) => {\n if (checkStrictly) {\n return false;\n }\n return memoizedIsNodeIndeterminate(value, data, _checkedState);\n },\n [checkStrictly, _checkedState, data]\n );\n\n const isNodeLoading = useCallback(\n (value: string) => loadingNodes.includes(value),\n [loadingNodes]\n );\n\n const getNodeLoadError = useCallback((value: string) => loadErrors[value] || null, [loadErrors]);\n\n const invalidateNode = useCallback((value: string) => {\n loadedNodesRef.current.delete(value);\n setLoadErrors((prev) => {\n if (!(value in prev)) {\n return prev;\n }\n\n const next = { ...prev };\n delete next[value];\n return next;\n });\n }, []);\n\n return useMemo(\n () => ({\n checkStrictly,\n multiple,\n expandedState: _expandedState,\n selectedState: _selectedState,\n checkedState: _checkedState,\n anchorNode,\n initialize,\n\n toggleExpanded,\n collapse,\n expand,\n expandAllNodes,\n collapseAllNodes,\n setExpandedState,\n\n checkNode,\n uncheckNode,\n checkAllNodes,\n uncheckAllNodes,\n setCheckedState,\n\n toggleSelected,\n select,\n deselect,\n clearSelected,\n setSelectedState,\n\n getCheckedNodes,\n isNodeChecked,\n isNodeIndeterminate,\n\n isNodeLoading,\n getNodeLoadError,\n loadNode: loadNodeImpl,\n invalidateNode,\n }),\n [\n checkStrictly,\n multiple,\n _expandedState,\n _selectedState,\n _checkedState,\n anchorNode,\n initialize,\n toggleExpanded,\n collapse,\n expand,\n expandAllNodes,\n collapseAllNodes,\n setExpandedState,\n checkNode,\n uncheckNode,\n checkAllNodes,\n uncheckAllNodes,\n setCheckedState,\n toggleSelected,\n select,\n deselect,\n clearSelected,\n setSelectedState,\n getCheckedNodes,\n isNodeChecked,\n isNodeIndeterminate,\n isNodeLoading,\n getNodeLoadError,\n loadNodeImpl,\n invalidateNode,\n ]\n );\n}\n\nexport type TreeController = ReturnType<typeof useTree>;\n"],"mappings":"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"}
@@ -57,7 +57,7 @@ const TreeSelect = require_factory.genericFactory((_props) => {
57
57
  "InputWrapper",
58
58
  "TreeSelect"
59
59
  ], defaultProps, _props);
60
- const { classNames, className, style, styles, unstyled, vars, size, data, mode, value, defaultValue, onChange, checkStrictly, checkedStrategy, defaultExpandedValues, defaultExpandAll, expandedValues, onExpandedChange, expandOnClick, searchable, searchValue, defaultSearchValue, onSearchChange, filter, nothingFoundMessage, allowDeselect, clearable, clearSectionMode, clearButtonProps, maxValues, maxDisplayedValues, maxDisplayedValuesContent, onRemove, onClear, renderNode, withLines, hiddenInputProps, hiddenInputValuesDivider, scrollAreaProps, chevronColor, maxDropdownHeight, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, comboboxProps, clearSearchOnChange, openOnFocus, chevronAriaLabels, variant, onKeyDown, onFocus, onBlur, onClick, readOnly, disabled, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, labelProps, descriptionProps, errorProps, wrapperProps, description, label, error, withErrorStyles, name, form, id, placeholder, required, mod, attributes, ...others } = props;
60
+ const { classNames, className, style, styles, unstyled, vars, size, data, mode, value, defaultValue, onChange, checkStrictly, checkedStrategy, defaultExpandedValues, defaultExpandAll, expandedValues, onExpandedChange, expandOnClick, searchable, searchValue, defaultSearchValue, onSearchChange, filter, nothingFoundMessage, allowDeselect, clearable, clearSectionMode, clearButtonProps, maxValues, maxDisplayedValues, maxDisplayedValuesContent, onRemove, onClear, renderNode, withLines, hiddenInputProps, hiddenInputValuesDivider, scrollAreaProps, chevronColor, maxDropdownHeight, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, comboboxProps, clearSearchOnChange, openOnFocus, chevronAriaLabels, variant, onKeyDown, onFocus, onBlur, onClick, readOnly, disabled, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, labelProps, descriptionProps, errorProps, successProps, wrapperProps, description, label, error, success, withErrorStyles, withSuccessStyles, name, form, id, placeholder, required, mod, attributes, ...others } = props;
61
61
  const isMulti = mode === "multiple" || mode === "checkbox";
62
62
  const isCheckbox = mode === "checkbox";
63
63
  const _id = (0, _mantine_hooks.useId)(id);
@@ -438,11 +438,14 @@ const TreeSelect = require_factory.genericFactory((_props) => {
438
438
  labelProps,
439
439
  descriptionProps,
440
440
  errorProps,
441
+ successProps,
441
442
  wrapperProps,
442
443
  description,
443
444
  label,
444
445
  error,
446
+ success,
445
447
  withErrorStyles,
448
+ withSuccessStyles,
446
449
  __stylesApiProps: {
447
450
  ...props,
448
451
  rightSectionPointerEvents: rightSectionPointerEvents || "none",
@@ -556,6 +559,7 @@ const TreeSelect = require_factory.genericFactory((_props) => {
556
559
  unstyled,
557
560
  pointer: !searchable,
558
561
  error,
562
+ success,
559
563
  attributes,
560
564
  className,
561
565
  style,
@@ -573,10 +577,12 @@ const TreeSelect = require_factory.genericFactory((_props) => {
573
577
  labelProps,
574
578
  descriptionProps,
575
579
  errorProps,
580
+ successProps,
576
581
  wrapperProps,
577
582
  description,
578
583
  label,
579
584
  withErrorStyles,
585
+ withSuccessStyles,
580
586
  placeholder,
581
587
  required,
582
588
  mod