{"version":3,"file":"PublicationPost-7nXzhaeK.js","sources":["../../src/queries/GetPublicationPost.js","../../src/components/publication/PublicationPost.vue"],"sourcesContent":["import gql from 'graphql-tag';\n\nexport const publicationPostQuery = gql`\n query getPublication($slug: ID!) {\n publication(id: $slug, idType: SLUG) {\n content\n featuredImage {\n node {\n altText\n caption\n description\n mediaDetails {\n height\n width\n }\n sourceUrl\n }\n }\n imageSrcset\n publicationData {\n authors {\n author\n type\n }\n fully_illustrated\n hardcover\n height\n num_illustrations\n num_pages\n publication_year\n purchase_url\n softcover\n width\n }\n publicationAuthors(first: 100) {\n nodes {\n name\n publication_authorId\n slug\n sort\n }\n }\n publicationSubjects {\n nodes {\n name\n slug\n }\n }\n slug\n title\n }\n }\n`;\n","<template>\n <article v-if=\"post && Object.keys(post).length\" :class=\"[$style.publication, 'container']\">\n <PostFeaturedImage\n v-if=\"post.featuredImage\"\n :is-aspect=\"true\"\n :featured-image=\"post.featuredImage.node\"\n :srcset=\"post.imageSrcset\"\n :class=\"$style.featuredImage\"\n :ga4-data=\"\n JSON.stringify({\n click_type: 'hero',\n component: 'PublicationPost',\n content_group: 'publication',\n gtm_tag: 'image',\n file_name: `${post.featuredImage.node.sourceUrl.split('/').pop()}`,\n })\n \"\n ></PostFeaturedImage>\n <header :class=\"$style.header\">\n <nav>\n <BackLink\n component=\"PublicationPost\"\n group=\"publication\"\n label=\"Publications\"\n name=\"PublicationSection\"\n ></BackLink>\n </nav>\n <h1 class=\"space-24-32-above\" v-html=\"post.title\"></h1>\n <PublicationAuthors :data=\"post\"></PublicationAuthors>\n <a\n v-if=\"post.publicationData.purchase_url\"\n class=\"button-primary\"\n :href=\"post.publicationData.purchase_url\"\n target=\"_blank\"\n >\n Buy the Catalogue\n </a>\n </header>\n <ProcessContent\n ref=\"mainContent\"\n :class=\"$style.content\"\n :content=\"post.content\"\n wrapper=\"section\"\n ></ProcessContent>\n <footer :class=\"$style.footer\">\n <p class=\"info\">Subject:</p>\n <ul class=\"tags\">\n <li v-for=\"(subject, index) in post.publicationSubjects.nodes\" :key=\"index\">\n <router-link\n :to=\"{\n name: 'PublicationTaxSection',\n params: {\n slug: subject.slug,\n subtype: 'publication_subject',\n },\n }\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'taxonomy',\n component: 'PublicationPost',\n content_group: 'publication',\n gtm_tag: 'link',\n link_text: `${subject.name}`,\n link_url: `${subject.slug}`,\n })\n \"\n >\n {{ subject.name }}\n </router-link>\n </li>\n </ul>\n </footer>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport BackLink from '@/components/common/BackLink.vue';\nimport { dataLoaded, useHandleError, useMetaData } from '@/composables/Common.js';\nimport PostFeaturedImage from '@/components/common/PostFeaturedImage.vue';\nimport ProcessContent from '@/components/common/ProcessContent.vue';\nimport { Publication } from '@/types/publication.interface';\nimport PublicationAuthors from '@/components/publication/PublicationAuthors.vue';\nimport { publicationPostQuery } from '@/queries/GetPublicationPost';\nimport { ref } from 'vue';\nimport { useQuery } from 'villus';\n\nconst props = defineProps<{\n slug: string;\n}>();\n\nconst { handleError } = useHandleError();\nconst { setMetaDescription, setMetaTitle } = useMetaData();\n\nconst post = ref<Publication>({});\n\nconst { data } = useQuery({\n onData: data => {\n if (data.publication && Object.keys(data.publication).length) {\n post.value = data.publication;\n setMetaTitle(data.publication.title);\n setMetaDescription(data.publication.excerpt);\n dataLoaded();\n }\n\n if (!data.publication || Object.keys(data.publication).length === 0) {\n handleError('PublicationPost', props.slug);\n }\n },\n query: publicationPostQuery,\n variables: { slug: props.slug },\n});\n</script>\n\n<script lang=\"ts\">\nexport default {\n beforeRoute(params, villusClient) {\n return new Promise<void>((resolve, reject) => {\n villusClient\n .executeQuery({\n query: publicationPostQuery,\n variables: {\n slug: params.slug,\n },\n })\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n },\n};\n</script>\n\n<style lang=\"scss\" module>\n.publication {\n @include space-0-above;\n}\n\n@media (min-width: $break-point) {\n .content,\n .footer,\n .more {\n grid-column: 1 / span 8;\n }\n\n .featured-image,\n .header {\n grid-column: span 12;\n }\n\n .header {\n @include grid;\n\n > * {\n grid-column: 1 / span 8;\n }\n\n a {\n margin-left: 0;\n width: fit-content;\n }\n\n nav {\n grid-column: span 12;\n }\n }\n\n .publication {\n @include grid;\n }\n}\n</style>\n"],"names":["publicationPostQuery","gql","__default__","params","villusClient","resolve","reject","err","props","__props","handleError","useHandleError","setMetaDescription","setMetaTitle","useMetaData","post","ref","useQuery","data","dataLoaded"],"mappings":"sfAEO,MAAMA,EAAuBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CCgHrBC,EAAA,CACb,YAAYC,EAAQC,EAAc,CAChC,OAAO,IAAI,QAAc,CAACC,EAASC,IAAW,CAC5CF,EACG,aAAa,CACZ,MAAOJ,EACP,UAAW,CACT,KAAMG,EAAO,IAAA,CACf,CACD,EACA,KAAK,IAAME,GAAS,EACpB,MAAOE,GAAQD,EAAOC,CAAG,CAAC,CAAA,CAC9B,CAAA,CAEL,8DA1CA,MAAMC,EAAQC,EAIR,CAAE,YAAAC,CAAY,EAAIC,EAAe,EACjC,CAAE,mBAAAC,EAAoB,aAAAC,CAAa,EAAIC,EAAY,EAEnDC,EAAOC,EAAiB,EAAE,EAEf,OAAAC,EAAS,CACxB,OAAQC,GAAQ,CACVA,EAAK,aAAe,OAAO,KAAKA,EAAK,WAAW,EAAE,SACpDH,EAAK,MAAQG,EAAK,YACLA,EAAAA,EAAK,YAAY,KAAK,EAChBA,EAAAA,EAAK,YAAY,OAAO,EAChCC,EAAA,IAGT,CAACD,EAAK,aAAe,OAAO,KAAKA,EAAK,WAAW,EAAE,SAAW,IACpDR,EAAA,kBAAmBF,EAAM,IAAI,CAE7C,EACA,MAAOR,EACP,UAAW,CAAE,KAAMQ,EAAM,IAAK,CAC/B,CAAA"}