{"version":3,"mappings":";kuBAGO,MAAMA,EAAcC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECaH,SAAAC,EAAiB,CAAE,QAAAC,GAAkB,CAC3D,MAAMC,EAAWC,IACXC,EAAcC,EAAoBJ,EAAQ,EAAE,EAC5CK,EAAWC,IAEX,CAACC,EAAiB,CAAE,QAASC,EAAe,EAChDC,EAAYC,CAAc,EACtB,CAACb,EAAa,CAAE,QAASc,EAAY,EACzCF,EAA6BG,CAAmB,EAE5CC,EAAkB,IAAM,CACxBV,EACcI,EAAA,CACd,UAAW,CACT,GAAIJ,CACN,EACA,YAAa,IAAM,CACjBE,EAASS,EAAmB,CAAE,UAAWd,EAAQ,EAAI,EAAC,CACxD,EACD,EAEWH,EAAA,CACV,UAAW,CACT,GAAIG,EAAQ,EACd,EACA,YAAce,GAAW,CACvBV,EAASW,EAAgB,CAAE,SAAUD,EAAO,UAAU,QAAU,EAAC,CACnE,EACD,CACH,EAGF,OAAKd,EAIDE,EAEAc,EAAA,KAACC,EAAA,CACC,QAAQ,WACR,KAAK,KACL,UAAWV,EACX,QAAS,IAAMK,EAAgB,EAE/B,UAAAM,EAAA,IAACC,EAAK,MAAMC,EAAS,KAAK,KAAK,EAAE,WAMrCF,EAAA,IAACD,EAAA,CACC,QAAQ,WACR,KAAK,KACL,UAAWP,EACX,QAAS,IAAME,EAAgB,EAChC,2BAtBQM,EAAA,IAAAG,WAAA,GA0Bb,CCtEA,MAAMC,EAAuBC,EAAA,KAAK,IAAMC,EAAA,WAAO,oCAAwB,EAAC,kGAExE,SAAwBC,EAAoB,CAC1C,QAAA1B,EACA,KAAA2B,CACF,EAGG,CACD,MAAMC,EAAa1B,IAGf,OAFY2B,KAEA,CAACD,EACNT,EAAA,IAAAG,WAAA,UAIRQ,WACC,UAAAX,EAAA,IAACI,EAAqB,SAAAvB,EAAkB,KAAA2B,EAAY,CACtD,EAEJ,CCfA,SAAwBI,EACtB/B,EACgB,OAsDT,MArDsB,CAC3B,CACE,MAAO,OACP,MAAOA,EAAQ,gBACXgC,EAAkBhC,EAAQ,eAAe,EAAE,OAC3C,IACN,EACA,CACE,MAAO,WACP,MAAOA,EAAQ,SAAWA,EAAQ,SAAS,SAAW,IACxD,EACA,CACE,MAAO,QACP,MAAOA,EAAQ,MAAQA,EAAQ,MAAM,iBAAmB,IAC1D,EACA,CACE,MAAO,eACP,MAAOA,EAAQ,aAAeiC,EAAcjC,EAAQ,YAAY,EAAI,IACtE,EACA,CACE,MAAO,SACP,MAAOA,EAAQ,aACjB,EACA,CACE,MAAO,cACP,MAAOA,EAAQ,kBACjB,EACA,CACE,MAAO,eACP,MAAOA,EAAQ,YAAckC,EAAWlC,EAAQ,WAAW,EAAI,SACjE,EACA,CACE,MAAO,UACP,MAAOA,EAAQ,MACjB,EACA,CACE,MAAO,OACP,MAAOA,EAAQ,IACjB,EACA,CACE,MAAO,UACP,MAAOA,EAAQ,MACjB,EACA,CACE,MAAO,UACP,MAAOA,EAAQ,WAAa,EAAIA,EAAQ,WAAa,IACvD,EACA,CACE,MAAO,UACP,OAAOmC,EAAAnC,EAAQ,UAAR,MAAAmC,EAAiB,KAAOnC,EAAQ,QAAQ,KAAO,IACxD,GACA,OAAO,CAAC,CAAE,MAAAoC,KAAYA,CAAK,CAG/B,CClEA,MAAMC,EAAW,CAAC,CAAE,aAAAC,YAEf,IACC,WAACrB,OAAA,QAAK,UAAU,YAAa,UAAaqB,EAAA,MAAM,MAAE,EAClDnB,MAAC,OAAM,UAAAmB,EAAa,KAAM,EAC5B,ICSJ,SAAwBC,GAAY,CAAE,KAAAZ,EAAM,QAAA3B,GAAkB,CACtD,MAAAwC,EAAOT,EAAoB/B,CAAO,EAGtC,OAAAiB,EAAA,KAAC,MAAI,WAAU,qFACb,UAAAE,EAAA,IAACsB,EAAA,CACC,MAAOzC,EAAQ,MACf,KAAK,KACL,MAAOA,EAAQ,OAAS2B,EAAK,MAC7B,GAAI3B,EAAQ,GACZ,SAAU,CACR,QAAS,GACX,EACF,EAEAiB,OAAC,MAAI,WAAU,8CACb,UAACE,MAAA,KAAE,UAAU,8BACX,SAAAA,EAAA,IAACuB,EAAA,CACC,KAAM,UAAUf,EAAK,IAAI,aAAa3B,EAAQ,EAAE,GAChD,UAAU,+BAET,SAAQA,EAAA,QAEb,EAEAiB,OAAC,MAAI,WAAU,iDACb,UAAAA,OAAC,MACE,WAAQjB,EAAA,iBACN,IACC,WAACmB,EAAA,YAAK,UAAU,YAAY,SAAW,gBACvCA,MAACwB,EAAS,MAAM,eAAe3C,EAAQ,UAAU,IAAI,GAClD,SAAQA,EAAA,UAAU,IACrB,IACF,EAEA,GAEDmB,MAAAyB,EAAA,CAAkB,cAAe5C,EAAQ,cAAe,IAAK,EAAG,OAAM,GAAC,OAAM,GAAC,QAAS,EAAO,GAC9FwC,EAAK,IAAKK,GACT1B,MAACkB,GAAS,aAAcQ,CAAA,EAAeA,EAAS,KAAO,CACxD,EAED5B,OAAC,MAAI,WAAU,+BACb,UAAAE,MAACpB,GAAiB,QAAAC,EAAkB,EACpCmB,MAACO,EAAoB,SAAA1B,EAAkB,KAAA2B,CAAY,IACrD,GACF,EACC3B,EAAQ,iBACPmB,MAAC2B,EAAkB,iBAAiB9C,EAAQ,gBAAiB,GAEjE,GACF,CACF,GAEJ","names":["markAsOwned","gql","EditionOwnButton","edition","loggedIn","useIsLoggedIn","ownedListId","useIsEditionOwnedId","dispatch","useDispatch","removeOwnership","removeLoading","useMutation","deleteListBook","addLoading","markAsOwnedMutation","toggleOwnership","deleteOwnedEdition","result","addOwnedEdition","jsxs","Button","jsx","Icon","faCheck","Fragment","ReportEditionContent","lazy","__vitePreload","ReportEditionButton","book","isLoggedIn","useMount","Suspense","generateEditionData","ReadingFormatByID","secondsFormat","dateFormat","_a","value","BookData","bookDataPair","BookEdition","data","CoverImage","Link","TextLink","ContributionsList","dataPair","ReadingFormatIcon"],"ignoreList":[],"sources":["../../../app/javascript/queries/editions/ownership.ts","../../../app/javascript/components/userBook/EditionOwnButton/index.tsx","../../../app/javascript/components/ReportDropdown/ReportEditionButton/index.tsx","../../../app/javascript/components/editions/generateEditionData.ts","../../../app/javascript/components/editions/BookData.tsx","../../../app/javascript/components/editions/BookEdition.tsx"],"sourcesContent":["import { gql } from \"graphql-tag\";\nimport ListBookType from \"types/ListBookType\";\n\nexport const markAsOwned = gql`\n mutation EditionOwned($id: Int!) {\n ownership: edition_owned(id: $id) {\n id\n listBook: list_book {\n ...ListBookFragment\n }\n }\n }\n`;\n\nexport type MarkAsOwnedType = {\n ownership: {\n id: number;\n listBook: ListBookType;\n };\n}","import { useMutation } from \"lib/apollo/client\";\nimport Button from \"hardcover-ui/components/Button\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport faCheck from \"icons/regular/check.svg\";\nimport { markAsOwned as markAsOwnedMutation, MarkAsOwnedType } from \"queries/editions/ownership\";\nimport { deleteListBook } from \"queries/listBooks/deleteListBook\";\nimport useIsLoggedIn from \"hooks/user/useIsLoggedIn\";\nimport { EditionSerializersEdition } from \"types/serializers\";\nimport { useDispatch } from \"react-redux\";\nimport { useIsEditionOwnedId } from \"store/currentUser/currentUserSelector\";\nimport { addOwnedEdition, deleteOwnedEdition } from \"store/currentUser/currentUserSlice\";\n\ninterface Props {\n edition: EditionSerializersEdition;\n}\n\nexport default function EditionOwnButton({ edition }: Props) {\n const loggedIn = useIsLoggedIn();\n const ownedListId = useIsEditionOwnedId(edition.id);\n const dispatch = useDispatch();\n\n const [removeOwnership, { loading: removeLoading }] =\n useMutation(deleteListBook);\n const [markAsOwned, { loading: addLoading }] =\n useMutation(markAsOwnedMutation);\n\n const toggleOwnership = () => {\n if (ownedListId) {\n removeOwnership({\n variables: {\n id: ownedListId,\n },\n onCompleted: () => {\n dispatch(deleteOwnedEdition({ editionId: edition.id }));\n },\n });\n } else {\n markAsOwned({\n variables: {\n id: edition.id,\n },\n onCompleted: (result) => {\n dispatch(addOwnedEdition({ listBook: result.ownership.listBook }));\n },\n });\n }\n };\n\n if (!loggedIn) {\n return <>;\n }\n\n if (ownedListId) {\n return (\n toggleOwnership()}\n >\n \n Owned\n \n );\n }\n return (\n toggleOwnership()}\n >\n Mark as owned\n \n );\n}\n","import useMount from \"hooks/useMount\";\nimport { Suspense, lazy } from \"react\";\nimport useIsLoggedIn from \"hooks/user/useIsLoggedIn\";\nimport { EditionSerializersEdition, PageSerializersBooksLayout } from \"types/serializers\";\n\nconst ReportEditionContent = lazy(() => import(\"./ReportEditionContent\"));\n\nexport default function ReportEditionButton({\n edition,\n book,\n}: {\n edition: EditionSerializersEdition;\n book: PageSerializersBooksLayout;\n}) {\n const isLoggedIn = useIsLoggedIn();\n const mounted = useMount();\n\n if (!mounted || !isLoggedIn) {\n return <>;\n }\n\n return (\n \n \n \n );\n}\n","import { secondsFormat } from \"lib/bookUtils\";\nimport { ReadingFormatByID } from \"types/ReadingFormatType\";\nimport { dateFormat } from \"lib/dateFormat\";\nimport { EditionSerializersEdition } from \"types/serializers\";\nimport EditionType from \"types/EditionType\";\n\nexport interface BookDataPair {\n title: string;\n value: string;\n}\n\nexport default function generateEditionData(\n edition: EditionSerializersEdition | EditionType\n): BookDataPair[] {\n const data: BookDataPair[] = [\n {\n title: \"Type\",\n value: edition.readingFormatId\n ? ReadingFormatByID[edition.readingFormatId].format\n : null,\n },\n {\n title: \"Language\",\n value: edition.language ? edition.language.language : null,\n },\n {\n title: \"Pages\",\n value: edition.pages ? edition.pages.toLocaleString() : null,\n },\n {\n title: \"Audio Length\",\n value: edition.audioSeconds ? secondsFormat(edition.audioSeconds) : null,\n },\n {\n title: \"Format\",\n value: edition.editionFormat,\n },\n {\n title: \"Information\",\n value: edition.editionInformation,\n },\n {\n title: \"Release Date\",\n value: edition.releaseDate ? dateFormat(edition.releaseDate) : \"Unknown\",\n },\n {\n title: \"ISBN 10\",\n value: edition.isbn10,\n },\n {\n title: \"ASIN\",\n value: edition.asin,\n },\n {\n title: \"ISBN 13\",\n value: edition.isbn13,\n },\n {\n title: \"Readers\",\n value: edition.usersCount > 0 ? edition.usersCount : null,\n },\n {\n title: \"Country\",\n value: edition.country?.name ? edition.country.name : null,\n },\n ].filter(({ value }) => value);\n\n return data;\n}\n","import { BookDataPair } from \"./generateEditionData\";\n\nconst BookData = ({ bookDataPair }: { bookDataPair: BookDataPair }) => {\n return (\n

\n {bookDataPair.title}: \n {bookDataPair.value}\n

\n );\n};\n\nexport default BookData;\n","import { Link } from \"@inertiajs/react\";\nimport EditionOwnButton from \"components/userBook/EditionOwnButton\";\nimport CoverImage from \"components/Cover/CoverImage\";\nimport ReportEditionButton from \"components/ReportDropdown/ReportEditionButton\";\nimport TextLink from \"hardcover-ui/components/TextLink\";\nimport ReadingFormatIcon from \"components/shared/ReadingFormatIcon\";\nimport generateEditionData from \"./generateEditionData\";\nimport BookData from \"./BookData\";\nimport { EditionSerializersEdition, PageSerializersBooksLayout } from \"types/serializers\";\nimport ContributionsList from \"components/authors/ContributionsList\";\n\ninterface Props {\n book: PageSerializersBooksLayout;\n edition?: EditionSerializersEdition;\n}\n\nexport default function BookEdition({ book, edition }: Props) {\n const data = generateEditionData(edition);\n\n return (\n
\n \n\n
\n

\n \n {edition.title}\n \n

\n\n
\n
\n {edition.publisher ? (\n

\n Publisher: \n \n {edition.publisher.name}\n \n

\n ) : (\n false\n )}\n \n {data.map((dataPair) => (\n \n ))}\n\n
\n \n \n
\n
\n {edition.readingFormatId && (\n \n )}\n
\n
\n
\n );\n}\n"],"file":"assets/BookEdition-BIg5nN4B.js"}