{"version":3,"mappings":"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","names":["limit","GuggenPagination","defineAsyncComponent","__vitePreload","props","__props","getFilters","useArtworkFilters","handleError","useHandleError","setMetaDescription","setMetaTitle","useMetaData","filters","ref","currentTag","computed","isArtist","results","isCategory","tag","searchTerm","getSubType","sub","hasBio","metaDescription","node","pageCount","part","termByCategoryQuery","gql","artworkNavQuery","paginationQuery","termQuery","artworkTermQuery","queryVariables","isFetching","useQuery","data","title","prepareTerm","nextTick","dataLoaded","paged","onMounted","getTermInfo","term","capitalize","category","currentBio","bio","prepareBio","word","bioBreak","bioParagraph","bioDouble","bioEstablished","artwork","cat"],"ignoreList":[],"sources":["../../src/components/artwork/ArtworkTerm.vue"],"sourcesContent":["<template>\n <article>\n <ArtworkNavHeader :active-filter=\"search\" :filters=\"filters\"></ArtworkNavHeader>\n <section :class=\"[$style.terms, 'container']\">\n <header v-if=\"results && results.artworks.nodes.length\">\n <h1 v-html=\"getTermInfo('name', true)\"></h1>\n </header>\n <div v-if=\"results && results.artworks.nodes.length\" :class=\"[$style.cards]\">\n <p\n v-if=\"isArtist && results.artworks.nodes[0].artists.nodes[0].dates\"\n :class=\"[$style.label, 'label']\"\n >\n {{ results.artworks.nodes[0].artists.nodes[0].dates[0].display }}\n </p>\n <ProcessContent\n v-if=\"hasBio\"\n :content=\"getTermInfo('bio')\"\n wrapper=\"section\"\n :class=\"[$style.bio, { [$style.artistBio]: isArtist }]\"\n ></ProcessContent>\n <section\n v-if=\"\n results.artworks.nodes.length &&\n results.artworks.nodes[0].artists.nodes[0].moduleHeader &&\n results.artworks.nodes[0].artists.nodes[0].exhibitionModule\n \"\n :class=\"[$style.module, 'space-24-32-above']\"\n >\n <h2\n v-if=\"\n results.artworks.nodes.length &&\n results.artworks.nodes[0].artists.nodes[0].moduleHeader\n \"\n >\n {{ results.artworks.nodes[0].artists.nodes[0].moduleHeader }}\n </h2>\n <ProcessContent\n v-if=\"\n results.artworks.nodes.length &&\n results.artworks.nodes[0].artists.nodes[0].exhibitionModule\n \"\n :content=\"results.artworks.nodes[0].artists.nodes[0].exhibitionModule\"\n ></ProcessContent>\n </section>\n <section class=\"space-24-32-above\">\n <h2 v-if=\"results.artworks.nodes.length && isArtist\">\n Artwork by {{ getTermInfo('name') }}\n </h2>\n <ArtworkGrid\n :data=\"results.artworks.nodes\"\n :show-artist=\"subtype !== 'artist'\"\n class=\"space-24-32-above\"\n ></ArtworkGrid>\n </section>\n </div>\n <GuggenPagination\n v-if=\"results\"\n :current-page=\"page\"\n :per-page=\"limit\"\n :sub-type=\"subtype\"\n :sub-type-value=\"search\"\n :total-page-count=\"pageCount\"\n post-type=\"artwork\"\n ></GuggenPagination>\n </section>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport ArtworkGrid from '@/components/artwork/ArtworkGrid.vue';\nimport ArtworkNavHeader from '@/components/artwork/ArtworkNavHeader.vue';\nimport { artworkNavQuery } from '@/queries/ArtworkNavQuery';\nimport { computed, defineAsyncComponent, nextTick, onMounted, ref } from 'vue';\nimport { dataLoaded, useHandleError, useMetaData } from '@/composables/Common.js';\nimport gql from 'graphql-tag';\nimport { paginationQuery } from '@/queries/PaginationQuery';\nimport ProcessContent from '@/components/common/ProcessContent.vue';\nimport { useArtworkFilters } from '@/composables/ArtworkFilters.js';\nimport { useQuery } from 'villus';\n\nconst GuggenPagination = defineAsyncComponent(() => import('@/components/GuggenPagination.vue'));\n\nconst props = withDefaults(\n defineProps<{\n page?: number;\n search?: string;\n subtype: string;\n }>(),\n { page: 1 },\n);\n\nconst { getFilters } = useArtworkFilters();\nconst { handleError } = useHandleError();\nconst { setMetaDescription, setMetaTitle } = useMetaData();\n\nconst filters = ref({});\nconst limit = 27;\n\nconst currentTag = computed(() => {\n if (isArtist.value) {\n return results.value.artworks.nodes[0].artists.nodes;\n }\n\n if (isCategory.value) {\n return results.value.artworks.nodes[0].categories.nodes.filter(\n (tag) => tag.slug === searchTerm.value,\n );\n }\n\n return results.value.artworks.nodes[0][`${getSubType.value}s`].nodes.filter(\n (tag) => tag.slug === searchTerm.value,\n );\n});\nconst getSubType = computed(() => {\n const sub = props.subtype.split('_');\n\n return sub.length > 1 ? `${sub[0]}${sub[1].charAt(0).toUpperCase()}${sub[1].slice(1)}` : sub[0];\n});\nconst hasBio = computed(\n () =>\n (isArtist.value && results.value.artworks.nodes[0].artists.nodes[0].bio) ||\n props.subtype === 'movement' ||\n props.subtype === 'special_collection' ||\n (props.subtype === 'site' && results.value.artworks.nodes[0][`${props.subtype}s`].nodes[0].bio),\n);\nconst isArtist = computed(() => props.subtype === 'artist');\nconst isCategory = computed(() => props.subtype === 'category');\nconst metaDescription = computed(() => {\n if (isArtist.value) {\n return results.value.artworks.nodes[0].artists.nodes;\n }\n\n if (isCategory.value) {\n return results.value.metaHub;\n }\n\n return results.value[`${getSubType.value}s`].nodes.filter((node) => node.description);\n});\nconst pageCount = computed(() => Math.ceil(results.value.totalCount / limit));\nconst searchTerm = computed(() => {\n // re: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes\n return (\n props.search &&\n props.search\n .split('-')\n .map((part) =>\n part\n .toLowerCase()\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, ''),\n )\n .join('-')\n );\n});\n\nconst termByCategoryQuery = gql`\n query getArtworksTermByCategory(\n $filter: String,\n $limit: Int!,\n $paged: Int,\n $path: String,\n $subType: String,\n $subTypeValue: String,\n $type: String\n ) {\n artworks(first: $limit, where: {\n paged: $paged,\n sortOrder: true,\n categoryName: \"${searchTerm.value}\"\n } ) {\n nodes {\n artists {\n nodes {\n name\n }\n }\n categories {\n nodes {\n description\n name\n slug\n }\n }\n featuredImage {\n node {\n altText\n sourceUrl\n }\n }\n imageSrcset\n slug\n title\n }\n }\n metaHub(targetPath: $path) {\n description\n image_alt\n image_src\n title\n }\n ${artworkNavQuery}\n ${paginationQuery}\n }\n`;\nconst termQuery = gql`\n query getArtworksTerm(\n $filter: String,\n $limit: Int!,\n $paged: Int,\n $subType: String,\n $subTypeValue: String,\n $type: String\n ) {\n artworks(first: $limit, where: {\n paged: $paged,\n sortOrder: true,\n ${getSubType.value}: \"${searchTerm.value}\"\n } ) {\n nodes {\n artists {\n nodes {\n dates {\n display\n }\n name\n }\n }\n featuredImage {\n node {\n altText\n sourceUrl\n }\n }\n imageSrcset\n slug\n title\n ${getSubType.value}s {\n nodes {\n bio\n description\n ${isArtist.value ? 'exhibitionModule' : ''}\n ${isArtist.value ? 'moduleHeader' : ''}\n name\n slug\n }\n }\n }\n }\n ${artworkNavQuery}\n ${paginationQuery}\n }\n`;\nconst artworkTermQuery = isCategory.value ? termByCategoryQuery : termQuery;\nconst queryVariables = {\n limit: limit,\n paged: +props.page,\n path: `/artwork/category/${props.search}`,\n subType: props.subtype,\n subTypeValue: props.search,\n type: 'artwork',\n};\n\nconst { data: results, isFetching } = useQuery({\n onData: (data) => {\n if (data && Object.keys(data).length && data.artworks.nodes.length) {\n const title = prepareTerm(data.artworks.nodes[0]);\n\n filters.value = getFilters(data);\n setMetaTitle(title);\n nextTick(() => {\n currentTag.value[0].description = metaDescription.value[0].description;\n currentTag.value[0].title = title;\n setMetaDescription(metaDescription.value[0].description);\n });\n dataLoaded();\n }\n\n if (!data || data.artworks.nodes.length === 0) {\n handleError('ArtworkTerm', `Page ${props.page}, limit ${limit}`);\n }\n },\n query: artworkTermQuery,\n skip: ({ paged }) => isNaN(paged),\n variables: queryVariables,\n});\n\nif (isNaN(props.page)) {\n handleError('ArtworkTerm', `Page ${props.page}, limit ${limit}`);\n}\n\nif (isNaN(props.page)) {\n handleError('ArtworkTerm', `Page ${props.page}, limit ${limit}`);\n}\n\nonMounted(() => dataLoaded(!isFetching.value));\n\nfunction getTermInfo(term: string, capitalize: boolean = false): string {\n if (props.subtype === 'category') {\n const category = results.value.artworks.nodes[0].categories.nodes.filter(\n (category) => category.slug === searchTerm.value,\n );\n\n return category[0].name;\n }\n\n if (props.subtype === 'decade') {\n return `Art from the ${searchTerm.value}`;\n }\n\n if (term === 'bio') {\n const currentBio = results.value.artworks.nodes[0][`${getSubType.value}s`].nodes.filter(\n (bio) => bio.slug === searchTerm.value,\n );\n\n return prepareBio(currentBio[0].bio);\n }\n\n if (capitalize) {\n const title = currentTag.value[0].name.split(' ');\n\n return title\n .map((word) => {\n return word === 'on' || word === 'of' ? word : word[0].toUpperCase() + word.substring(1);\n })\n .join(' ');\n }\n\n return currentTag.value[0].name;\n}\n\nfunction prepareBio(bio: string): string {\n // remove extra TMS collection bio information from view\n if (bio) {\n const bioBreak = /<p>.*?<br\\s*\\/*><br\\s*\\/*>/; // <p>b. ... <br><br>\n const bioParagraph = /<p>b\\..*?<\\/p>/; // <p>b. ... </p>\n const bioDouble = /<p>.*?<\\/*br>b\\..*?<\\/p>/; // multiple\n const bioEstablished = /<p>est.*?<\\/p>/; // \"established\"\n\n if (bioBreak.test(bio)) {\n return bio.replace(bioBreak, '<p>');\n }\n\n if (bioParagraph.test(bio)) {\n return bio.replace(bioParagraph, '');\n }\n\n if (bioDouble.test(bio)) {\n return bio.replace(bioDouble, '').replace(bioDouble, '');\n }\n\n if (bioEstablished.test(bio)) {\n return bio.replace(bioEstablished, '');\n }\n\n return bio;\n }\n\n return '';\n}\n\nfunction prepareTerm(artwork): string {\n if (isArtist.value) {\n return artwork.artists.nodes[0].name;\n }\n\n if (isCategory.value) {\n const category = artwork.categories.nodes.filter((cat) => cat.slug === searchTerm.value);\n\n return category[0].name;\n }\n\n const term = artwork[`${getSubType.value}s`].nodes.filter(\n (term) => term.slug === searchTerm.value,\n );\n\n if (props.subtype === 'decade') {\n return `Art from the ${term[0].name}`;\n }\n\n return term[0].name;\n}\n</script>\n\n<style lang=\"scss\" module>\n.module {\n :global(.module) {\n margin-top: 1rem;\n }\n}\n\n.terms {\n margin-top: 0;\n\n h2 {\n margin-top: 0;\n }\n}\n\n@media (min-width: $break-point) {\n .terms {\n @include grid;\n @include space-24-32-above;\n\n > header {\n grid-column: 1 / span 8;\n }\n\n .back,\n .cards {\n grid-column: span 12;\n }\n\n .cards {\n @include grid;\n\n > * {\n grid-column: span 12;\n }\n\n > nav,\n .bio,\n .label {\n grid-column: 1 / span 8;\n }\n\n .bio {\n > p {\n margin-top: 0;\n }\n\n &.artist-bio {\n p {\n margin-top: 1rem;\n }\n }\n }\n\n .label {\n margin-top: 0;\n }\n\n .module {\n grid-column: 1 / span 8;\n }\n }\n\n .discover-more {\n grid-column: 1 / span 8;\n }\n\n h1 {\n margin-top: 0;\n }\n }\n}\n</style>\n"],"file":"assets/ArtworkTerm-CciVsn0p.js"}