ivt
Version:
Ivt Components Library
1 lines • 29.1 kB
Source Map (JSON)
{"version":3,"file":"multi-select-dor8SMeS.mjs","sources":["../../src/components/ui/multi-select/multi-select.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { CheckIcon, ChevronsUpDownIcon, WandSparkles, XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Badge, type BadgeVariants } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tCommand,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n\tCommandSeparator,\n} from \"@/components/ui/command\";\nimport { Label } from \"@/components/ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Variants for the multi-select component to handle different styles.\n * Uses class-variance-authority (cva) to define different styles based on \"variant\" prop.\n */\nconst multiSelectVariants = cva(\"m-1 transition ease-in-out delay-150 duration-300\", {\n\tvariants: {\n\t\tvariant: {\n\t\t\tdefault: \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n\t\t\tsecondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n\t\t\tdestructive:\n\t\t\t\t\"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n\t\t\tpositive:\n\t\t\t\t\"border-transparent bg-positive text-positive-foreground shadow hover:bg-positive/80\",\n\t\t\twarning: \"border-transparent bg-warning text-warning-foreground shadow hover:bg-warning/80\",\n\t\t\tinfo: \"border-transparent bg-info text-info-foreground shadow hover:bg-info/80\",\n\t\t\toutline: \"text-foreground bg-transparent hover:bg-transparent border\",\n\t\t},\n\t\tsubtle: {\n\t\t\ttrue: \"\",\n\t\t\tfalse: \"\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tvariant: \"default\",\n\t},\n});\n\n/**\n * Props for MultiSelect component\n */\ninterface MultiSelectProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tVariantProps<typeof multiSelectVariants> {\n\t/**\n\t * An array of option objects to be displayed in the multi-select component.\n\t * Each option object has a label, value, and an optional icon.\n\t */\n\toptions: {\n\t\t/** The text to display for the option. */\n\t\tlabel: string;\n\t\t/** The unique value associated with the option. */\n\t\tvalue: string;\n\t\t/** Optional icon component to display alongside the option. */\n\t\ticon?: React.ComponentType<{ className?: string }>;\n\t}[];\n\n\t/**\n\t * Callback function triggered when the selected values change.\n\t * Receives an array of the new selected values.\n\t */\n\tonValueChange: (value: string[]) => void;\n\n\t/** The value of the input when controlled. */\n\tvalue?: string[];\n\n\t/** The default selected values when the component mounts. */\n\tdefaultValue?: string[];\n\n\t/**\n\t * Placeholder text to be displayed when no values are selected.\n\t * Optional, defaults to \"Select options\".\n\t */\n\tplaceholder?: string;\n\n\t/**\n\t * Animation duration in seconds for the visual effects (e.g., bouncing badges).\n\t * Optional, defaults to 0 (no animation).\n\t */\n\tanimation?: number;\n\n\t/**\n\t * Maximum number of items to display. Extra selected items will be summarized.\n\t * Optional, defaults to 3.\n\t */\n\tmaxCount?: number;\n\n\t/**\n\t * The modality of the popover. When set to true, interaction with outside elements\n\t * will be disabled and only popover content will be visible to screen readers.\n\t * Optional, defaults to false.\n\t */\n\tmodalPopover?: boolean;\n\n\t/**\n\t * If true, renders the multi-select component as a child of another component.\n\t * Optional, defaults to false.\n\t */\n\tasChild?: boolean;\n\n\t/**\n\t * Additional class names to apply custom styles to the multi-select component.\n\t * Optional, can be used to add custom styles.\n\t */\n\tclassName?: string;\n\tlabel?: string | React.ReactNode;\n\tdescription?: string;\n\tsubtle?: boolean;\n\tfocusOnSelect?: boolean;\n\tid?: string;\n}\n\nexport const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(\n\t(\n\t\t{\n\t\t\toptions,\n\t\t\tonValueChange,\n\t\t\tvariant,\n\t\t\tdefaultValue = [],\n\t\t\tplaceholder = \"Select options\",\n\t\t\tanimation = 0,\n\t\t\tmaxCount = 3,\n\t\t\tmodalPopover = false,\n\t\t\tasChild = false,\n\t\t\tclassName,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tsubtle = false,\n\t\t\tvalue: controlledValue,\n\n\t\t\tfocusOnSelect = true,\n\t\t\tid,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\t\tconst generatedId = React.useId();\n\t\tconst inputId = id || generatedId;\n\n\t\tconst [selectedValues, setSelectedValues] = React.useState<string[]>(\n\t\t\tcontrolledValue || defaultValue,\n\t\t);\n\n\t\tReact.useEffect(() => {\n\t\t\tif (controlledValue) {\n\t\t\t\tsetSelectedValues(controlledValue);\n\t\t\t}\n\t\t}, [controlledValue]);\n\n\t\tconst [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n\t\tconst [isAnimating, setIsAnimating] = React.useState(false);\n\t\tconst [isShiftOn, setIsShiftOn] = React.useState(false);\n\t\tconst [inputValue, setInputValue] = React.useState(\"\");\n\n\t\tconst filteredOptions = React.useMemo(() => {\n\t\t\treturn options.filter((option) =>\n\t\t\t\toption.label.toLowerCase().includes(inputValue.toLowerCase()),\n\t\t\t);\n\t\t}, [options, inputValue]);\n\n\t\tconst handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tsetIsPopoverOpen(true);\n\t\t\t}\n\t\t};\n\n\t\tconst toggleOption = (option: string) => {\n\t\t\tconst newSelectedValues = selectedValues.includes(option)\n\t\t\t\t? selectedValues.filter((value) => value !== option)\n\t\t\t\t: [...selectedValues, option];\n\t\t\tsetSelectedValues(newSelectedValues);\n\t\t\tonValueChange(newSelectedValues);\n\t\t};\n\n\t\tconst toggleInterval = (index: number) => {\n\t\t\tif (selectedValues.length < 1) return;\n\n\t\t\tconst lastIndex = options.findIndex((o) => o.value === selectedValues.at(-1));\n\t\t\tconst start = Math.min(lastIndex, index);\n\t\t\tconst end = Math.max(lastIndex, index) + 1;\n\t\t\tconst rangeValues = options.slice(start, end).map((o) => o.value);\n\t\t\tconst areAllSelected = rangeValues.every((v) => selectedValues.includes(v));\n\t\t\tconst newSelectedValues = areAllSelected\n\t\t\t\t? selectedValues.filter((v) => !rangeValues.includes(v))\n\t\t\t\t: [...new Set([...selectedValues, ...rangeValues])];\n\t\t\tsetSelectedValues(newSelectedValues);\n\t\t\tonValueChange(newSelectedValues);\n\t\t};\n\n\t\tconst handleClear = () => {\n\t\t\tsetSelectedValues([]);\n\t\t\tonValueChange([]);\n\t\t};\n\n\t\tconst handleTogglePopover = () => {\n\t\t\tsetIsPopoverOpen((prev) => !prev);\n\t\t};\n\n\t\tconst clearExtraOptions = () => {\n\t\t\tconst newSelectedValues = selectedValues.slice(0, maxCount);\n\t\t\tsetSelectedValues(newSelectedValues);\n\t\t\tonValueChange(newSelectedValues);\n\t\t};\n\n\t\tconst toggleAll = () => {\n\t\t\tif (selectedValues.length === options.length) {\n\t\t\t\thandleClear();\n\t\t\t} else {\n\t\t\t\tconst allValues = options.map((option) => option.value);\n\t\t\t\tsetSelectedValues(allValues);\n\t\t\t\tonValueChange(allValues);\n\t\t\t}\n\t\t};\n\n\t\tconst subtleStyles = (variant: BadgeVariants) => {\n\t\t\tif (variant === \"default\") {\n\t\t\t\treturn \"border-transparent bg-accent text-primary hover:bg-accent/80\";\n\t\t\t}\n\t\t\tif (variant === \"destructive\") {\n\t\t\t\treturn \"border-transparent bg-destructive-foreground text-destructive hover:bg-destructive-foreground/80\";\n\t\t\t}\n\t\t\tif (variant === \"positive\") {\n\t\t\t\treturn \"border-transparent bg-positive-foreground text-positive hover:bg-positive-foreground/80\";\n\t\t\t}\n\t\t\tif (variant === \"warning\") {\n\t\t\t\treturn \"border-transparent bg-warning-foreground text-warning hover:bg-warning-foreground/80\";\n\t\t\t}\n\t\t\tif (variant === \"info\") {\n\t\t\t\treturn \"border-transparent bg-info-foreground text-info hover:bg-info-foreground/80\";\n\t\t\t}\n\n\t\t\treturn \"\";\n\t\t};\n\n\t\tconst finalSubtleStyles = subtleStyles(variant);\n\n\t\treturn (\n\t\t\t<div className=\"font-lato space-y-2\">\n\t\t\t\t{label && (\n\t\t\t\t\t<Label htmlFor={inputId} className=\"text-foreground text-sm font-medium gap-0\">\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Label>\n\t\t\t\t)}\n\n\t\t\t\t<Popover open={isPopoverOpen} onOpenChange={setIsPopoverOpen} modal={modalPopover}>\n\t\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\tonClick={handleTogglePopover}\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\taria-expanded={isPopoverOpen}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"flex h-auto min-h-9 w-full items-center justify-between rounded-md border bg-inherit px-4 py-2 hover:bg-inherit [&_svg]:pointer-events-auto\",\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{selectedValues.length > 0 ? (\n\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex flex-wrap items-center\">\n\t\t\t\t\t\t\t\t\t\t{selectedValues.slice(0, maxCount).map((value) => {\n\t\t\t\t\t\t\t\t\t\t\tconst option = options.find((o) => o.value === value);\n\t\t\t\t\t\t\t\t\t\t\tconst IconComponent = option?.icon;\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={value}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"px-1\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisAnimating ? \"animate-bounce\" : \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmultiSelectVariants({ variant }),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubtle && finalSubtleStyles,\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ animationDuration: `${animation}s` }}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{IconComponent && <IconComponent className=\"mr-2 h-4 w-4\" />}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{option?.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<XIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-2 size-3 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleOption(value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t{selectedValues.length > maxCount && (\n\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text-foreground border-foreground/1 bg-transparent px-1 hover:bg-transparent\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisAnimating ? \"animate-bounce\" : \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiSelectVariants({ variant }),\n\t\t\t\t\t\t\t\t\t\t\t\t\tsubtle && finalSubtleStyles,\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ animationDuration: `${animation}s` }}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{`+ ${selectedValues.length - maxCount} itens`}\n\t\t\t\t\t\t\t\t\t\t\t\t<XIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-2 size-3 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclearExtraOptions();\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between gap-1\">\n\t\t\t\t\t\t\t\t\t\t<TooltipProvider>\n\t\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<XIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground h-4 cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleClear();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs\">Limpar tudo</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t</TooltipProvider>\n\n\t\t\t\t\t\t\t\t\t\t<Separator orientation=\"vertical\" className=\"flex h-full min-h-6\" />\n\t\t\t\t\t\t\t\t\t\t<ChevronsUpDownIcon className=\"text-muted-foreground h-4 cursor-pointer\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{placeholder}</span>\n\t\t\t\t\t\t\t\t\t<ChevronsUpDownIcon className=\"text-muted-foreground h-4 cursor-pointer\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PopoverTrigger>\n\t\t\t\t\t<PopoverContent\n\t\t\t\t\t\tclassName=\"w-auto p-0\"\n\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\tonEscapeKeyDown={() => setIsPopoverOpen(false)}\n\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\tevent.key === \"Shift\" ? setIsShiftOn(true) : null;\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonKeyUp={(event) => {\n\t\t\t\t\t\t\tevent.key === \"Shift\" ? setIsShiftOn(false) : null;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Command shouldFilter={false}>\n\t\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\t\tplaceholder=\"Buscar...\"\n\t\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\t\tonValueChange={setInputValue}\n\t\t\t\t\t\t\t\tonKeyDown={handleInputKeyDown}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t\t\t{filteredOptions.length === 0 && (\n\t\t\t\t\t\t\t\t\t<p className=\"py-6 text-center text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\tNenhum resultado encontrado.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\tkey=\"all\"\n\t\t\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\t\t\ttoggleAll();\n\t\t\t\t\t\t\t\t\t\t\tif (focusOnSelect) {\n\t\t\t\t\t\t\t\t\t\t\t\tinputRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex cursor-pointer items-center justify-between\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span>(Selecionar tudo)</span>\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\tselectedValues.length === options.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: \"opacity-50 [&_svg]:invisible\",\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CheckIcon className=\"text-foreground h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t{filteredOptions.map((option) => {\n\t\t\t\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(option.value);\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (isShiftOn) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst originalIndex = options.findIndex(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(o) => o.value === option.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleInterval(originalIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleOption(option.value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (focusOnSelect) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinputRef.current?.focus();\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex cursor-pointer items-center justify-between\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{option.icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option.icon className=\"text-muted-foreground mr-2 h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{option.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={cn(isSelected ? \"\" : \"opacity-50 [&_svg]:invisible\")}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<CheckIcon className=\"text-foreground h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t\t\t\t<CommandSeparator />\n\t\t\t\t\t\t\t</CommandList>\n\t\t\t\t\t\t</Command>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t\t{animation > 0 && selectedValues.length > 0 && (\n\t\t\t\t\t\t<WandSparkles\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"text-foreground bg-background my-2 h-3 w-3 cursor-pointer\",\n\t\t\t\t\t\t\t\tisAnimating ? \"\" : \"text-muted-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tonClick={() => setIsAnimating(!isAnimating)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Popover>\n\n\t\t\t\t{description && <p className=\"text-muted-foreground text-sm\">{description}</p>}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n"],"names":["multiSelectVariants","cva","variants","variant","default","secondary","destructive","positive","warning","info","outline","subtle","true","false","defaultVariants","MultiSelect","React","forwardRef","options","onValueChange","defaultValue","placeholder","animation","maxCount","modalPopover","asChild","className","label","description","value","controlledValue","focusOnSelect","id","props","ref","inputRef","useRef","generatedId","useId","inputId","selectedValues","setSelectedValues","useState","useEffect","isPopoverOpen","setIsPopoverOpen","isAnimating","setIsAnimating","isShiftOn","setIsShiftOn","inputValue","setInputValue","filteredOptions","useMemo","filter","option","toLowerCase","includes","handleInputKeyDown","event","key","toggleOption","newSelectedValues","toggleInterval","index","length","lastIndex","findIndex","o","at","start","Math","min","end","max","rangeValues","slice","map","areAllSelected","every","v","Set","handleClear","handleTogglePopover","prev","clearExtraOptions","toggleAll","allValues","subtleStyles","finalSubtleStyles","div","Label","htmlFor","Popover","open","onOpenChange","modal","PopoverTrigger","Button","onClick","aria-expanded","cn","find","IconComponent","icon","Badge","style","animationDuration","XIcon","stopPropagation","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","span","Separator","orientation","ChevronsUpDownIcon","PopoverContent","align","onEscapeKeyDown","onKeyDown","onKeyUp","Command","shouldFilter","CommandInput","CommandList","p","CommandGroup","CommandItem","onSelect","current","focus","CheckIcon","isSelected","originalIndex","CommandSeparator","WandSparkles","displayName"],"mappings":"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"}