{"version":3,"file":"TreeSelect.cjs","names":["genericFactory","useProps","useCombobox","getTreeExpandedState","findTreeNode","expandToLeafChecked","filterTreeData","flattenTreeSelectData","useStyles","useResolvedStylesApi","extractStyleProps","isNodeChecked","getChildrenNodesValues","checkedToValue","Combobox","Pill","isNodeIndeterminate","TreeSelectOption","classes","ScrollArea","PillsInput","InputBase"],"sources":["../../../src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n  BoxProps,\n  ElementProps,\n  extractStyleProps,\n  Factory,\n  genericFactory,\n  MantineColor,\n  StylesApiProps,\n  useProps,\n  useResolvedStylesApi,\n  useStyles,\n} from '../../core';\nimport { Combobox, ComboboxLikeStylesNames, useCombobox } from '../Combobox';\nimport {\n  __BaseInputProps,\n  __InputStylesNames,\n  ClearSectionMode,\n  InputClearButtonProps,\n  InputVariant,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollArea, ScrollAreaProps } from '../ScrollArea';\nimport type { TreeNodeData } from '../Tree';\nimport { filterTreeData } from '../Tree/filter-tree-data/filter-tree-data';\nimport {\n  findTreeNode,\n  getChildrenNodesValues,\n} from '../Tree/get-children-nodes-values/get-children-nodes-values';\nimport { isNodeChecked } from '../Tree/is-node-checked/is-node-checked';\nimport { isNodeIndeterminate } from '../Tree/is-node-indeterminate/is-node-indeterminate';\nimport { getTreeExpandedState, TreeExpandedState } from '../Tree/use-tree';\nimport { flattenTreeSelectData } from './flatten-tree-select-data';\nimport {\n  CheckedStrategy,\n  checkedToValue,\n  expandToLeafChecked,\n} from './get-checked-values-by-strategy';\nimport {\n  TreeSelectChevronAriaLabels,\n  TreeSelectOption,\n  TreeSelectRenderNodePayload,\n} from './TreeSelectOption';\nimport classes from './TreeSelect.module.css';\n\nexport type TreeSelectStylesNames =\n  | __InputStylesNames\n  | ComboboxLikeStylesNames\n  | 'pill'\n  | 'pillsList'\n  | 'inputField';\n\nexport type TreeSelectMode = 'single' | 'multiple' | 'checkbox';\n\nexport type TreeSelectValue<Mode extends TreeSelectMode> = Mode extends 'single'\n  ? string | null\n  : string[];\n\nexport interface TreeSelectProps<Mode extends TreeSelectMode = 'single'>\n  extends\n    BoxProps,\n    __BaseInputProps,\n    StylesApiProps<TreeSelectFactory>,\n    ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n  /** Tree data */\n  data: TreeNodeData[];\n\n  /** Selection mode: 'single', 'multiple', or 'checkbox' (with cascade) @default 'single' */\n  mode?: Mode;\n\n  /** Controlled value */\n  value?: TreeSelectValue<Mode>;\n\n  /** Default value */\n  defaultValue?: TreeSelectValue<Mode>;\n\n  /** Called when value changes */\n  onChange?: (value: TreeSelectValue<Mode>) => void;\n\n  /** Disables parent-child cascade in checkbox mode @default false */\n  checkStrictly?: boolean;\n\n  /** Controls which checked nodes appear in value/pills in checkbox mode @default 'child' */\n  checkedStrategy?: CheckedStrategy;\n\n  /** Default expanded node values */\n  defaultExpandedValues?: string[];\n\n  /** Expand all nodes by default @default false */\n  defaultExpandAll?: boolean;\n\n  /** Controlled expanded state */\n  expandedValues?: string[];\n\n  /** Called when expanded state changes */\n  onExpandedChange?: (values: string[]) => void;\n\n  /** Also toggle expand when clicking a parent node (not just the chevron). In `single` and `multiple` modes, parent clicks only expand; only leaves can be selected. In `checkbox` mode, parent clicks both check and expand. @default false */\n  expandOnClick?: boolean;\n\n  /** Enables search filtering @default false */\n  searchable?: boolean;\n\n  /** Controlled search value */\n  searchValue?: string;\n\n  /** Default search value */\n  defaultSearchValue?: string;\n\n  /** Called when search changes */\n  onSearchChange?: (value: string) => void;\n\n  /** Custom filter function */\n  filter?: (query: string, node: TreeNodeData) => boolean;\n\n  /** Message when no nodes match search */\n  nothingFoundMessage?: React.ReactNode;\n\n  /** Allows deselecting in single mode @default true */\n  allowDeselect?: boolean;\n\n  /** Shows clear button @default false */\n  clearable?: boolean;\n\n  /** Determines how the clear button and rightSection are rendered @default 'both' */\n  clearSectionMode?: ClearSectionMode;\n\n  /** Props for the clear button */\n  clearButtonProps?: InputClearButtonProps;\n\n  /** Maximum selectable values (multiple/checkbox mode) */\n  maxValues?: number;\n\n  /** Maximum displayed pills before \"+N more\" */\n  maxDisplayedValues?: number;\n\n  /** Content shown when values overflow maxDisplayedValues */\n  maxDisplayedValuesContent?: React.ReactNode | ((overflow: number) => React.ReactNode);\n\n  /** Called with removed value in multiple/checkbox mode */\n  onRemove?: (value: string) => void;\n\n  /** Called when clear button is clicked */\n  onClear?: () => void;\n\n  /** Custom node rendering in the dropdown */\n  renderNode?: (payload: TreeSelectRenderNodePayload) => React.ReactNode;\n\n  /** Show tree connection lines between parent and child nodes @default true */\n  withLines?: boolean;\n\n  /** Props for the hidden input */\n  hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;\n\n  /** Divider for hidden input values @default ',' */\n  hiddenInputValuesDivider?: string;\n\n  /** Props for the ScrollArea in the dropdown */\n  scrollAreaProps?: ScrollAreaProps;\n\n  /** Controls the default chevron color */\n  chevronColor?: MantineColor;\n\n  /** Max dropdown height @default 220 */\n  maxDropdownHeight?: number | string;\n\n  /** Controlled dropdown state */\n  dropdownOpened?: boolean;\n\n  /** Default dropdown state */\n  defaultDropdownOpened?: boolean;\n\n  /** Called when dropdown opens */\n  onDropdownOpen?: () => void;\n\n  /** Called when dropdown closes */\n  onDropdownClose?: () => void;\n\n  /** Props passed to the underlying Combobox */\n  comboboxProps?: Record<string, any>;\n\n  /** Clear search on selection change @default true */\n  clearSearchOnChange?: boolean;\n\n  /** Opens dropdown on focus (searchable mode) @default true */\n  openOnFocus?: boolean;\n\n  /** aria-label values for the expand/collapse chevron button */\n  chevronAriaLabels?: TreeSelectChevronAriaLabels;\n}\n\nexport type TreeSelectFactory = Factory<{\n  props: TreeSelectProps;\n  ref: HTMLInputElement;\n  stylesNames: TreeSelectStylesNames;\n  variant: InputVariant;\n  signature: <Mode extends TreeSelectMode = 'single'>(\n    props: TreeSelectProps<Mode>\n  ) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n  mode: 'single',\n  allowDeselect: true,\n  checkedStrategy: 'child',\n  maxValues: Infinity,\n  hiddenInputValuesDivider: ',',\n  clearSearchOnChange: true,\n  openOnFocus: true,\n  size: 'sm',\n  withLines: true,\n} satisfies Partial<TreeSelectProps<TreeSelectMode>>;\n\nconst clearSectionOffset: Record<string, number> = {\n  xs: 41,\n  sm: 50,\n  md: 60,\n  lg: 72,\n  xl: 89,\n};\n\nfunction getAncestorsToNode(value: string, nodes: TreeNodeData[]): string[] | null {\n  for (const node of nodes) {\n    if (node.value === value) {\n      return [];\n    }\n    if (Array.isArray(node.children)) {\n      const path = getAncestorsToNode(value, node.children);\n      if (path !== null) {\n        return [node.value, ...path];\n      }\n    }\n  }\n  return null;\n}\n\nexport const TreeSelect = genericFactory<TreeSelectFactory>((_props) => {\n  const props = useProps(['Input', 'InputWrapper', 'TreeSelect'], defaultProps as any, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    size,\n    data,\n    mode,\n    value,\n    defaultValue,\n    onChange,\n    checkStrictly,\n    checkedStrategy,\n    defaultExpandedValues,\n    defaultExpandAll,\n    expandedValues,\n    onExpandedChange,\n    expandOnClick,\n    searchable,\n    searchValue,\n    defaultSearchValue,\n    onSearchChange,\n    filter,\n    nothingFoundMessage,\n    allowDeselect,\n    clearable,\n    clearSectionMode,\n    clearButtonProps,\n    maxValues,\n    maxDisplayedValues,\n    maxDisplayedValuesContent,\n    onRemove,\n    onClear,\n    renderNode,\n    withLines,\n    hiddenInputProps,\n    hiddenInputValuesDivider,\n    scrollAreaProps,\n    chevronColor,\n    maxDropdownHeight,\n    dropdownOpened,\n    defaultDropdownOpened,\n    onDropdownOpen,\n    onDropdownClose,\n    comboboxProps,\n    clearSearchOnChange,\n    openOnFocus,\n    chevronAriaLabels,\n    variant,\n    onKeyDown,\n    onFocus,\n    onBlur,\n    onClick,\n    readOnly,\n    disabled,\n    radius,\n    rightSection,\n    rightSectionWidth,\n    rightSectionPointerEvents,\n    rightSectionProps,\n    leftSection,\n    leftSectionWidth,\n    leftSectionPointerEvents,\n    leftSectionProps,\n    inputContainer,\n    inputWrapperOrder,\n    withAsterisk,\n    labelProps,\n    descriptionProps,\n    errorProps,\n    wrapperProps,\n    description,\n    label,\n    error,\n    withErrorStyles,\n    name,\n    form,\n    id,\n    placeholder,\n    required,\n    mod,\n    attributes,\n    ...others\n  } = props;\n\n  const isMulti = mode === 'multiple' || mode === 'checkbox';\n  const isCheckbox = mode === 'checkbox';\n  const _id = useId(id);\n\n  const combobox = useCombobox({\n    opened: dropdownOpened,\n    defaultOpened: defaultDropdownOpened,\n    onDropdownOpen: () => {\n      onDropdownOpen?.();\n      combobox.updateSelectedOptionIndex('active', { scrollIntoView: true });\n    },\n    onDropdownClose: () => {\n      onDropdownClose?.();\n      combobox.resetSelectedOption();\n    },\n  });\n\n  const initialExpanded = useMemo(() => {\n    if (defaultExpandAll) {\n      return getTreeExpandedState(data, '*');\n    }\n    if (defaultExpandedValues) {\n      return getTreeExpandedState(data, defaultExpandedValues);\n    }\n    return getTreeExpandedState(data, []);\n  }, []);\n\n  const expandedToRecord = useCallback(\n    (values: string[] | undefined): TreeExpandedState | undefined => {\n      if (!values) {\n        return undefined;\n      }\n      return getTreeExpandedState(data, values);\n    },\n    [data]\n  );\n\n  const [_expandedState, setExpandedState] = useUncontrolled<TreeExpandedState>({\n    value: expandedToRecord(expandedValues),\n    defaultValue: initialExpanded,\n    finalValue: {},\n    onChange: (val) => {\n      if (onExpandedChange) {\n        onExpandedChange(\n          Object.entries(val)\n            .filter(([, v]) => v)\n            .map(([k]) => k)\n        );\n      }\n    },\n  });\n\n  const toggleExpand = useCallback(\n    (nodeValue: string) => {\n      setExpandedState({ ..._expandedState, [nodeValue]: !_expandedState[nodeValue] });\n    },\n    [_expandedState]\n  );\n\n  const initialSearchValue = useMemo(() => {\n    if (mode !== 'single' || !defaultValue) {\n      return '';\n    }\n    const node = findTreeNode(defaultValue as string, data);\n    return node ? (typeof node.label === 'string' ? node.label : '') : '';\n  }, []);\n\n  const [_searchValue, setSearchValue] = useUncontrolled({\n    value: searchValue,\n    defaultValue: defaultSearchValue,\n    finalValue: initialSearchValue,\n    onChange: onSearchChange,\n  });\n\n  const handleSearchChange = (val: string) => {\n    setSearchValue(val);\n    combobox.resetSelectedOption();\n  };\n\n  const [_value, setValue] = useUncontrolled({\n    value: value as any,\n    defaultValue: defaultValue as any,\n    finalValue: isMulti ? [] : null,\n    onChange,\n  });\n\n  const internalChecked = useMemo(() => {\n    if (!isCheckbox || !_value || !Array.isArray(_value)) {\n      return [];\n    }\n    if (checkStrictly) {\n      return _value;\n    }\n    return expandToLeafChecked(_value, data);\n  }, [isCheckbox, _value, data, checkStrictly]);\n\n  const filteredData = useMemo(() => {\n    if (!searchable || !_searchValue) {\n      return data;\n    }\n    if (mode === 'single' && _value) {\n      const node = findTreeNode(_value as string, data);\n      if (node && _searchValue === (typeof node.label === 'string' ? node.label : '')) {\n        return data;\n      }\n    }\n    return filterTreeData(data, _searchValue, filter);\n  }, [data, _searchValue, filter, searchable, mode, _value]);\n\n  const expandedForRender = useMemo(() => {\n    if (_searchValue && filteredData !== data) {\n      const expanded = { ..._expandedState };\n      const expandFilteredParents = (nodes: TreeNodeData[]) => {\n        for (const node of nodes) {\n          if (Array.isArray(node.children) && node.children.length > 0) {\n            expanded[node.value] = true;\n            expandFilteredParents(node.children);\n          }\n        }\n      };\n      expandFilteredParents(filteredData);\n      return expanded;\n    }\n    return _expandedState;\n  }, [filteredData, _expandedState, _searchValue, data]);\n\n  const flatNodes = useMemo(\n    () => flattenTreeSelectData(filteredData, expandedForRender),\n    [filteredData, expandedForRender]\n  );\n\n  const flatNodesRef = useRef(flatNodes);\n  flatNodesRef.current = flatNodes;\n\n  const nodeLookup = useMemo(() => {\n    const lookup: Record<string, TreeNodeData> = {};\n    const walk = (nodes: TreeNodeData[]) => {\n      for (const node of nodes) {\n        lookup[node.value] = node;\n        if (Array.isArray(node.children)) {\n          walk(node.children);\n        }\n      }\n    };\n    walk(data);\n    return lookup;\n  }, [data]);\n\n  const getNodeLabel = (nodeValue: string): string => {\n    const node = nodeLookup[nodeValue];\n    if (!node) {\n      return nodeValue;\n    }\n    return typeof node.label === 'string' ? node.label : nodeValue;\n  };\n\n  const getStyles = useStyles<TreeSelectFactory>({\n    name: 'TreeSelect',\n    classes: {} as any,\n    props: props as any,\n    classNames,\n    styles,\n    unstyled,\n    attributes,\n  });\n\n  const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<TreeSelectFactory>({\n    props,\n    styles,\n    classNames,\n  });\n\n  const {\n    styleProps,\n    rest: { type, autoComplete, ...rest },\n  } = extractStyleProps(others);\n\n  const handleOptionSubmit = (val: string) => {\n    if (mode === 'single') {\n      if (expandOnClick) {\n        const node = findTreeNode(val, data);\n        if (node && Array.isArray(node.children) && node.children.length > 0) {\n          toggleExpand(val);\n          return;\n        }\n      }\n      const nextValue = allowDeselect && val === _value ? null : val;\n      setValue(nextValue);\n      combobox.closeDropdown();\n      if (clearSearchOnChange) {\n        handleSearchChange(nextValue ? getNodeLabel(nextValue) : '');\n      }\n    } else if (mode === 'multiple') {\n      if (expandOnClick) {\n        const node = findTreeNode(val, data);\n        if (node && Array.isArray(node.children) && node.children.length > 0) {\n          toggleExpand(val);\n          return;\n        }\n      }\n      const arr = (_value as string[]) || [];\n      if (arr.includes(val)) {\n        setValue(arr.filter((v: string) => v !== val));\n        onRemove?.(val);\n      } else if (arr.length < (maxValues ?? Infinity)) {\n        setValue([...arr, val]);\n      } else {\n        return;\n      }\n      if (clearSearchOnChange) {\n        setSearchValue('');\n      }\n    } else if (mode === 'checkbox') {\n      const nodeChecked = checkStrictly\n        ? internalChecked.includes(val)\n        : isNodeChecked(val, data, internalChecked);\n\n      let newInternalChecked: string[];\n      if (checkStrictly) {\n        newInternalChecked = nodeChecked\n          ? internalChecked.filter((v) => v !== val)\n          : [...internalChecked, val];\n      } else {\n        const childLeaves = getChildrenNodesValues(val, data);\n        if (nodeChecked) {\n          newInternalChecked = internalChecked.filter((v) => !childLeaves.includes(v));\n        } else {\n          newInternalChecked = [...new Set([...internalChecked, ...childLeaves])];\n        }\n      }\n\n      const newValue = checkedToValue(newInternalChecked, data, checkedStrategy!);\n      if (!nodeChecked && newValue.length > (maxValues ?? Infinity)) {\n        return;\n      }\n      setValue(newValue);\n      if (clearSearchOnChange) {\n        setSearchValue('');\n      }\n\n      if (expandOnClick) {\n        const node = findTreeNode(val, data);\n        if (node && Array.isArray(node.children) && node.children.length > 0) {\n          if (!_expandedState[val]) {\n            toggleExpand(val);\n          }\n        }\n      }\n    }\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    onKeyDown?.(event);\n\n    if (event.key === ' ' && !searchable && isMulti) {\n      event.preventDefault();\n      combobox.toggleDropdown();\n    }\n\n    if (event.key === 'Backspace' && _searchValue.length === 0 && isMulti) {\n      const arr = (_value as string[]) || [];\n      if (arr.length > 0) {\n        const removed = arr[arr.length - 1];\n        onRemove?.(removed);\n        setValue(arr.slice(0, -1));\n      }\n    }\n\n    if (!combobox.dropdownOpened) {\n      return;\n    }\n\n    const index = combobox.getSelectedOptionIndex();\n    if (index < 0 || index >= flatNodesRef.current.length) {\n      return;\n    }\n\n    const currentNode = flatNodesRef.current[index];\n\n    if (event.key === 'ArrowRight') {\n      if (currentNode.hasChildren && !currentNode.expanded) {\n        event.preventDefault();\n        toggleExpand(currentNode.node.value);\n      }\n    }\n\n    if (event.key === 'ArrowLeft') {\n      if (currentNode.hasChildren && currentNode.expanded) {\n        event.preventDefault();\n        toggleExpand(currentNode.node.value);\n      } else if (currentNode.parent) {\n        event.preventDefault();\n        const parentIndex = flatNodesRef.current.findIndex(\n          (n) => n.node.value === currentNode.parent\n        );\n        if (parentIndex >= 0) {\n          combobox.selectOption(parentIndex);\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    if (mode !== 'single' || !searchable) {\n      return;\n    }\n    if (value === null) {\n      handleSearchChange('');\n    } else if (typeof value === 'string') {\n      handleSearchChange(getNodeLabel(value));\n    }\n  }, [value]);\n\n  const prevDropdownOpenedRef = useRef(false);\n  useEffect(() => {\n    if (combobox.dropdownOpened && !prevDropdownOpenedRef.current && searchable && _value) {\n      const targets = Array.isArray(_value) ? _value : [_value];\n      const newExpanded = { ..._expandedState };\n      let changed = false;\n      for (const target of targets) {\n        const ancestors = getAncestorsToNode(target as string, data);\n        if (ancestors) {\n          for (const a of ancestors) {\n            if (!newExpanded[a]) {\n              newExpanded[a] = true;\n              changed = true;\n            }\n          }\n        }\n      }\n      if (changed) {\n        setExpandedState(newExpanded);\n        requestAnimationFrame(() => {\n          combobox.updateSelectedOptionIndex('active', { scrollIntoView: true });\n        });\n      }\n    }\n    prevDropdownOpenedRef.current = combobox.dropdownOpened;\n  });\n\n  const clearButton = (\n    <Combobox.ClearButton\n      {...clearButtonProps}\n      onClear={() => {\n        onClear?.();\n        setValue(isMulti ? [] : null);\n        handleSearchChange('');\n        combobox.focusTarget();\n      }}\n    />\n  );\n\n  const hasValue = isMulti\n    ? Array.isArray(_value) && _value.length > 0\n    : _value != null && _value !== '';\n  const _clearable = clearable && hasValue && !disabled && !readOnly;\n\n  const singleDisplayLabel = useMemo(() => {\n    if (mode !== 'single' || !_value) {\n      return '';\n    }\n    return getNodeLabel(_value as string);\n  }, [mode, _value, nodeLookup]);\n\n  const displayValues = useMemo(() => {\n    if (!isMulti || !Array.isArray(_value)) {\n      return [];\n    }\n    return _value as string[];\n  }, [isMulti, _value]);\n\n  const pillsListStyle =\n    _clearable && isMulti\n      ? { paddingInlineEnd: clearSectionOffset[size as string] ?? clearSectionOffset.sm }\n      : undefined;\n\n  const visiblePills =\n    maxDisplayedValues != null ? displayValues.slice(0, maxDisplayedValues) : displayValues;\n\n  const overflowCount =\n    maxDisplayedValues != null ? Math.max(0, displayValues.length - maxDisplayedValues) : 0;\n\n  const pills = visiblePills.map((item, index) => (\n    <Pill\n      key={`${item}-${index}`}\n      withRemoveButton={!readOnly}\n      onRemove={() => {\n        if (isCheckbox) {\n          const childLeaves = checkStrictly ? [item] : getChildrenNodesValues(item, data);\n          const newInternal = internalChecked.filter((v) => !childLeaves.includes(v));\n          setValue(checkedToValue(newInternal, data, checkedStrategy!));\n        } else {\n          setValue((_value as string[]).filter((v: string) => v !== item));\n        }\n        onRemove?.(item);\n      }}\n      unstyled={unstyled}\n      disabled={disabled}\n      {...getStyles('pill')}\n    >\n      {getNodeLabel(item)}\n    </Pill>\n  ));\n\n  if (overflowCount > 0) {\n    const overflowContent =\n      typeof maxDisplayedValuesContent === 'function'\n        ? maxDisplayedValuesContent(overflowCount)\n        : maxDisplayedValuesContent || `+${overflowCount} more`;\n    pills.push(\n      <Pill key=\"__overflow\" unstyled={unstyled} disabled={disabled} {...getStyles('pill')}>\n        {overflowContent}\n      </Pill>\n    );\n  }\n\n  const isEmpty = flatNodes.length === 0;\n\n  const options = flatNodes.map((flatNode) => {\n    const isSelected =\n      mode === 'single'\n        ? _value === flatNode.node.value\n        : mode === 'multiple'\n          ? ((_value as string[]) || []).includes(flatNode.node.value)\n          : false;\n\n    const nodeChecked = isCheckbox\n      ? checkStrictly\n        ? internalChecked.includes(flatNode.node.value)\n        : isNodeChecked(flatNode.node.value, data, internalChecked)\n      : false;\n\n    const nodeIndeterminate =\n      isCheckbox && !checkStrictly\n        ? isNodeIndeterminate(flatNode.node.value, data, internalChecked)\n        : false;\n\n    return (\n      <TreeSelectOption\n        key={flatNode.node.value}\n        node={flatNode.node}\n        level={flatNode.level}\n        expanded={flatNode.expanded}\n        hasChildren={flatNode.hasChildren}\n        selected={isSelected}\n        checked={nodeChecked}\n        indeterminate={nodeIndeterminate}\n        showCheckbox={isCheckbox}\n        isLastChild={flatNode.isLastChild}\n        lineGuides={flatNode.lineGuides}\n        withLines={!!withLines}\n        onToggleExpand={toggleExpand}\n        renderNode={renderNode}\n        chevronAriaLabels={chevronAriaLabels}\n      />\n    );\n  });\n\n  const dropdown = (\n    <Combobox.Dropdown hidden={readOnly || disabled}>\n      <Combobox.Options\n        className={classes.optionsWrapper}\n        aria-multiselectable={isMulti || undefined}\n      >\n        <ScrollArea.Autosize\n          mah={maxDropdownHeight ?? 220}\n          type=\"scroll\"\n          scrollbarSize=\"var(--combobox-padding)\"\n          offsetScrollbars=\"y\"\n          {...scrollAreaProps}\n        >\n          {options}\n        </ScrollArea.Autosize>\n        {isEmpty && nothingFoundMessage && <Combobox.Empty>{nothingFoundMessage}</Combobox.Empty>}\n      </Combobox.Options>\n    </Combobox.Dropdown>\n  );\n\n  if (isMulti) {\n    return (\n      <>\n        <Combobox\n          store={combobox}\n          classNames={resolvedClassNames}\n          styles={resolvedStyles}\n          unstyled={unstyled}\n          size={size}\n          readOnly={readOnly}\n          __staticSelector=\"TreeSelect\"\n          attributes={attributes}\n          onOptionSubmit={handleOptionSubmit}\n          {...comboboxProps}\n        >\n          <Combobox.DropdownTarget>\n            <PillsInput\n              {...styleProps}\n              __staticSelector=\"TreeSelect\"\n              classNames={resolvedClassNames}\n              styles={resolvedStyles}\n              unstyled={unstyled}\n              size={size}\n              className={className}\n              style={style}\n              variant={variant}\n              disabled={disabled}\n              radius={radius}\n              __defaultRightSection={\n                <Combobox.Chevron\n                  size={size}\n                  error={error}\n                  unstyled={unstyled}\n                  color={chevronColor}\n                />\n              }\n              __clearSection={clearButton}\n              __clearable={_clearable}\n              __clearSectionMode={clearSectionMode}\n              rightSection={rightSection}\n              rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n              rightSectionWidth={rightSectionWidth}\n              rightSectionProps={rightSectionProps}\n              leftSection={leftSection}\n              leftSectionWidth={leftSectionWidth}\n              leftSectionPointerEvents={leftSectionPointerEvents}\n              leftSectionProps={leftSectionProps}\n              inputContainer={inputContainer}\n              inputWrapperOrder={inputWrapperOrder}\n              withAsterisk={withAsterisk}\n              labelProps={labelProps}\n              descriptionProps={descriptionProps}\n              errorProps={errorProps}\n              wrapperProps={wrapperProps}\n              description={description}\n              label={label}\n              error={error}\n              withErrorStyles={withErrorStyles}\n              __stylesApiProps={{\n                ...props,\n                rightSectionPointerEvents: rightSectionPointerEvents || 'none',\n                multiline: true,\n              }}\n              pointer={!searchable}\n              onClick={() => (searchable ? combobox.openDropdown() : combobox.toggleDropdown())}\n              data-expanded={combobox.dropdownOpened || undefined}\n              id={_id}\n              required={required}\n              mod={mod}\n              attributes={attributes}\n            >\n              <Pill.Group\n                attributes={attributes}\n                disabled={disabled}\n                unstyled={unstyled}\n                {...getStyles('pillsList', { style: pillsListStyle })}\n              >\n                {pills}\n                <Combobox.EventsTarget autoComplete={autoComplete}>\n                  <PillsInput.Field\n                    {...rest}\n                    id={_id}\n                    placeholder={placeholder}\n                    type={!searchable && !placeholder ? 'hidden' : 'visible'}\n                    {...getStyles('inputField')}\n                    unstyled={unstyled}\n                    onFocus={(event) => {\n                      onFocus?.(event);\n                      if (openOnFocus && searchable) {\n                        combobox.openDropdown();\n                      }\n                    }}\n                    onBlur={(event) => {\n                      onBlur?.(event);\n                      combobox.closeDropdown();\n                      handleSearchChange('');\n                    }}\n                    onKeyDown={handleKeyDown}\n                    value={_searchValue}\n                    onChange={(event) => {\n                      handleSearchChange(event.currentTarget.value);\n                      if (searchable) {\n                        combobox.openDropdown();\n                      }\n                    }}\n                    disabled={disabled}\n                    readOnly={readOnly || !searchable}\n                    pointer={!searchable}\n                  />\n                </Combobox.EventsTarget>\n              </Pill.Group>\n            </PillsInput>\n          </Combobox.DropdownTarget>\n          {dropdown}\n        </Combobox>\n        <Combobox.HiddenInput\n          name={name}\n          valuesDivider={hiddenInputValuesDivider}\n          value={_value}\n          form={form}\n          disabled={disabled}\n          {...hiddenInputProps}\n        />\n      </>\n    );\n  }\n\n  return (\n    <>\n      <Combobox\n        store={combobox}\n        __staticSelector=\"TreeSelect\"\n        classNames={resolvedClassNames}\n        styles={resolvedStyles}\n        unstyled={unstyled}\n        readOnly={readOnly}\n        size={size}\n        attributes={attributes}\n        onOptionSubmit={handleOptionSubmit}\n        {...comboboxProps}\n      >\n        <Combobox.Target targetType={searchable ? 'input' : 'button'} autoComplete={autoComplete}>\n          <InputBase\n            id={_id}\n            __defaultRightSection={\n              <Combobox.Chevron\n                size={size}\n                error={error}\n                unstyled={unstyled}\n                color={chevronColor}\n              />\n            }\n            __clearSection={clearButton}\n            __clearable={_clearable}\n            __clearSectionMode={clearSectionMode}\n            rightSection={rightSection}\n            rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n            {...rest}\n            {...styleProps}\n            size={size}\n            __staticSelector=\"TreeSelect\"\n            disabled={disabled}\n            readOnly={readOnly || !searchable}\n            value={searchable ? _searchValue : singleDisplayLabel}\n            onChange={(event) => {\n              handleSearchChange(event.currentTarget.value);\n              combobox.openDropdown();\n            }}\n            onFocus={(event) => {\n              if (openOnFocus && searchable) {\n                combobox.openDropdown();\n              }\n              onFocus?.(event);\n            }}\n            onBlur={(event) => {\n              if (searchable) {\n                combobox.closeDropdown();\n              }\n              handleSearchChange(_value ? getNodeLabel(_value as string) : '');\n              onBlur?.(event);\n            }}\n            onClick={(event) => {\n              searchable ? combobox.openDropdown() : combobox.toggleDropdown();\n              onClick?.(event);\n            }}\n            onKeyDown={handleKeyDown}\n            classNames={resolvedClassNames}\n            styles={resolvedStyles}\n            unstyled={unstyled}\n            pointer={!searchable}\n            error={error}\n            attributes={attributes}\n            className={className}\n            style={style}\n            variant={variant}\n            radius={radius}\n            leftSection={leftSection}\n            leftSectionWidth={leftSectionWidth}\n            leftSectionPointerEvents={leftSectionPointerEvents}\n            leftSectionProps={leftSectionProps}\n            rightSectionWidth={rightSectionWidth}\n            rightSectionProps={rightSectionProps}\n            inputContainer={inputContainer}\n            inputWrapperOrder={inputWrapperOrder}\n            withAsterisk={withAsterisk}\n            labelProps={labelProps}\n            descriptionProps={descriptionProps}\n            errorProps={errorProps}\n            wrapperProps={wrapperProps}\n            description={description}\n            label={label}\n            withErrorStyles={withErrorStyles}\n            placeholder={placeholder}\n            required={required}\n            mod={mod}\n          />\n        </Combobox.Target>\n        {dropdown}\n      </Combobox>\n      <Combobox.HiddenInput\n        value={_value}\n        name={name}\n        form={form}\n        disabled={disabled}\n        {...hiddenInputProps}\n      />\n    </>\n  );\n});\n\nTreeSelect.classes = { ...InputBase.classes, ...Combobox.classes };\nTreeSelect.displayName = '@mantine/core/TreeSelect';\n"],"mappings":"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"}