{"version":3,"mappings":"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","names":["EditionSelectorDrawer","lazy","__vitePreload","EditEditionModalWrapper","EditionSelector","book","edition","children","size","userBookRead","client","useApolloClient","buttonRef","useRef","dispatch","useDispatch","open","setOpen","useState","newEditionFormOpen","setNewEditionFormOpen","buttonClassName","useMemo","editionChanged","newEdition","updateUserBookRead","newUserBookRead","setUserBookRead","toast","error","closeEditEditionModal","toggleOpen","event","jsxs","Suspense","jsx","EditionSelectorButton","Drawer","startTransition","EditableDateRead","initialDateRead","useStore","settings","updateDates","deleteDate","useUserBookRead","ReadingFormatIcon","_a","DatePickerWithRange","parsedDateToDate","Fragment","EditableDatesRead","userBookReads","useUserBookReads","dateRead"],"ignoreList":[],"sources":["../../../app/javascript/components/EditionSelector/EditionSelector.tsx","../../../app/javascript/features/books/components/UserBookPanel/EditableDatesRead/EditableDateRead.tsx","../../../app/javascript/features/books/components/UserBookPanel/EditableDatesRead/EditableDatesRead.tsx"],"sourcesContent":["import {\n lazy,\n startTransition,\n Suspense,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ButtonThemeProps } from \"hardcover-ui/theme/components/button\";\nimport EditionSelectorButton from \"./EditionSelectorButton\";\nimport { Drawer } from \"features/Drawer\";\nimport { toast } from \"sonner\";\nimport { BookSerializersBookByline, EditionSerializersEdition, UserBookSerializersUserBookDate } from \"types/serializers\";\nimport { updateUserBookRead } from \"services/UserBookReadService\";\nimport { useApolloClient } from \"lib/apollo/client\";\nimport { setUserBookRead } from \"store/books/booksSlice\";\nimport { useDispatch } from \"react-redux\";\nimport EditionType from \"types/EditionType\";\n\nconst EditionSelectorDrawer = lazy(\n () => import(\"./EditionSelectorForUserBookReadDrawer\")\n);\nconst EditEditionModalWrapper = lazy(() => import(\"./EditEditionModalWrapper\"));\n\nexport default function EditionSelector({\n book,\n edition,\n children,\n size = \"sm\",\n userBookRead,\n}: {\n book: BookSerializersBookByline;\n edition: EditionSerializersEdition;\n children?: React.ReactNode;\n size?: ButtonThemeProps[\"size\"];\n userBookRead: UserBookSerializersUserBookDate;\n}) {\n const client = useApolloClient();\n const buttonRef = useRef();\n const dispatch = useDispatch();\n const [open, setOpen] = useState(false);\n const [newEditionFormOpen, setNewEditionFormOpen] = useState(false);\n const buttonClassName = useMemo(\n () => `edition-selector-button-${userBookRead.id}`,\n [userBookRead]\n );\n\n const editionChanged = (newEdition: EditionType) => {\n if (newEdition?.id && newEdition.id !== userBookRead.editionId) {\n return updateUserBookRead({\n client,\n id: userBookRead.id,\n object: {\n ...userBookRead,\n ...{ editionId: newEdition.id },\n },\n })\n .then((newUserBookRead) => {\n dispatch(setUserBookRead({ bookId: book.id, userBookRead: newUserBookRead }));\n if (newUserBookRead) {\n toast.success(\"Edition changed\");\n }\n })\n .catch((error) => {\n toast.error(`Error updating edition: ${error}`);\n });\n }\n };\n\n const closeEditEditionModal = () => {\n setNewEditionFormOpen(false);\n };\n\n const toggleOpen = (event: React.MouseEvent) => {\n if (event) {\n event.preventDefault();\n }\n\n setOpen(!open);\n };\n\n return (\n
\n \n {children}\n \n }\n >\n \n {children}\n \n\n {open && buttonRef?.current ? (\n {},\n }}\n />\n }\n >\n {\n startTransition(() => {\n setOpen(false);\n setNewEditionFormOpen(true);\n });\n }}\n settings={{\n isOpen: open,\n onClose: toggleOpen,\n ref: buttonRef.current,\n }}\n />\n \n ) : (\n false\n )}\n \n\n {newEditionFormOpen ? (\n \n \n \n ) : (\n false\n )}\n
\n );\n}\n","import { DatePickerWithRange } from \"components/ui/DatePickerWithRange\";\nimport { parsedDateToDate } from \"lib/dateUtils\";\nimport ReadingFormatIcon from \"components/shared/ReadingFormatIcon\";\nimport useUserBookRead from \"services/UserBookReadService/useUserBookReadService\";\nimport EditionSelector from \"components/EditionSelector/EditionSelector\";\nimport { BookSerializersBookByline, UserBookSerializersUserBookDate } from \"types/serializers\";\n\nexport default function EditableDateRead({\n book,\n userBookRead: initialDateRead,\n useStore = true,\n}: {\n book: BookSerializersBookByline;\n userBookRead: UserBookSerializersUserBookDate;\n useStore?: boolean;\n}) {\n const settings = useStore ? {} : { userBookRead: initialDateRead };\n const { userBookRead, updateDates, deleteDate } = useUserBookRead({\n bookId: book.id,\n userBookReadId: initialDateRead.id,\n settings\n });\n if (!userBookRead) {\n return <>;\n }\n\n return (\n
\n \n \n \n\n \n
\n );\n}\n","import EditableDateRead from \"./EditableDateRead\";\nimport { useUserBookReads } from \"store/books/booksSelector\";\nimport { BookSerializersBookByline } from \"types/serializers\";\n\nexport default function EditableDatesRead({\n book,\n}: {\n book: BookSerializersBookByline;\n}) {\n const userBookReads = useUserBookReads(book.id);\n if(userBookReads.length === 0) {\n return false;\n }\n\n return (\n
\n {userBookReads.map((dateRead) => (\n \n ))}\n
\n );\n}\n"],"file":"assets/EditableDatesRead-C9IFvb2Q.js"}