{"version":3,"file":"VideoTaxonomy-l_DLzNjE.js","sources":["../../src/queries/GetVideoTaxonomy.js","../../src/components/video/VideoTaxonomy.vue"],"sourcesContent":["import gql from 'graphql-tag';\nimport { paginationQuery } from '@/queries/PaginationQuery';\nimport { videoPosts } from '@/queries/VideoFragment';\n\nexport const videoTaxonomyQuery = gql`\n  query GetVideos(\n    $category: String,\n    $filter: String,\n    $limit: Int!,\n    $paged: Int,\n    $subType: String,\n    $subTypeValue: String,\n    $tag: String,\n    $type: String\n  ) {\n    videos(first: $limit, where: { tag: $tag, categoryName: $category, paged: $paged }) {\n      ${videoPosts}\n    }\n    ${paginationQuery}\n  }\n`;\n","<template>\n  <section v-if=\"results.videos.nodes.length\" :class=\"[$style.videoSection, 'container']\">\n    <nav>\n      <BackLink component=\"VideoTaxonomy\" group=\"video\" label=\"Video\" name=\"Video\"></BackLink>\n    </nav>\n    <h1>{{ `Videos Tagged as ${getTitle}` }}</h1>\n    <VideoGrid :posts=\"results.videos.nodes\"></VideoGrid>\n    <GuggenPagination\n      :bootstrap-total=\"total\"\n      :current-page=\"page\"\n      :has-bootstrap=\"total > 0\"\n      :per-page=\"limit\"\n      :sub-type=\"type\"\n      :sub-type-value=\"slug\"\n      :total-page-count=\"pageCount\"\n      post-type=\"video\"\n    ></GuggenPagination>\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport BackLink from '@/components/common/BackLink.vue';\nimport { BootStrap } from '@/types/global.interface';\nimport { computed, inject, ref } from 'vue';\nimport { dataLoaded, useHandleError, useMetaData } from '@/composables/Common.js';\nimport GuggenPagination from '@/components/GuggenPagination.vue';\nimport { slugToTitle } from '@/utils';\nimport { storeToRefs } from 'pinia';\nimport { useMainStore } from '@/stores/mainStore.js';\nimport { useQuery } from 'villus';\nimport VideoGrid from '@/components/video/VideoGrid.vue';\nimport { videoTaxonomyQuery } from '@/queries/GetVideoTaxonomy';\n\nconst props = withDefaults(\n  defineProps<{\n    page?: number;\n    slug: string;\n    type: string;\n  }>(),\n  { page: 1 },\n);\n\nconst bootstrap = inject<BootStrap>('bootstrap');\n\nconst { handleError } = useHandleError();\nconst { setMetaDescription, setMetaTitle } = useMetaData();\n\nconst store = useMainStore();\nconst { useBootstrap } = storeToRefs(store);\n\nconst limit = 27;\nconst results = ref({\n  totalCount: 0,\n  videos: {\n    nodes: [],\n  },\n});\nconst shouldSkip = ref(true);\nconst total = ref(0);\n\nconst getTitle = computed(() => slugToTitle(props.slug));\nconst pageCount = computed(() => Math.ceil(total.value / limit));\n\nconst { data } = useQuery({\n  onData: (data) => {\n    if (Object.keys(data).length) {\n      if (data.videos.nodes.length) {\n        results.value.videos = data.videos;\n        total.value = +data.totalCount;\n        setMetaTitle('Video');\n        setMetaDescription();\n        dataLoaded();\n      }\n\n      if (data.videos.nodes.length === 0) {\n        handleError('VideoTaxonomy', `Page ${props.page}, limit ${limit}, slug ${props.slug}`);\n      }\n    }\n  },\n  query: videoTaxonomyQuery,\n  skip: isNaN(props.page) || shouldSkip,\n  variables: {\n    category: props.type === 'category' ? props.slug : null,\n    limit: limit,\n    paged: +props.page,\n    subType: props.type === 'tag' ? 'post_tag' : props.type,\n    subTypeValue: props.slug,\n    tag: props.type === 'tag' ? props.slug : null,\n    type: 'video',\n  },\n});\n\nif (useBootstrap.value) {\n  shouldSkip.value = true;\n\n  if (bootstrap.initial.main.posts && Object.keys(bootstrap.initial.main.posts).length) {\n    results.value.videos.nodes = bootstrap.initial.main.posts;\n    total.value = +bootstrap.initial.main.pagination.total_posts;\n    setMetaTitle(getTitle.value);\n    setMetaDescription();\n    dataLoaded();\n  }\n\n  if (!bootstrap.initial.main.posts || Object.keys(bootstrap.initial.main.posts).length === 0) {\n    shouldSkip.value = false;\n  }\n}\n\nif (!useBootstrap.value) {\n  shouldSkip.value = false;\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: videoTaxonomyQuery,\n          variables: {\n            category: params.type === 'category' ? params.slug : null,\n            limit: 27,\n            paged: params.page ? +params.page : 1,\n            subType: params.type === 'tag' ? 'post_tag' : params.type,\n            subTypeValue: params.slug,\n            tag: params.type === 'tag' ? params.slug : null,\n            type: 'video',\n          },\n        })\n        .then(() => resolve())\n        .catch((err) => reject(err));\n    });\n  },\n};\n</script>\n\n<style lang=\"scss\" module>\n.videoSection {\n  > span {\n    display: block;\n  }\n}\n\n@media (min-width: $break-point) {\n  .videoSection {\n    @include grid;\n\n    > * {\n      grid-column: span 12;\n    }\n  }\n}\n</style>\n"],"names":["videoTaxonomyQuery","gql","videoPosts","paginationQuery","__default__","params","villusClient","resolve","reject","err","props","__props","bootstrap","inject","handleError","useHandleError","setMetaDescription","setMetaTitle","useMetaData","store","useMainStore","useBootstrap","storeToRefs","limit","results","ref","shouldSkip","total","getTitle","computed","slugToTitle","pageCount","useQuery","data","dataLoaded"],"mappings":"ufAIO,MAAMA,EAAqBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAY1BC,CAAU;AAAA;AAAA,MAEZC,CAAe;AAAA;AAAA,ECgGNC,EAAA,CACb,YAAYC,EAAQC,EAAc,CAChC,OAAO,IAAI,QAAc,CAACC,EAASC,IAAW,CAC5CF,EACG,aAAa,CACZ,MAAON,EACP,UAAW,CACT,SAAUK,EAAO,OAAS,WAAaA,EAAO,KAAO,KACrD,MAAO,GACP,MAAOA,EAAO,KAAO,CAACA,EAAO,KAAO,EACpC,QAASA,EAAO,OAAS,MAAQ,WAAaA,EAAO,KACrD,aAAcA,EAAO,KACrB,IAAKA,EAAO,OAAS,MAAQA,EAAO,KAAO,KAC3C,KAAM,OAAA,CACR,CACD,EACA,KAAK,IAAME,GAAS,EACpB,MAAOE,GAAQD,EAAOC,CAAG,CAAC,CAAA,CAC9B,CAAA,CAEL,qFArGA,MAAMC,EAAQC,EASRC,EAAYC,EAAkB,WAAW,EAEzC,CAAE,YAAAC,CAAY,EAAIC,EAAe,EACjC,CAAE,mBAAAC,EAAoB,aAAAC,CAAa,EAAIC,EAAY,EAEnDC,EAAQC,EAAa,EACrB,CAAE,aAAAC,CAAA,EAAiBC,EAAYH,CAAK,EAEpCI,EAAQ,GACRC,EAAUC,EAAI,CAClB,WAAY,EACZ,OAAQ,CACN,MAAO,CAAA,CAAC,CACV,CACD,EACKC,EAAaD,EAAI,EAAI,EACrBE,EAAQF,EAAI,CAAC,EAEbG,EAAWC,EAAS,IAAMC,EAAYpB,EAAM,IAAI,CAAC,EACjDqB,EAAYF,EAAS,IAAM,KAAK,KAAKF,EAAM,MAAQJ,CAAK,CAAC,EAE9C,OAAAS,EAAS,CACxB,OAASC,GAAS,CACZ,OAAO,KAAKA,CAAI,EAAE,SAChBA,EAAK,OAAO,MAAM,SACZT,EAAA,MAAM,OAASS,EAAK,OACtBN,EAAA,MAAQ,CAACM,EAAK,WACpBhB,EAAa,OAAO,EACDD,EAAA,EACRkB,EAAA,GAGTD,EAAK,OAAO,MAAM,SAAW,GACnBnB,EAAA,gBAAiB,QAAQJ,EAAM,IAAI,WAAWa,CAAK,UAAUb,EAAM,IAAI,EAAE,EAG3F,EACA,MAAOV,EACP,KAAM,MAAMU,EAAM,IAAI,GAAKgB,EAC3B,UAAW,CACT,SAAUhB,EAAM,OAAS,WAAaA,EAAM,KAAO,KACnD,MAAAa,EACA,MAAO,CAACb,EAAM,KACd,QAASA,EAAM,OAAS,MAAQ,WAAaA,EAAM,KACnD,aAAcA,EAAM,KACpB,IAAKA,EAAM,OAAS,MAAQA,EAAM,KAAO,KACzC,KAAM,OAAA,CAET,CAAA,EAEGW,EAAa,QACfK,EAAW,MAAQ,GAEfd,EAAU,QAAQ,KAAK,OAAS,OAAO,KAAKA,EAAU,QAAQ,KAAK,KAAK,EAAE,SAC5EY,EAAQ,MAAM,OAAO,MAAQZ,EAAU,QAAQ,KAAK,MACpDe,EAAM,MAAQ,CAACf,EAAU,QAAQ,KAAK,WAAW,YACjDK,EAAaW,EAAS,KAAK,EACRZ,EAAA,EACRkB,EAAA,IAGT,CAACtB,EAAU,QAAQ,KAAK,OAAS,OAAO,KAAKA,EAAU,QAAQ,KAAK,KAAK,EAAE,SAAW,KACxFc,EAAW,MAAQ,KAIlBL,EAAa,QAChBK,EAAW,MAAQ"}