{"version":3,"file":"ArtworkTermArtist-D6NTR-Zw.js","sources":["../../src/queries/GetArtworkTermArtist.js","../../src/queries/MetaHubQuery.js","../../src/components/artwork/ArtworkTermArtist.vue"],"sourcesContent":["import { artworkNavQuery } from '@/queries/ArtworkNavQuery';\nimport gql from 'graphql-tag';\n\nexport const artworkTermArtistQuery = gql`\n  query getArtists {\n    artists(first: 1000) {\n      nodes {\n        name\n        slug\n        sort\n      }\n    }\n    ${artworkNavQuery}\n  }\n`;\n","export const metaHubQuery = `\n  query getMetaHub(\n    $path: String\n  ) {\n    metaHub(targetPath: $path) {\n      path\n      description\n      image_alt\n      image_src\n      title\n    }\n  }\n`;\n","<template>\n  <article :class=\"[$style.artists, 'container']\">\n    <ArtworkNavHeader :filters=\"filters\"></ArtworkNavHeader>\n    <header>\n      <h1>Artists</h1>\n    </header>\n    <section v-if=\"results || Object.keys(mapped).length\" class=\"space-24-32-above\">\n      <div\n        v-for=\"(sorted, key, index) in mapped\"\n        :id=\"key\"\n        :key=\"key\"\n        :aria-label=\"`Artists ${key}`\"\n      >\n        <h2>\n          {{ key }}\n        </h2>\n        <ul>\n          <li v-for=\"(artist, idx) in sorted\" :key=\"`${index}${idx}`\" class=\"space-12-16-above\">\n            <router-link\n              :to=\"{\n                name: 'ArtworkTerm',\n                params: {\n                  subtype: 'artist',\n                  search: artist.slug,\n                },\n              }\"\n              v-html=\"artist.name\"\n            ></router-link>\n          </li>\n        </ul>\n      </div>\n    </section>\n  </article>\n  <BackToTop></BackToTop>\n</template>\n\n<script setup lang=\"ts\">\nimport ArtworkNavHeader from '@/components/artwork/ArtworkNavHeader.vue';\nimport { artworkTermArtistQuery } from '@/queries/GetArtworkTermArtist';\nimport BackToTop from '@/components/common/BackToTop.vue';\nimport { BootStrap } from '@/types/global.interface';\nimport { dataLoaded, useHandleError, useMetaData } from '@/composables/Common.js';\nimport { inject, onMounted, ref } from 'vue';\nimport { metaHubQuery } from '@/queries/MetaHubQuery';\nimport { storeToRefs } from 'pinia';\nimport { useArtworkFilters } from '@/composables/ArtworkFilters.js';\nimport { useMainStore } from '@/stores/mainStore';\nimport { useQuery } from 'villus';\nimport { useRoute } from 'vue-router';\n\ninterface Artists {\n  nodes: Array<{\n    name: string;\n    slug: string;\n    sort?: string;\n  }>;\n}\n\nconst bootstrap = inject<BootStrap>('bootstrap');\n\nconst filters = ref({});\nconst mapped = ref({});\nconst shouldSkip = ref(false);\n\nconst store = useMainStore();\nconst { useBootstrap } = storeToRefs(store);\n\nconst { getFilters } = useArtworkFilters();\nconst { handleError } = useHandleError();\nconst route = useRoute();\nconst { setMetaDescription, setMetaTitle } = useMetaData();\n\nconst { data } = useQuery({\n  query: metaHubQuery,\n  skip: shouldSkip,\n  variables: { path: '/artwork/artist' },\n  onData: (data) => {\n    if (data) {\n      const { description, title } = data.metaHub[0];\n\n      setMetaTitle(title);\n      setMetaDescription(description);\n    }\n  },\n});\n\nconst { data: results, isFetching } = useQuery({\n  onData: (data) => {\n    if (data && Object.keys(data).length && data.artists.nodes.length) {\n      filters.value = getFilters(data);\n      prepareData(data.artists);\n      dataLoaded();\n\n      if (route.hash) {\n        requestAnimationFrame(() => {\n          requestAnimationFrame(() => {\n            scroll(document.querySelector(route.hash));\n          });\n        });\n      }\n    }\n\n    if (!data.artists.nodes.length) {\n      handleError('ArtworkTermArtist', 'Page Artist');\n    }\n  },\n  query: artworkTermArtistQuery,\n  skip: shouldSkip,\n});\n\nonMounted(() => {\n  if (!useBootstrap.value) {\n    dataLoaded(!isFetching.value);\n  }\n});\n\nif (useBootstrap.value) {\n  const { description, title } = bootstrap.initial.main.posts.metaHub[0];\n\n  shouldSkip.value = true;\n  filters.value = getFilters(bootstrap.initial.main.posts);\n  prepareData(bootstrap.initial.main.posts.artists);\n  setMetaTitle(title);\n  setMetaDescription(description);\n  dataLoaded();\n\n  if (route.hash) {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        scroll(document.querySelector(route.hash));\n      });\n    });\n  }\n}\n\nif (!useBootstrap.value) {\n  shouldSkip.value = false;\n  dataLoaded(!isFetching.value);\n}\n\nfunction prepareData(artists: Artists): void {\n  mapped.value = artists.nodes.reduce((acc, curr) => {\n    if (curr.sort && curr.sort !== '') {\n      const key = curr.sort[0].toUpperCase();\n\n      acc[key] ??= [];\n      acc[key].push(curr);\n    }\n\n    return acc;\n  }, {});\n}\n\nfunction scroll(target) {\n  if (target) {\n    const marginTop = parseFloat(getComputedStyle(target).marginTop);\n\n    window.scrollTo(0, target.offsetTop - marginTop - 100);\n  }\n}\n</script>\n\n<style lang=\"scss\" module>\n.artists {\n  section {\n    ul {\n      margin-left: 0;\n      margin-top: 1rem;\n      padding: 0;\n\n      li {\n        list-style: none;\n\n        &:first-child {\n          margin-top: 0;\n        }\n\n        a {\n          @include body-1;\n\n          & {\n            display: inline-block;\n            overflow: auto;\n            text-decoration: none;\n          }\n\n          &:hover {\n            text-decoration: underline;\n          }\n        }\n      }\n    }\n  }\n}\n\n@media (min-width: $break-point) {\n  .artists {\n    section {\n      ul {\n        column-count: 4;\n      }\n    }\n  }\n}\n</style>\n"],"names":["artworkTermArtistQuery","gql","artworkNavQuery","metaHubQuery","bootstrap","inject","filters","ref","mapped","shouldSkip","store","useMainStore","useBootstrap","storeToRefs","getFilters","useArtworkFilters","handleError","useHandleError","route","useRoute","setMetaDescription","setMetaTitle","useMetaData","useQuery","data","description","title","results","isFetching","prepareData","dataLoaded","scroll","onMounted","artists","acc","curr","key","target","marginTop"],"mappings":"2bAGO,MAAMA,EAAyBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAShCC,CAAe;AAAA;AAAA,ECZRC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wGC0DtB,MAAAC,EAAYC,EAAkB,WAAW,EAEzCC,EAAUC,EAAI,EAAE,EAChBC,EAASD,EAAI,EAAE,EACfE,EAAaF,EAAI,EAAK,EAEtBG,EAAQC,EAAa,EACrB,CAAE,aAAAC,CAAA,EAAiBC,EAAYH,CAAK,EAEpC,CAAE,WAAAI,CAAW,EAAIC,EAAkB,EACnC,CAAE,YAAAC,CAAY,EAAIC,EAAe,EACjCC,EAAQC,EAAS,EACjB,CAAE,mBAAAC,EAAoB,aAAAC,CAAa,EAAIC,EAAY,EAExCC,EAAS,CACxB,MAAOpB,EACP,KAAMM,EACN,UAAW,CAAE,KAAM,iBAAkB,EACrC,OAASe,GAAS,CAChB,GAAIA,EAAM,CACR,KAAM,CAAE,YAAAC,EAAa,MAAAC,CAAA,EAAUF,EAAK,QAAQ,CAAC,EAE7CH,EAAaK,CAAK,EAClBN,EAAmBK,CAAW,CAAA,CAChC,CAEH,CAAA,EAED,KAAM,CAAE,KAAME,EAAS,WAAAC,CAAA,EAAeL,EAAS,CAC7C,OAASC,GAAS,CACZA,GAAQ,OAAO,KAAKA,CAAI,EAAE,QAAUA,EAAK,QAAQ,MAAM,SACjDlB,EAAA,MAAQQ,EAAWU,CAAI,EAC/BK,EAAYL,EAAK,OAAO,EACbM,EAAA,EAEPZ,EAAM,MACR,sBAAsB,IAAM,CAC1B,sBAAsB,IAAM,CAC1Ba,EAAO,SAAS,cAAcb,EAAM,IAAI,CAAC,CAAA,CAC1C,CAAA,CACF,GAIAM,EAAK,QAAQ,MAAM,QACtBR,EAAY,oBAAqB,aAAa,CAElD,EACA,MAAOhB,EACP,KAAMS,CAAA,CACP,EAQD,GANAuB,EAAU,IAAM,CACTpB,EAAa,OACLkB,EAAA,CAACF,EAAW,KAAK,CAC9B,CACD,EAEGhB,EAAa,MAAO,CAChB,KAAA,CAAE,YAAAa,EAAa,MAAAC,CAAM,EAAItB,EAAU,QAAQ,KAAK,MAAM,QAAQ,CAAC,EAErEK,EAAW,MAAQ,GACnBH,EAAQ,MAAQQ,EAAWV,EAAU,QAAQ,KAAK,KAAK,EACvDyB,EAAYzB,EAAU,QAAQ,KAAK,MAAM,OAAO,EAChDiB,EAAaK,CAAK,EAClBN,EAAmBK,CAAW,EACnBK,EAAA,EAEPZ,EAAM,MACR,sBAAsB,IAAM,CAC1B,sBAAsB,IAAM,CAC1Ba,EAAO,SAAS,cAAcb,EAAM,IAAI,CAAC,CAAA,CAC1C,CAAA,CACF,CACH,CAGGN,EAAa,QAChBH,EAAW,MAAQ,GACRqB,EAAA,CAACF,EAAW,KAAK,GAG9B,SAASC,EAAYI,EAAwB,CAC3CzB,EAAO,MAAQyB,EAAQ,MAAM,OAAO,CAACC,EAAKC,IAAS,CACjD,GAAIA,EAAK,MAAQA,EAAK,OAAS,GAAI,CACjC,MAAMC,EAAMD,EAAK,KAAK,CAAC,EAAE,YAAY,EAEjCD,EAAAE,KAAAF,EAAAE,GAAS,CAAC,GACVF,EAAAE,CAAG,EAAE,KAAKD,CAAI,CAAA,CAGb,OAAAD,CACT,EAAG,EAAE,CAAA,CAGP,SAASH,EAAOM,EAAQ,CACtB,GAAIA,EAAQ,CACV,MAAMC,EAAY,WAAW,iBAAiBD,CAAM,EAAE,SAAS,EAE/D,OAAO,SAAS,EAAGA,EAAO,UAAYC,EAAY,GAAG,CAAA,CACvD"}