'use client'; import clsx from 'clsx'; import { useMemo, useState } from 'react'; import SelectLocationHead from '@/components/select/SelectLocationHead'; import Label from '@/components/ui/Label'; import Modal, { ModalProps } from '@/components/ui/Modal'; import TextArea from '@/components/ui/TextArea'; import { useAuth } from '@/context/AuthContext'; import { LocationHead } from '@/models/library'; import { combineLocation, validateLocation } from '@/models/libraryAPI'; import { limits } from '@/utils/constants'; interface DlgChangeLocationProps extends Pick { initial: string; onChangeLocation: (newLocation: string) => void; } function DlgChangeLocation({ hideWindow, initial, onChangeLocation }: DlgChangeLocationProps) { const { user } = useAuth(); const [head, setHead] = useState(initial.substring(0, 2) as LocationHead); const [body, setBody] = useState(initial.substring(3)); const location = useMemo(() => combineLocation(head, body), [head, body]); const isValid = useMemo(() => initial !== location && validateLocation(location), [initial, location]); function handleSubmit() { onChangeLocation(location); } return (