{"version":3,"file":"select-DJcPlxTU.mjs","names":[],"sources":["../src/select/context.ts","../src/select/utils.ts","../src/select/SelectMultipleValue.tsx","../src/select/index.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport type { SelectContextValue } from \"./type\";\n\nconst SelectContext = React.createContext<SelectContextValue | null>(null);\n\nexport { SelectContext };\n","import { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport * as React from \"react\";\n\nimport type {\n  SelectContextValue,\n  SelectGroupItem,\n  SelectLabeledItem,\n} from \"./type\";\n\nfunction isGroupedItems(\n  items: ReadonlyArray<SelectLabeledItem | SelectGroupItem> | undefined,\n): items is ReadonlyArray<SelectGroupItem> {\n  return (\n    items != null &&\n    items.length > 0 &&\n    typeof items[0] === \"object\" &&\n    items[0] != null &&\n    \"items\" in items[0]\n  );\n}\n\nfunction stringifyAsLabel(\n  value: unknown,\n  itemToStringLabel?: (itemValue: unknown) => string,\n) {\n  if (itemToStringLabel && value != null) {\n    return itemToStringLabel(value) ?? \"\";\n  }\n\n  if (value && typeof value === \"object\") {\n    if (\"label\" in value && value.label != null) {\n      return String(value.label);\n    }\n\n    if (\"value\" in value) {\n      return String(value.value);\n    }\n  }\n\n  return String(value ?? \"\");\n}\n\nfunction resolveSelectedLabel(\n  value: unknown,\n  { items, itemToStringLabel, isItemEqualToValue }: SelectContextValue,\n) {\n  const fallback = () => stringifyAsLabel(value, itemToStringLabel);\n\n  if (itemToStringLabel && value != null) {\n    return itemToStringLabel(value);\n  }\n\n  if (value && typeof value === \"object\" && \"label\" in value) {\n    return value.label as React.ReactNode;\n  }\n\n  if (items && !Array.isArray(items)) {\n    return (\n      (items as Record<string, React.ReactNode>)[String(value)] ?? fallback()\n    );\n  }\n\n  if (Array.isArray(items)) {\n    const flatItems = isGroupedItems(items)\n      ? items.flatMap((group) => group.items)\n      : items;\n\n    const match = flatItems.find((item) => {\n      if (isItemEqualToValue?.(item.value, value)) {\n        return true;\n      }\n\n      if (Object.is(item.value, value)) {\n        return true;\n      }\n\n      return (\n        value != null &&\n        typeof value === \"object\" &&\n        \"value\" in value &&\n        Object.is(item.value, value.value)\n      );\n    });\n\n    return match?.label ?? fallback();\n  }\n\n  return fallback();\n}\n\nfunction resolveSelectedItem(\n  value: unknown,\n  selectContext: SelectContextValue,\n): SelectLabeledItem {\n  const { items, isItemEqualToValue } = selectContext;\n  const fallback = (): SelectLabeledItem => ({\n    label: resolveSelectedLabel(value, selectContext),\n    value,\n  });\n\n  if (items && !Array.isArray(items)) {\n    return {\n      label:\n        (items as Record<string, React.ReactNode>)[String(value)] ??\n        fallback().label,\n      value,\n    };\n  }\n\n  if (Array.isArray(items)) {\n    const flatItems = isGroupedItems(items)\n      ? items.flatMap((group) => group.items)\n      : items;\n\n    const match = flatItems.find((item) => {\n      if (isItemEqualToValue?.(item.value, value)) {\n        return true;\n      }\n\n      if (Object.is(item.value, value)) {\n        return true;\n      }\n\n      return (\n        value != null &&\n        typeof value === \"object\" &&\n        \"value\" in value &&\n        Object.is(item.value, value.value)\n      );\n    });\n\n    if (match) {\n      return match;\n    }\n  }\n\n  return fallback();\n}\n\nfunction reactNodeToString(node: React.ReactNode) {\n  if (typeof node === \"string\" || typeof node === \"number\") {\n    return String(node);\n  }\n\n  return \"选项\";\n}\n\nfunction createRemoveEventDetails(\n  event: React.MouseEvent,\n): SelectPrimitive.Root.ChangeEventDetails {\n  let isCanceled = false;\n  let isPropagationAllowed = false;\n\n  return {\n    reason: \"item-press\",\n    event: event.nativeEvent,\n    trigger: event.currentTarget,\n    cancel: () => {\n      isCanceled = true;\n    },\n    allowPropagation: () => {\n      isPropagationAllowed = true;\n    },\n    get isCanceled() {\n      return isCanceled;\n    },\n    get isPropagationAllowed() {\n      return isPropagationAllowed;\n    },\n  };\n}\n\nexport {\n  createRemoveEventDetails,\n  reactNodeToString,\n  resolveSelectedItem,\n  resolveSelectedLabel,\n};\n","import { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Badge } from \"../badge\";\nimport { SelectContext } from \"./context\";\nimport type { SelectValueProps } from \"./type\";\nimport {\n  createRemoveEventDetails,\n  reactNodeToString,\n  resolveSelectedItem,\n  resolveSelectedLabel,\n} from \"./utils\";\n\nfunction SelectMultipleValue({\n  placeholder,\n  renderOverflow,\n  value,\n}: {\n  placeholder?: React.ReactNode;\n  renderOverflow?: SelectValueProps[\"renderOverflow\"];\n  value: unknown;\n}) {\n  const selectContext = React.useContext(SelectContext);\n  const containerRef = React.useRef<HTMLSpanElement>(null);\n  const measureRef = React.useRef<HTMLSpanElement>(null);\n  const values = React.useMemo(\n    () => (Array.isArray(value) ? value : []),\n    [value],\n  );\n  const [visibleCount, setVisibleCount] = React.useState(values.length);\n\n  const updateVisibleCount = React.useCallback(() => {\n    const container = containerRef.current;\n\n    if (!container || values.length === 0) {\n      setVisibleCount(values.length);\n      return;\n    }\n\n    const containerWidth = container.clientWidth;\n    const gap = Number.parseFloat(getComputedStyle(container).columnGap) || 0;\n    const itemWidths = Array.from(\n      measureRef.current?.querySelectorAll<HTMLElement>(\n        \"[data-select-value-measure]\",\n      ) ?? [],\n      (element) => element.offsetWidth,\n    );\n    const summaryWidths = Array.from(\n      measureRef.current?.querySelectorAll<HTMLElement>(\n        \"[data-select-summary-measure]\",\n      ) ?? [],\n      (element) => element.offsetWidth,\n    );\n\n    let nextVisibleCount = 0;\n\n    for (let count = values.length; count >= 0; count -= 1) {\n      const hiddenCount = values.length - count;\n      const selectedWidth = itemWidths\n        .slice(0, count)\n        .reduce((total, width) => total + width, 0);\n      const summaryWidth =\n        hiddenCount > 0 ? (summaryWidths[hiddenCount - 1] ?? 0) : 0;\n      const itemsCount = count + (hiddenCount > 0 ? 1 : 0);\n      const totalGap = Math.max(itemsCount - 1, 0) * gap;\n\n      if (selectedWidth + summaryWidth + totalGap <= containerWidth) {\n        nextVisibleCount = count;\n        break;\n      }\n    }\n\n    setVisibleCount(nextVisibleCount);\n  }, [values]);\n\n  React.useLayoutEffect(() => {\n    updateVisibleCount();\n\n    const container = containerRef.current;\n\n    if (!container) {\n      return;\n    }\n\n    const resizeObserver = new ResizeObserver(updateVisibleCount);\n    resizeObserver.observe(container);\n\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [updateVisibleCount]);\n\n  if (!selectContext || values.length === 0) {\n    return placeholder ? (\n      <span className=\"text-muted-foreground\">{placeholder}</span>\n    ) : null;\n  }\n\n  const labels = values.map((itemValue) =>\n    resolveSelectedLabel(itemValue, selectContext),\n  );\n  const selectedItems = values.map((itemValue) =>\n    resolveSelectedItem(itemValue, selectContext),\n  );\n  const visibleItemValues = values.slice(0, visibleCount);\n  const hiddenCount = values.length - visibleCount;\n  const renderOverflowContent = (count: number) => {\n    const hiddenItems = selectedItems.slice(values.length - count);\n    const visibleItems = selectedItems.slice(0, values.length - count);\n\n    if (renderOverflow) {\n      return renderOverflow({\n        hiddenCount: count,\n        hiddenValues: hiddenItems,\n        visibleValues: visibleItems,\n      });\n    }\n\n    return (\n      <Badge variant=\"secondary\" className=\"shrink-0\">\n        +{count}...\n      </Badge>\n    );\n  };\n\n  const renderValueBadge = (\n    itemValue: unknown,\n    label: React.ReactNode,\n    index: number,\n    measure?: boolean,\n  ) => {\n    const labelText = reactNodeToString(label);\n\n    return (\n      <Badge\n        key={index}\n        data-select-value-measure={measure ? \"\" : undefined}\n        variant=\"secondary\"\n        className=\"max-w-full shrink-0\"\n      >\n        <span className=\"truncate\">{label}</span>\n        <span\n          aria-label={`移除${labelText}`}\n          data-icon=\"inline-end\"\n          role=\"button\"\n          className=\"hover:bg-muted-foreground/20 inline-flex size-3.5 cursor-pointer items-center justify-center rounded-full transition\"\n          onPointerDown={(event) => {\n            event.preventDefault();\n            event.stopPropagation();\n          }}\n          onClick={(event) => {\n            event.preventDefault();\n            event.stopPropagation();\n\n            if (selectContext.disabled || selectContext.readOnly) {\n              return;\n            }\n\n            const nextValue = values.filter((selectedValue) => {\n              if (\n                selectContext.isItemEqualToValue?.(itemValue, selectedValue)\n              ) {\n                return false;\n              }\n\n              return !Object.is(selectedValue, itemValue);\n            });\n\n            selectContext.setValue(nextValue, createRemoveEventDetails(event));\n          }}\n        >\n          <XIcon className=\"size-3\" />\n        </span>\n      </Badge>\n    );\n  };\n\n  return (\n    <span\n      ref={containerRef}\n      className=\"relative flex min-w-0 flex-1 items-center gap-1 overflow-hidden\"\n    >\n      {visibleItemValues.map((itemValue, index) =>\n        renderValueBadge(itemValue, labels[index], index),\n      )}\n      {hiddenCount > 0 ? renderOverflowContent(hiddenCount) : null}\n      <span\n        ref={measureRef}\n        aria-hidden=\"true\"\n        className=\"pointer-events-none invisible absolute flex items-center gap-1 whitespace-nowrap\"\n      >\n        {values.map((itemValue, index) =>\n          renderValueBadge(itemValue, labels[index], index, true),\n        )}\n        {values.map((_, index) => (\n          <span\n            key={index}\n            data-select-summary-measure=\"\"\n            className=\"inline-flex shrink-0\"\n          >\n            {renderOverflowContent(index + 1)}\n          </span>\n        ))}\n      </span>\n    </span>\n  );\n}\n\nexport { SelectMultipleValue };\n","\"use client\";\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib\";\nimport { SelectContext } from \"./context\";\nimport { SelectMultipleValue } from \"./SelectMultipleValue\";\nimport type {\n  SelectContextValue,\n  SelectValueOverflowRenderInfo,\n  SelectValueProps,\n} from \"./type\";\n\nfunction Select<Value, Multiple extends boolean | undefined = false>({\n  value,\n  defaultValue,\n  onValueChange,\n  items,\n  multiple,\n  disabled,\n  readOnly,\n  itemToStringLabel,\n  isItemEqualToValue,\n  ...props\n}: SelectPrimitive.Root.Props<Value, Multiple>) {\n  const isControlled = value !== undefined;\n  const [uncontrolledValue, setUncontrolledValue] = React.useState<unknown>(\n    () => defaultValue ?? (multiple ? [] : null),\n  );\n  const currentValue = isControlled ? value : uncontrolledValue;\n\n  const handleValueChange = React.useCallback(\n    (\n      nextValue: SelectPrimitive.Root.Props<Value, Multiple>[\"value\"],\n      eventDetails: SelectPrimitive.Root.ChangeEventDetails,\n    ) => {\n      onValueChange?.(\n        nextValue as Parameters<NonNullable<typeof onValueChange>>[0],\n        eventDetails,\n      );\n\n      if (!isControlled && !eventDetails.isCanceled) {\n        setUncontrolledValue(nextValue);\n      }\n    },\n    [isControlled, onValueChange],\n  );\n\n  const contextValue = React.useMemo<SelectContextValue>(\n    () => ({\n      disabled,\n      isItemEqualToValue:\n        isItemEqualToValue as SelectContextValue[\"isItemEqualToValue\"],\n      itemToStringLabel:\n        itemToStringLabel as SelectContextValue[\"itemToStringLabel\"],\n      items,\n      multiple,\n      readOnly,\n      setValue: handleValueChange as SelectContextValue[\"setValue\"],\n    }),\n    [\n      disabled,\n      handleValueChange,\n      isItemEqualToValue,\n      itemToStringLabel,\n      items,\n      multiple,\n      readOnly,\n    ],\n  );\n\n  return (\n    <SelectContext.Provider value={contextValue}>\n      <SelectPrimitive.Root\n        value={\n          currentValue as SelectPrimitive.Root.Props<Value, Multiple>[\"value\"]\n        }\n        onValueChange={handleValueChange}\n        items={items}\n        multiple={multiple}\n        disabled={disabled}\n        readOnly={readOnly}\n        itemToStringLabel={itemToStringLabel}\n        isItemEqualToValue={isItemEqualToValue}\n        {...props}\n      />\n    </SelectContext.Provider>\n  );\n}\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn(\"scroll-my-1 p-1\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectValue({\n  className,\n  children,\n  placeholder,\n  renderOverflow,\n  ...props\n}: SelectValueProps) {\n  const selectContext = React.useContext(SelectContext);\n  const shouldRenderMultipleBadges =\n    selectContext?.multiple && children == null;\n\n  return (\n    <SelectPrimitive.Value\n      data-slot=\"select-value\"\n      className={cn(\n        \"flex min-w-0 flex-1 flex-wrap text-start\",\n        shouldRenderMultipleBadges && \"items-center overflow-hidden\",\n        className,\n      )}\n      placeholder={placeholder}\n      {...props}\n    >\n      {shouldRenderMultipleBadges\n        ? (value) => (\n            <SelectMultipleValue\n              placeholder={placeholder}\n              renderOverflow={renderOverflow}\n              value={value}\n            />\n          )\n        : children}\n    </SelectPrimitive.Value>\n  );\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: SelectPrimitive.Trigger.Props & {\n  size?: \"sm\" | \"default\";\n}) {\n  const selectContext = React.useContext(SelectContext);\n  const isMultiple = Boolean(selectContext?.multiple);\n\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      data-multiple={isMultiple ? true : undefined}\n      className={cn(\n        \"border-input focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex w-fit select-none items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pl-2.5 pr-2 text-sm outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        isMultiple\n          ? \"h-auto min-h-8 whitespace-normal py-1.5 *:data-[slot=select-value]:line-clamp-none\"\n          : \"whitespace-nowrap data-[size=default]:h-8 data-[size=sm]:h-7 *:data-[slot=select-value]:line-clamp-1\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon\n        render={\n          <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4\" />\n        }\n      />\n    </SelectPrimitive.Trigger>\n  );\n}\n\nfunction SelectContent({\n  className,\n  children,\n  side = \"bottom\",\n  sideOffset = 4,\n  align = \"center\",\n  alignOffset = 0,\n  alignItemWithTrigger = false,\n  ...props\n}: SelectPrimitive.Popup.Props &\n  Pick<\n    SelectPrimitive.Positioner.Props,\n    \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n  >) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Positioner\n        side={side}\n        sideOffset={sideOffset}\n        align={align}\n        alignOffset={alignOffset}\n        alignItemWithTrigger={alignItemWithTrigger}\n        className=\"isolate z-50\"\n      >\n        <SelectPrimitive.Popup\n          data-slot=\"select-content\"\n          data-align-trigger={alignItemWithTrigger}\n          className={cn(\n            \"max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 relative isolate z-50 min-w-36 overflow-y-auto overflow-x-hidden rounded-lg shadow-md ring-1 duration-100 data-[align-trigger=true]:animate-none\",\n            className,\n          )}\n          {...props}\n        >\n          <SelectScrollUpButton />\n          <SelectPrimitive.List>{children}</SelectPrimitive.List>\n          <SelectScrollDownButton />\n        </SelectPrimitive.Popup>\n      </SelectPrimitive.Positioner>\n    </SelectPrimitive.Portal>\n  );\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: SelectPrimitive.GroupLabel.Props) {\n  return (\n    <SelectPrimitive.GroupLabel\n      data-slot=\"select-label\"\n      className={cn(\"text-muted-foreground px-1.5 py-1 text-xs\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: SelectPrimitive.Item.Props) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"outline-hidden focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n        className,\n      )}\n      {...props}\n    >\n      <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n        {children}\n      </SelectPrimitive.ItemText>\n      <SelectPrimitive.ItemIndicator\n        render={\n          <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\">\n            <CheckIcon className=\"pointer-events-none\" />\n          </span>\n        }\n      />\n    </SelectPrimitive.Item>\n  );\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: SelectPrimitive.Separator.Props) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n  return (\n    <SelectPrimitive.ScrollUpArrow\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"bg-popover top-0 z-10 flex w-full cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      <ChevronUpIcon />\n    </SelectPrimitive.ScrollUpArrow>\n  );\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n  return (\n    <SelectPrimitive.ScrollDownArrow\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"bg-popover bottom-0 z-10 flex w-full cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      <ChevronDownIcon />\n    </SelectPrimitive.ScrollDownArrow>\n  );\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n};\n\nexport type { SelectValueOverflowRenderInfo, SelectValueProps };\n"],"mappings":"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"}