| 
									
										
										
										
											2025-03-18 11:01:06 +08:00
										 |  |  | 'use client' | 
					
						
							|  |  |  | import type { FC } from 'react' | 
					
						
							|  |  |  | import React from 'react' | 
					
						
							|  |  |  | import { type MetadataItemWithEdit, UpdateType } from '../types' | 
					
						
							|  |  |  | import Label from './label' | 
					
						
							|  |  |  | import { RiDeleteBinLine } from '@remixicon/react' | 
					
						
							|  |  |  | import cn from '@/utils/classnames' | 
					
						
							|  |  |  | import InputHasSetMultipleValue from './input-has-set-multiple-value' | 
					
						
							|  |  |  | import InputCombined from './input-combined' | 
					
						
							|  |  |  | import EditedBeacon from './edited-beacon' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type Props = { | 
					
						
							|  |  |  |   payload: MetadataItemWithEdit | 
					
						
							|  |  |  |   onChange: (payload: MetadataItemWithEdit) => void | 
					
						
							|  |  |  |   onRemove: (id: string) => void | 
					
						
							|  |  |  |   onReset: (id: string) => void | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const EditMetadatabatchItem: FC<Props> = ({ | 
					
						
							|  |  |  |   payload, | 
					
						
							|  |  |  |   onChange, | 
					
						
							|  |  |  |   onRemove, | 
					
						
							|  |  |  |   onReset, | 
					
						
							|  |  |  | }) => { | 
					
						
							|  |  |  |   const isUpdated = payload.isUpdated | 
					
						
							|  |  |  |   const isDeleted = payload.updateType === UpdateType.delete | 
					
						
							|  |  |  |   return ( | 
					
						
							|  |  |  |     <div className='flex h-6 items-center space-x-0.5'> | 
					
						
							| 
									
										
										
										
											2025-03-21 17:41:03 +08:00
										 |  |  |       {isUpdated ? <EditedBeacon onReset={() => onReset(payload.id)} /> : <div className='size-4 shrink-0' />} | 
					
						
							| 
									
										
										
										
											2025-03-18 11:01:06 +08:00
										 |  |  |       <Label text={payload.name} isDeleted={isDeleted} /> | 
					
						
							|  |  |  |       {payload.isMultipleValue | 
					
						
							|  |  |  |         ? <InputHasSetMultipleValue | 
					
						
							|  |  |  |           onClear={() => onChange({ ...payload, value: null, isMultipleValue: false })} | 
					
						
							|  |  |  |           readOnly={isDeleted} | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |         : <InputCombined | 
					
						
							|  |  |  |           type={payload.type} | 
					
						
							|  |  |  |           value={payload.value} | 
					
						
							|  |  |  |           onChange={v => onChange({ ...payload, value: v as string })} | 
					
						
							|  |  |  |           readOnly={isDeleted} | 
					
						
							|  |  |  |         />} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <div | 
					
						
							|  |  |  |         className={ | 
					
						
							|  |  |  |           cn( | 
					
						
							| 
									
										
										
										
											2025-03-21 17:41:03 +08:00
										 |  |  |             'cursor-pointer rounded-md p-1 text-text-tertiary hover:bg-state-destructive-hover hover:text-text-destructive', | 
					
						
							| 
									
										
										
										
											2025-03-18 11:01:06 +08:00
										 |  |  |             isDeleted && 'cursor-default bg-state-destructive-hover  text-text-destructive') | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         onClick={() => onRemove(payload.id)} | 
					
						
							|  |  |  |       > | 
					
						
							|  |  |  |         <RiDeleteBinLine className='size-4' /> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | export default React.memo(EditMetadatabatchItem) |