ivt
Version:
Ivt Components Library
1 lines • 33.5 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/components/ui/multi-input-list/multi-input-list.tsx"],"sourcesContent":["\"use client\";\n\nimport { Check, ChevronsUpDown, Trash2 } from \"lucide-react\";\nimport React from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"@/components/ui/command\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\n\ninterface MultiInputListProps {\n\toptions: {\n\t\tlabel: string;\n\t\tvalue: string;\n\t}[];\n\tvalue?: string[];\n\tdefaultValue?: string[];\n\tonValueChange: (value: string[]) => void;\n\tplaceholder?: string;\n\tsearchPlaceholder?: string;\n\tlabel?: string | React.ReactNode;\n\tdescription?: string;\n\tlistTitle?: string;\n\tlistUnit?: string;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tselectAllLabel?: string;\n\tvalidationRegex?: RegExp;\n\tonInvalidInput?: (values: string[]) => void;\n\tid?: string;\n\tshowAddButton?: boolean;\n\taddButtonLabel?: string;\n\tfetchOptions?: (term: string) => Promise<{ label: string; value: string }[]>;\n\tmaxHeight?: string | number;\n\tfetchDependencies?: unknown[];\n}\n\nexport const MultiInputList = React.forwardRef<HTMLInputElement, MultiInputListProps>(\n\t(\n\t\t{\n\t\t\toptions: initialOptions,\n\t\t\tvalue: controlledValue,\n\t\t\tdefaultValue = [],\n\t\t\tonValueChange,\n\t\t\tplaceholder = \"Digite...\",\n\t\t\tsearchPlaceholder = \"Buscar...\",\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tlistTitle = \"Itens adicionados\",\n\t\t\tlistUnit = \"itens\",\n\t\t\tclassName,\n\t\t\tdisabled,\n\t\t\tselectAllLabel = \"(Selecionar todos)\",\n\t\t\tvalidationRegex,\n\t\t\tonInvalidInput,\n\t\t\tid,\n\t\t\tshowAddButton,\n\t\t\taddButtonLabel = \"Adicionar\",\n\t\t\tfetchOptions,\n\t\t\tmaxHeight = \"200px\",\n\t\t\tfetchDependencies = [],\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => {\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\t\tconst [inputValue, setInputValue] = React.useState(\"\");\n\t\tconst [searchTerm, setSearchTerm] = React.useState(\"\");\n\t\tconst [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n\t\tconst [isShiftOn, setIsShiftOn] = React.useState(false);\n\n\t\tconst [knownOptions, setKnownOptions] = React.useState(initialOptions);\n\t\tconst [fetchedOptions, setFetchedOptions] = React.useState<{ label: string; value: string }[]>(\n\t\t\t[],\n\t\t);\n\t\tconst [loading, setLoading] = React.useState(false);\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\tReact.useEffect(() => {\n\t\t\tif (initialOptions.length > 0) {\n\t\t\t\tsetKnownOptions((prev) => {\n\t\t\t\t\tconst prevMap = new Map(prev.map((o) => [o.value, o]));\n\t\t\t\t\tinitialOptions.forEach((o) => {\n\t\t\t\t\t\tprevMap.set(o.value, o);\n\t\t\t\t\t});\n\t\t\t\t\treturn Array.from(prevMap.values());\n\t\t\t\t});\n\t\t\t}\n\t\t}, [initialOptions]);\n\n\t\tconst displayOptions = React.useMemo(() => {\n\t\t\tif (fetchOptions) {\n\t\t\t\treturn fetchedOptions;\n\t\t\t}\n\t\t\tif (!searchTerm) return initialOptions;\n\t\t\treturn initialOptions.filter((opt) =>\n\t\t\t\topt.label.toLowerCase().includes(searchTerm.toLowerCase()),\n\t\t\t);\n\t\t}, [fetchOptions, fetchedOptions, initialOptions, searchTerm]);\n\n\t\tconst debouncedFetch = useDebouncedCallback(async (term: string) => {\n\t\t\tif (!fetchOptions) return;\n\t\t\ttry {\n\t\t\t\tconst result = await fetchOptions(term);\n\t\t\t\tsetFetchedOptions(result);\n\t\t\t\tsetKnownOptions((prev) => {\n\t\t\t\t\tconst prevMap = new Map(prev.map((o) => [o.value, o]));\n\t\t\t\t\tresult.forEach((o) => {\n\t\t\t\t\t\tprevMap.set(o.value, o);\n\t\t\t\t\t});\n\t\t\t\t\treturn Array.from(prevMap.values());\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Erro ao buscar opções:\", err);\n\t\t\t\tsetFetchedOptions([]);\n\t\t\t} finally {\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t}, 500);\n\n\t\tconst dependenciesSerialized = React.useMemo(\n\t\t\t() => JSON.stringify(fetchDependencies),\n\t\t\t[fetchDependencies],\n\t\t);\n\n\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: <useEffect>\n\t\tReact.useEffect(() => {\n\t\t\tif (fetchOptions && (searchTerm || inputValue)) {\n\t\t\t\tsetLoading(true);\n\t\t\t\tdebouncedFetch(searchTerm || inputValue);\n\t\t\t}\n\t\t}, [dependenciesSerialized]);\n\n\t\tconst addFromInput = (text: string) => {\n\t\t\tif (!text) return;\n\t\t\tconst parts = text\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((p) => p.trim())\n\t\t\t\t.filter((p) => p.length > 0);\n\n\t\t\tif (parts.length === 0) return;\n\n\t\t\tconst validParts = validationRegex ? parts.filter((p) => validationRegex.test(p)) : parts;\n\n\t\t\tconst invalidParts = validationRegex ? parts.filter((p) => !validationRegex.test(p)) : [];\n\n\t\t\tif (invalidParts.length > 0) {\n\t\t\t\tif (onInvalidInput) onInvalidInput(invalidParts);\n\t\t\t\tsetInputValue(invalidParts.join(\", \"));\n\t\t\t} else {\n\t\t\t\tsetInputValue(\"\");\n\t\t\t}\n\n\t\t\tif (validParts.length > 0) {\n\t\t\t\tconst newSet = new Set(selectedValues);\n\t\t\t\tvalidParts.forEach((part) => {\n\t\t\t\t\tnewSet.add(part);\n\t\t\t\t\tsetKnownOptions((prev) => {\n\t\t\t\t\t\tif (prev.some((o) => o.value === part)) return prev;\n\t\t\t\t\t\treturn [...prev, { label: part, value: part }];\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tconst newValues = Array.from(newSet);\n\t\t\t\tsetSelectedValues(newValues);\n\t\t\t\tonValueChange(newValues);\n\t\t\t}\n\t\t};\n\n\t\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (e.key === \"ArrowDown\") {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!isPopoverOpen) {\n\t\t\t\t\tsetIsPopoverOpen(true);\n\t\t\t\t}\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tconst firstItem = document.querySelector('[role=\"option\"]') as HTMLElement | null;\n\t\t\t\t\tfirstItem?.focus();\n\t\t\t\t});\n\t\t\t} else if (e.key === \"Enter\") {\n\t\t\t\te.preventDefault();\n\t\t\t\taddFromInput(inputValue);\n\t\t\t\tsetIsPopoverOpen(false);\n\t\t\t} else if (e.key === \",\") {\n\t\t\t\te.preventDefault();\n\t\t\t\taddFromInput(inputValue);\n\t\t\t} else if (e.key === \"Tab\") {\n\t\t\t\tif (inputValue) {\n\t\t\t\t\taddFromInput(inputValue);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst toggleOption = (optionValue: string) => {\n\t\t\tconst newValues = selectedValues.includes(optionValue)\n\t\t\t\t? selectedValues.filter((v) => v !== optionValue)\n\t\t\t\t: [...selectedValues, optionValue];\n\n\t\t\tsetSelectedValues(newValues);\n\t\t\tonValueChange(newValues);\n\t\t\tsetInputValue(\"\");\n\t\t};\n\n\t\tconst toggleInterval = (index: number) => {\n\t\t\tif (selectedValues.length < 1) return;\n\n\t\t\tconst currentOptions = displayOptions;\n\t\t\tconst lastValue = selectedValues.at(-1);\n\t\t\tconst lastIndex = currentOptions.findIndex((o) => o.value === lastValue);\n\n\t\t\tif (lastIndex === -1) return;\n\n\t\t\tconst start = Math.min(lastIndex, index);\n\t\t\tconst end = Math.max(lastIndex, index) + 1;\n\t\t\tconst rangeValues = currentOptions.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 removeItem = (val: string) => {\n\t\t\tconst newValues = selectedValues.filter((v) => v !== val);\n\t\t\tsetSelectedValues(newValues);\n\t\t\tonValueChange(newValues);\n\t\t};\n\n\t\tconst handleSelectAll = () => {\n\t\t\tconst optionsToSelect = displayOptions;\n\t\t\tconst allSelected = optionsToSelect.every((o) => selectedValues.includes(o.value));\n\n\t\t\tif (allSelected) {\n\t\t\t\tconst newValues = selectedValues.filter(\n\t\t\t\t\t(val) => !optionsToSelect.some((opt) => opt.value === val),\n\t\t\t\t);\n\t\t\t\tsetSelectedValues(newValues);\n\t\t\t\tonValueChange(newValues);\n\t\t\t} else {\n\t\t\t\tconst newSet = new Set(selectedValues);\n\t\t\t\toptionsToSelect.forEach((opt) => {\n\t\t\t\t\tnewSet.add(opt.value);\n\t\t\t\t});\n\t\t\t\tconst newValues = Array.from(newSet);\n\t\t\t\tsetSelectedValues(newValues);\n\t\t\t\tonValueChange(newValues);\n\t\t\t}\n\t\t};\n\n\t\tconst isAllFilteredSelected =\n\t\t\tdisplayOptions.length > 0 &&\n\t\t\tdisplayOptions.every((opt) => selectedValues.includes(opt.value));\n\n\t\treturn (\n\t\t\t<div className={cn(\"space-y-2\", className)}>\n\t\t\t\t{label && (\n\t\t\t\t\t<Label htmlFor={inputId} className=\"text-foreground gap-0 text-sm font-medium\">\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Label>\n\t\t\t\t)}\n\t\t\t\t<div className=\"flex w-full items-center gap-2\">\n\t\t\t\t\t<div className=\"relative flex-1\">\n\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\topen={isPopoverOpen && (displayOptions.length > 0 || loading || !!fetchOptions)}\n\t\t\t\t\t\t\tonOpenChange={(open) => {\n\t\t\t\t\t\t\t\tsetIsPopoverOpen(open);\n\t\t\t\t\t\t\t\tif (!open) setSearchTerm(\"\");\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tsetIsPopoverOpen(true);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tconst val = e.target.value;\n\t\t\t\t\t\t\t\t\t\t\tsetInputValue(val);\n\t\t\t\t\t\t\t\t\t\t\tif (fetchOptions) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchTerm(val);\n\t\t\t\t\t\t\t\t\t\t\t\tsetLoading(true);\n\t\t\t\t\t\t\t\t\t\t\t\tdebouncedFetch(val);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (!isPopoverOpen) setIsPopoverOpen(true);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\t\t\t\t\tonFocus={() => setIsPopoverOpen(true)}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tclassName=\"w-full pr-8\"\n\t\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{(initialOptions.length > 0 || fetchOptions) && (\n\t\t\t\t\t\t\t\t\t\t<div className=\"pointer-events-none absolute top-2.5 right-4 opacity-50\">\n\t\t\t\t\t\t\t\t\t\t\t<ChevronsUpDown className=\"size-4\" />\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</PopoverTrigger>\n\t\t\t\t\t\t\t<PopoverContent\n\t\t\t\t\t\t\t\tclassName=\"w-[--radix-popover-trigger-width] p-0\"\n\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\tonOpenAutoFocus={(e) => e.preventDefault()}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\tevent.key === \"Shift\" ? setIsShiftOn(true) : null;\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyUp={(event) => {\n\t\t\t\t\t\t\t\t\tevent.key === \"Shift\" ? setIsShiftOn(false) : null;\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Command shouldFilter={false} className=\"\">\n\t\t\t\t\t\t\t\t\t{!fetchOptions && (\n\t\t\t\t\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\t\t\t\t\t\tvalue={searchTerm}\n\t\t\t\t\t\t\t\t\t\t\tonValueChange={(val) => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchTerm(val);\n\t\t\t\t\t\t\t\t\t\t\t\tif (fetchOptions) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetLoading(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\tdebouncedFetch(val);\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}}\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\t<CommandList>\n\t\t\t\t\t\t\t\t\t\t{displayOptions.length > 0 && !fetchOptions && (\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\tonSelect={handleSelectAll}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"mx-1 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<span>{selectAllLabel}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{isAllFilteredSelected && <Check className=\"h-4 w-4\" />}\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\n\t\t\t\t\t\t\t\t\t\t{loading && (\n\t\t\t\t\t\t\t\t\t\t\t<div\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-muted-foreground py-6 text-center text-sm\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tfetchOptions && \"p-6\",\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>\n\t\t\t\t\t\t\t\t\t\t\t\tCarregando...\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{!loading && displayOptions.length === 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<CommandEmpty className={cn(\"text-sm\", fetchOptions && \"p-6\")}>\n\t\t\t\t\t\t\t\t\t\t\t\tNenhuma sugestão.\n\t\t\t\t\t\t\t\t\t\t\t</CommandEmpty>\n\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{!loading && displayOptions.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t\t\t\t\t\t{displayOptions.map((option) => {\n\t\t\t\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\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\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\t\t\t\tvalue={option.label}\n\t\t\t\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\t\t\t\tif (isShiftOn) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst originalIndex = displayOptions.findIndex(\n\t\t\t\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\t\t\t);\n\t\t\t\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\t\t\t} else {\n\t\t\t\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\t\t\t}\n\t\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\t\tclassName=\"flex cursor-pointer justify-between\"\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\t\t<span>{option.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{isSelected && <Check className=\"h-4 w-4\" />}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</CommandItem>\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</CommandGroup>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</CommandList>\n\t\t\t\t\t\t\t\t</Command>\n\t\t\t\t\t\t\t</PopoverContent>\n\t\t\t\t\t\t</Popover>\n\t\t\t\t\t</div>\n\t\t\t\t\t{showAddButton && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => addFromInput(inputValue)}\n\t\t\t\t\t\t\tdisabled={disabled || !inputValue}\n\t\t\t\t\t\t\tisAction\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{addButtonLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{description && <p className=\"text-muted-foreground text-sm\">{description}</p>}\n\n\t\t\t\t{selectedValues.length > 0 && (\n\t\t\t\t\t<div className=\"mt-4 pt-4\">\n\t\t\t\t\t\t<div className=\"mb-2 flex items-center justify-between\">\n\t\t\t\t\t\t\t<h4 className=\"text-muted-foreground px-1 text-sm font-medium\">{listTitle}</h4>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"rounded-md rounded-b-none border-b\">\n\t\t\t\t\t\t\t<div style={{ maxHeight }} className=\"w-full overflow-y-auto rounded-md\">\n\t\t\t\t\t\t\t\t<div className=\"divide-y\">\n\t\t\t\t\t\t\t\t\t{selectedValues.map((val) => {\n\t\t\t\t\t\t\t\t\t\tconst option = knownOptions.find((o) => o.value === val);\n\t\t\t\t\t\t\t\t\t\tconst displayLabel = option ? option.label : val;\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={val}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-background hover:bg-muted/50 flex items-center justify-between px-1 py-2 text-sm transition-colors\"\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<span className=\"truncate\">{displayLabel}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => removeItem(val)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-destructive hover:text-destructive hover:bg-destructive/10 h-8 w-8\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\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<Trash2 className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Remover {displayLabel}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t</div>\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</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"text-muted-foreground bg-muted relative z-10 -mt-px flex items-center justify-between border-t px-1 py-2 text-sm\">\n\t\t\t\t\t\t\t<span>Total</span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t{selectedValues.length} {listUnit}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nMultiInputList.displayName = \"MultiInputList\";\n"],"names":["MultiInputList","React","forwardRef","options","initialOptions","value","controlledValue","defaultValue","onValueChange","placeholder","searchPlaceholder","label","description","listTitle","listUnit","className","disabled","selectAllLabel","validationRegex","onInvalidInput","id","showAddButton","addButtonLabel","fetchOptions","maxHeight","fetchDependencies","props","ref","generatedId","useId","inputId","selectedValues","setSelectedValues","useState","inputValue","setInputValue","searchTerm","setSearchTerm","isPopoverOpen","setIsPopoverOpen","isShiftOn","setIsShiftOn","knownOptions","setKnownOptions","fetchedOptions","setFetchedOptions","loading","setLoading","useEffect","length","prev","prevMap","Map","map","o","forEach","set","Array","from","values","displayOptions","useMemo","filter","opt","toLowerCase","includes","debouncedFetch","useDebouncedCallback","term","result","err","console","error","dependenciesSerialized","JSON","stringify","addFromInput","text","parts","split","p","trim","validParts","test","invalidParts","join","newSet","Set","part","add","some","newValues","handleKeyDown","e","key","preventDefault","requestAnimationFrame","firstItem","document","querySelector","focus","toggleOption","optionValue","v","toggleInterval","index","currentOptions","lastValue","at","lastIndex","findIndex","start","Math","min","end","max","rangeValues","slice","areAllSelected","every","newSelectedValues","removeItem","val","handleSelectAll","optionsToSelect","allSelected","isAllFilteredSelected","div","cn","Label","htmlFor","Popover","open","onOpenChange","PopoverTrigger","asChild","Input","onClick","stopPropagation","onChange","target","onKeyDown","onFocus","autoComplete","ChevronsUpDown","PopoverContent","align","onOpenAutoFocus","event","onKeyUp","Command","shouldFilter","CommandInput","CommandList","CommandItem","onSelect","span","Check","CommandEmpty","CommandGroup","option","isSelected","originalIndex","Button","type","isAction","h4","style","find","displayLabel","variant","size","Trash2","displayName"],"mappings":"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"}