{"version":3,"file":"MultiSelectValue.cjs","sources":["../../../../src/components/Select/MultiSelectValue.tsx"],"sourcesContent":["import {\n  Badge,\n  BadgeProps,\n  DismissibleBadge,\n  NonDismissibleBadge,\n} from '@/components/Badge';\nimport { MouseEvent, useEffect, useId, useState } from 'react';\nimport ReactSortableModule from 'react-sortablejs/dist/index.js';\nimport type { ItemInterface } from 'react-sortablejs';\nconst { ReactSortable } = ReactSortableModule;\n\nimport { SelectItemProps } from './common/types';\nimport styles from './MultiSelectValue.module.css';\n\ninterface MultiSelectValueProps {\n  selectedValues: string[];\n  valueNode: Map<string, SelectItemProps>;\n  onChange: (selectedValues: string[]) => void;\n  onSelect: (selectedValue: string) => void;\n  sortable: boolean;\n  disabled: boolean;\n}\n\nexport const MultiSelectValue = ({\n  selectedValues,\n  valueNode,\n  onChange,\n  sortable,\n  onSelect,\n  disabled,\n}: MultiSelectValueProps) => {\n  const id = useId();\n  const [values, setValues] = useState<ItemInterface[]>(\n    selectedValues.map(value => ({\n      id: `multi-select-${id}-${value}`,\n      value,\n    }))\n  );\n  useEffect(() => {\n    setValues(\n      selectedValues.map(value => ({\n        id: `multi-select-${id}-${value}`,\n        value,\n      }))\n    );\n  }, [id, selectedValues]);\n  if (selectedValues.length === 0) {\n    return null;\n  }\n\n  return (\n    <ReactSortable\n      className={styles['badge-list']}\n      disabled={!sortable}\n      list={values}\n      setList={setValues}\n      onEnd={e => {\n        const { newDraggableIndex, oldDraggableIndex } = e;\n        if (\n          typeof newDraggableIndex === 'number' &&\n          typeof oldDraggableIndex === 'number' &&\n          oldDraggableIndex !== newDraggableIndex\n        ) {\n          const temp = selectedValues[oldDraggableIndex];\n          selectedValues[oldDraggableIndex] = selectedValues[newDraggableIndex];\n          selectedValues[newDraggableIndex] = temp;\n          onChange(selectedValues);\n        }\n      }}\n      revertOnSpill\n    >\n      {selectedValues.map(value => {\n        const nodeProps = valueNode.get(value) ?? { children: value, value: value };\n        let otherProps: BadgeProps = {\n          text: nodeProps.label ?? nodeProps.children,\n          icon: nodeProps?.icon,\n          iconDir: nodeProps?.iconDir,\n        } as NonDismissibleBadge;\n        if (!disabled && !nodeProps.disabled) {\n          otherProps = {\n            ...otherProps,\n            dismissible: true,\n            onClose: (e: MouseEvent<HTMLOrSVGElement>) => {\n              e.preventDefault();\n              e.stopPropagation();\n              onSelect(nodeProps.value);\n            },\n          } as DismissibleBadge;\n        }\n        return (\n          <Badge\n            className={styles['multi-select-badge']}\n            key={`multi-select-${id}-${value}`}\n            size=\"sm\"\n            state={disabled ? 'disabled' : 'default'}\n            {...otherProps}\n          />\n        );\n      })}\n    </ReactSortable>\n  );\n};\n"],"names":["ReactSortableModule","useId","useState","useEffect","jsx","styles","Badge"],"mappings":"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"}