{"version":3,"file":"PublicationAuthors-BUVrLWDZ.js","sources":["../../src/components/publication/PublicationAuthors.vue"],"sourcesContent":["<template>\n <div>\n <div :class=\"$style.authors\">\n <ul v-if=\"filteredAuthors(data, 'primary_author').length\" class=\"body-1\">\n <li\n v-for=\"(author, index) in filteredAuthors(data, 'primary_author')\"\n :key=\"index\"\n :class=\"$style.author\"\n >\n <router-link\n :to=\"{\n name: 'PublicationTaxSection',\n params: {\n slug: author.slug,\n subtype: 'publication_author',\n },\n }\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'author_name',\n component: `${parent}`,\n content_group: 'publication',\n gtm_tag: 'link',\n link_text: `${author.name}`,\n link_url: `${author.slug}`,\n })\n \"\n >\n {{ author.name }}\n </router-link>\n </li>\n </ul>\n <div v-if=\"filteredAuthors(data, 'primary_editor').length\">\n <span class=\"body-1\">Edited by </span>\n <ul class=\"body-1\">\n <li\n v-for=\"(author, index) in filteredAuthors(data, 'primary_editor').sort((a, b) =>\n a.sort.localeCompare(b.sort)\n )\"\n :key=\"index\"\n :class=\"$style.author\"\n >\n <router-link\n :to=\"{\n name: 'PublicationTaxSection',\n params: {\n slug: author.slug,\n subtype: 'publication_author',\n },\n }\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'author_name',\n component: `${parent}`,\n content_group: 'publication',\n gtm_tag: 'link',\n link_text: `${author.name}`,\n link_url: `${author.slug}`,\n })\n \"\n >\n {{ author.name }}\n </router-link>\n </li>\n </ul>\n </div>\n <div v-if=\"filteredAuthors(data, 'contributor').length\">\n <span class=\"body-1\">With contributions by </span>\n <ul class=\"body-1\">\n <li\n v-for=\"(author, index) in prepareContributors(data)\"\n :key=\"index\"\n :class=\"$style.author\"\n >\n <router-link\n :to=\"{\n name: 'PublicationTaxSection',\n params: {\n slug: author.slug,\n subtype: 'publication_author',\n },\n }\"\n :ga4-event=\"\n JSON.stringify({\n click_type: 'author_name',\n component: `${parent}`,\n content_group: 'publication',\n gtm_tag: 'link',\n link_text: `${author.name}`,\n link_url: `${author.slug}`,\n })\n \"\n >\n {{ author.name }}\n </router-link>\n </li>\n </ul>\n <span\n v-if=\"filteredAuthors(data, 'contributor').length > 6 && (isArchive || isSummary)\"\n >\n …\n </span>\n </div>\n </div>\n <p v-if=\"!isSummary\" class=\"body-1 space-12-16-above\">\n Published in {{ data[getPubData].publication_year }}\n </p>\n <div v-if=\"!isSummary\" class=\"body-1 space-12-16-above\">\n <div v-if=\"data[getPubData].num_pages\">\n {{ data[getPubData].num_pages }} pages<span v-if=\"data[getPubData].fully_illustrated\">, fully illustrated</span>\n <span v-if=\"data[getPubData].fully_illustrated && data[getPubData].num_illustrations\"> </span>\n <span v-if=\"data[getPubData].num_illustrations\">\n with {{ data[getPubData].num_illustrations }} illustrations\n </span>\n </div>\n <div v-if=\"data[getPubData].hardcover || data[getPubData].softcover\">\n <span v-if=\"data[getPubData].hardcover\">Hardcover</span>\n <span v-if=\"data[getPubData].hardcover && data[getPubData].softcover\">, </span>\n <span v-if=\"data[getPubData].softcover\">Softcover</span>\n </div>\n <div v-if=\"data[getPubData].height && data[getPubData].width\">\n {{ data[getPubData].width }} × {{ data[getPubData].height }} inches\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Publication } from '@/types/publication.interface';\nimport { useRouteParent } from '@/composables/Common.js';\n\nconst props = defineProps<{\n data: Publication;\n isArchive?: boolean;\n isSummary?: boolean;\n search?: boolean;\n}>();\n\nconst { parent } = useRouteParent();\n\nconst getPubData = computed(() => (props.search ? 'publication_data' : 'publicationData'));\n\nfunction filteredAuthors(pub: Publication, filterby: string): Array<Publication> {\n const authors = [];\n const filteredAuthors = pub[getPubData.value].authors.filter(\n (author) => author.type === filterby\n );\n const searchTarget = props.search ? pub.publication_author : pub.publicationAuthors.nodes;\n const searchId = props.search ? 'id' : 'publication_authorId';\n\n filteredAuthors.forEach((author) => {\n const match = searchTarget.find((pubauth) => pubauth[searchId] === parseInt(author.author));\n\n if (match) {\n authors.push(match);\n }\n });\n\n return authors;\n}\n\nfunction prepareContributors(data: Publication): Publication {\n const contributors = filteredAuthors(data, 'contributor').sort((a, b) =>\n a.sort.localeCompare(b.sort)\n );\n\n if (contributors.length > 6 && (props.isArchive || props.isSummary)) {\n return contributors.slice(0, 6);\n }\n\n return contributors;\n}\n</script>\n\n<style lang=\"scss\" module>\n.author {\n display: inline-block;\n list-style: none;\n\n a {\n text-decoration: underline;\n\n &:focus {\n color: $white;\n text-decoration: underline;\n }\n }\n\n &:hover {\n text-decoration: underline;\n }\n\n &:not(:last-of-type)::after {\n content: ',';\n margin-right: px-to-rem(4.25); // 0.25em\n }\n}\n\n.authors {\n ul {\n display: inline;\n margin-left: 0;\n margin-top: 0;\n padding-left: 0;\n }\n}\n</style>\n"],"names":["props","__props","parent","useRouteParent","getPubData","computed","filteredAuthors","pub","filterby","authors","author","searchTarget","searchId","match","pubauth","prepareContributors","data","contributors","a","b"],"mappings":"8kBAoIA,MAAMA,EAAQC,EAOR,CAAE,OAAAC,CAAO,EAAIC,EAAe,EAE5BC,EAAaC,EAAS,IAAOL,EAAM,OAAS,mBAAqB,iBAAkB,EAEhF,SAAAM,EAAgBC,EAAkBC,EAAsC,CAC/E,MAAMC,EAAU,CAAC,EACXH,EAAkBC,EAAIH,EAAW,KAAK,EAAE,QAAQ,OACnDM,GAAWA,EAAO,OAASF,CAC9B,EACMG,EAAeX,EAAM,OAASO,EAAI,mBAAqBA,EAAI,mBAAmB,MAC9EK,EAAWZ,EAAM,OAAS,KAAO,uBAEvCM,OAAAA,EAAgB,QAASI,GAAW,CAC5B,MAAAG,EAAQF,EAAa,KAAMG,GAAYA,EAAQF,CAAQ,IAAM,SAASF,EAAO,MAAM,CAAC,EAEtFG,GACFJ,EAAQ,KAAKI,CAAK,CACpB,CACD,EAEMJ,CAAA,CAGT,SAASM,EAAoBC,EAAgC,CAC3D,MAAMC,EAAeX,EAAgBU,EAAM,aAAa,EAAE,KAAK,CAACE,EAAGC,IACjED,EAAE,KAAK,cAAcC,EAAE,IAAI,CAC7B,EAEA,OAAIF,EAAa,OAAS,IAAMjB,EAAM,WAAaA,EAAM,WAChDiB,EAAa,MAAM,EAAG,CAAC,EAGzBA,CAAA"}