{"version":3,"file":"TeachingMaterialsFragments-CNrxRydm.js","sources":["../../src/composables/TeachingMaterials.js","../../src/components/teachingMaterials/TeachingMaterialsArticle.vue","../../src/components/teachingMaterials/TeachingMaterialsDrawer.vue","../../src/components/teachingMaterials/TeachingMaterialsFeaturedItems.vue","../../src/components/teachingMaterials/TeachingMaterialsFeatureShowcase.vue","../../src/queries/TeachingMaterialsFragments.js"],"sourcesContent":["export function useTeachingMaterials() {\n  const metaDescription =\n    'Free teaching materials for educators to use during visits to the museum and in the classroom.';\n\n  const findInfo = (key, item, instance) => {\n    const type = key.split('_')[1];\n    const resource = item === 'tmPackage' ? 'tmPackagePageElements' : 'tmTopicPageElements';\n\n    if (instance.exposed[item] && instance.exposed[item].value[resource]) {\n      return instance.exposed[item].value[resource][key][type];\n    }\n\n    return [];\n  };\n\n  const getPromptCount = ({ associatedTopics: topics }) => {\n    let count = 0;\n\n    if (topics && topics.length) {\n      topics.forEach((item) => {\n        if (\n          (item.topic.caCount || item.topic.vdCount) &&\n          (item.topic.caCount > 0 || item.topic.vdCount > 0)\n        ) {\n          count += 1;\n        }\n      });\n    }\n\n    return count;\n  };\n\n  return { metaDescription, findInfo, getPromptCount };\n}\n","<template>\n  <div>\n    <article v-for=\"(item, index) in items\" :key=\"index\" class=\"space-48-64-above\">\n      <div :class=\"$style.results\">\n        <router-link\n          v-if=\"item.featuredImage\"\n          :to=\"getPath(item)\"\n          :class=\"[isFiltered ? 'span-six' : 'span-eight', 'aspect-container']\"\n          :ga4-event=\"\n            JSON.stringify({\n              click_type: 'hero',\n              component: 'TeachingMaterialsArticle',\n              content_group: 'teaching_materials',\n              gtm_tag: 'linked_image',\n              file_name: `${item.featuredImage.node.sourceUrl.split('/').pop()}`,\n              link_url: `${getPath(item)}`,\n            })\n          \"\n        >\n          <picture>\n            <img\n              v-if=\"item.featuredImage\"\n              :alt=\"item.featuredImage.node.altText\"\n              :src=\"proxySource(item.featuredImage.node.sourceUrl, 840)\"\n              :srcset=\"item.imageSrcset\"\n              class=\"aspect-image\"\n              loading=\"lazy\"\n              sizes=\"(min-width: 960px) 870px, 100vw\"\n            />\n          </picture>\n        </router-link>\n        <div :class=\"[$style.info, isFiltered ? 'span-six' : 'span-four', 'space-12-16-above']\">\n          <h3>\n            <router-link :to=\"getPath(item)\" v-html=\"item.title\"> </router-link>\n          </h3>\n          <p\n            v-if=\"item.packageParent\"\n            :class=\"$style.from\"\n            v-html=\"`From: ${item.packageParent.title}`\"\n          ></p>\n          <p v-if=\"!isModule\" :class=\"$style.from\">Includes: {{ getIncluded(item) }}</p>\n          <div :class=\"[$style.excerpt, 'space-12-16-above']\" v-html=\"item.excerpt\"></div>\n          <router-link :to=\"getPath(item)\" :class=\"[moreLink, $style.explore]\">\n            Explore the materials\n          </router-link>\n          <div\n            v-if=\"\n              (item.imageCount && item.__typename !== 'Tm_package') ||\n              (item.videoCount && item.__typename !== 'Tm_package') ||\n              (item.associatedTopics && item.associatedTopics.length)\n            \"\n            :class=\"$style.resources\"\n          >\n            <p v-if=\"item.imageCount && item.__typename !== 'Tm_package'\">\n              Images: {{ item.imageCount }}\n            </p>\n            <p v-if=\"item.videoCount && item.__typename !== 'Tm_package'\">\n              Video: {{ item.videoCount }}\n            </p>\n            <p v-if=\"item.associatedTopics && item.associatedTopics.length\">\n              Topics with View and Discuss and Classroom Activities Prompts:\n              {{ getPromptCount(item) }}\n            </p>\n            <p\n              v-if=\"item.type === 'survey' && item.tmPackagePageElements.whats_included\"\n              v-html=\"item.tmPackagePageElements.whats_included\"\n            ></p>\n          </div>\n        </div>\n      </div>\n    </article>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { moreLink } from '@/styles/links.module.scss';\nimport { Package } from '@/types/teachingMaterials.interface';\nimport { useImageProxy } from '@/composables/Common.js';\nimport { useTeachingMaterials } from '@/composables/TeachingMaterials.js';\n\ninterface Path {\n  name: string;\n  params: {\n    parent?: string;\n    slug: string;\n  };\n}\n\nconst props = withDefaults(\n  defineProps<{\n    content: Array<Package>;\n    filters?: Array<string>;\n    isFiltered?: boolean;\n    isFull?: boolean;\n    isModule?: boolean;\n    type?: string;\n  }>(),\n  {\n    isFiltered: false,\n    isFull: true,\n    isModule: false,\n  }\n);\n\nconst { getPromptCount } = useTeachingMaterials();\nconst { proxySource } = useImageProxy();\n\nconst items = computed(() => {\n  if (!props.isFull) {\n    return props.content.slice(0, 2);\n  }\n\n  return props.content;\n});\n\nfunction getIncluded(resource: Package): string {\n  if (props.filters && props.filters.length) {\n    const matches = props.filters\n      .filter((filter) =>\n        resource[`teachingMaterial${props.type}`].nodes.find((item) => item.slug === filter)\n      )\n      .map((match) => match.replace(/-/g, ' '));\n\n    return matches.length ? matches.join(', ') : '';\n  }\n\n  return '';\n}\n\nfunction getPath(item: Package): Path {\n  if (item.packageParent && Object.keys(item.packageParent).length) {\n    return {\n      name: 'TeachingMaterialsTopic',\n      params: { parent: item.packageParent.slug, slug: decodeURI(item.slug) },\n    };\n  }\n\n  return { name: 'TeachingMaterialsPackage', params: { slug: item.slug } };\n}\n</script>\n\n<style lang=\"scss\" module>\n.border-bottom {\n  border-bottom: 1px solid $black;\n  display: block;\n  margin-top: 1rem;\n  padding-bottom: 1rem;\n  text-decoration: none;\n}\n\n.excerpt {\n  p {\n    margin-top: 0;\n  }\n}\n\n.explore {\n  display: inline-block;\n  margin-top: 1rem;\n}\n\n.from {\n  @include info;\n\n  & {\n    line-height: 1rem;\n  }\n\n  &:first-of-type {\n    margin-top: 0;\n  }\n}\n\n.info {\n  a {\n    text-decoration: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n}\n\n.resources {\n  border-top: 1px solid $black;\n\n  p {\n    @include info;\n\n    & {\n      line-height: 1rem;\n    }\n\n    &:first-of-type {\n      @include space-8-10-above;\n    }\n  }\n}\n\n@media (min-width: $break-point) {\n  .results {\n    @include grid;\n\n    > a {\n      @include space-5-above;\n    }\n\n    .info {\n      margin-top: 0;\n\n      h3 {\n        margin: 0;\n      }\n    }\n  }\n}\n</style>\n","<template>\n  <section\n    v-if=\"props.content.length\"\n    ref=\"drawer\"\n    :class=\"[{ [$style.show]: state }, $style.drawer]\"\n  >\n    <button\n      v-if=\"!state\"\n      :id=\"handleId\"\n      :aria-controls=\"contentId\"\n      aria-expanded=\"false\"\n      class=\"button-reset button-tertiary plus-sign\"\n      :ga4-event=\"\n        JSON.stringify({\n          click_type: 'show',\n          component: 'TeachingMaterialsDrawer',\n          content_group: 'teaching_materials',\n          gtm_tag: 'interaction',\n          link_text: `${preparedTitle}`,\n        })\n      \"\n      type=\"button\"\n      @keydown.enter=\"keyed = !keyed\"\n      @click.prevent=\"state = !state\"\n    >\n      {{ treatedTitle }}\n    </button>\n    <transition\n      enter-from-class=\"drawer-enter-from\"\n      enter-active-class=\"drawer-enter-active\"\n      leave-to-class=\"drawer-leave-to\"\n      leave-active-class=\"drawer-leave-active\"\n      @after-enter=\"afterEnter\"\n    >\n      <div v-show=\"state\">\n        <section v-if=\"props.isModule\">\n          <TeachingMaterialsArticle\n            :id=\"contentId\"\n            :aria-hidden=\"hidden && false\"\n            :aria-labelledby=\"handleId\"\n            :content=\"props.content\"\n            :filters=\"props.filters\"\n            :inert=\"hidden\"\n            :is-module=\"true\"\n            :type=\"props.type\"\n          ></TeachingMaterialsArticle>\n        </section>\n        <section v-else-if=\"props.isFiltered\">\n          <TeachingMaterialsArticle\n            :id=\"contentId\"\n            :aria-hidden=\"hidden && false\"\n            :aria-labelledby=\"handleId\"\n            :content=\"props.content\"\n            :filters=\"props.filters\"\n            :inert=\"hidden\"\n            :is-filtered=\"true\"\n            :type=\"props.type\"\n          ></TeachingMaterialsArticle>\n        </section>\n        <section\n          v-else\n          :id=\"contentId\"\n          :aria-hidden=\"hidden && false\"\n          :aria-labelledby=\"handleId\"\n          :class=\"[$style.terms, { [term]: props.content[0].__typename === 'Tm_term' }]\"\n          :inert=\"hidden\"\n        >\n          <article v-for=\"(item, key) in props.content\" :key=\"key\">\n            <h3 v-html=\"item.title\"></h3>\n            <a\n              v-for=\"(link, index) in item.links\"\n              :key=\"index\"\n              :class=\"[$style.links, moreLink]\"\n              @click.prevent=\"clickLink(link)\"\n              v-html=\"getLinkLabel(link)\"\n            ></a>\n            <p v-if=\"item.term\" v-html=\"item.term\"></p>\n            <ProcessContent v-if=\"item.text\" :content=\"item.text\"></ProcessContent>\n          </article>\n        </section>\n      </div>\n    </transition>\n    <button\n      v-if=\"state\"\n      :id=\"handleId\"\n      :aria-controls=\"contentId\"\n      aria-expanded=\"true\"\n      class=\"button-reset button-tertiary minus-sign\"\n      type=\"button\"\n      :ga4-event=\"\n        JSON.stringify({\n          click_type: 'hide',\n          component: 'TeachingMaterialsDrawer',\n          content_group: 'teaching_materials',\n          gtm_tag: 'interaction',\n          link_text: `${preparedTitle}`,\n        })\n      \"\n      @click.prevent=\"closeDrawer()\"\n    >\n      {{ treatedTitle }}\n    </button>\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { Link, Package } from '@/types/teachingMaterials.interface';\nimport { moreLink } from '@/styles/links.module.scss';\nimport { term } from '@/styles/teachingMaterials.module.scss';\nimport { useA11y, useUniqueIdentifier } from '@/composables/Common.js';\nimport { useRoute } from 'vue-router';\n\nimport ProcessContent from '@/components/common/ProcessContent.vue';\nimport TeachingMaterialsArticle from '@/components/teachingMaterials/TeachingMaterialsArticle.vue';\n\nconst emit = defineEmits({\n  'link-opened': (payload) =>\n    typeof payload.video === 'string' || typeof payload.image === 'string',\n});\nconst props = withDefaults(\n  defineProps<{\n    content: Array<Package>;\n    filters?: Array<string>;\n    group?: string;\n    isFiltered?: boolean;\n    isModule?: boolean;\n    title?: string;\n    type?: string;\n  }>(),\n  {\n    isFiltered: false,\n    isModule: false,\n  }\n);\n\nconst route = useRoute();\n\nconst { focusFirstChild } = useA11y();\nconst { uid } = useUniqueIdentifier();\n\nconst drawer = ref(null);\nconst hidden = ref(true);\nconst keyed = ref(false);\nconst state = ref(false);\n\nconst contentId = computed(() => `content-${props.group}-${uid}`);\nconst handleId = computed(() => `handle-${props.group}-${uid}`);\nconst preparedTitle = computed(() => {\n  if (state.value && props.title) {\n    return props.title.split(' ').join('-');\n  }\n\n  const lessTitle = props.title && `${props.title.replace(/\"/g, '').split(' ').shift()} Less`;\n\n  return lessTitle && lessTitle.split(' ').join('-');\n});\nconst treatedTitle = computed(() => {\n  if (state.value && props.title) {\n    return `${props.title.replace(/\"/g, '').split(' ').shift()} Less`;\n  }\n\n  return props.title && props.title.replace(/\"/g, '');\n});\n\nwatch(state, (val) => (hidden.value = val ? false : true));\n\nonMounted(() => {\n  if (route.hash) {\n    const anchors = drawer.value?.querySelectorAll(`[name='${route.hash.substr(1)}']`);\n\n    if (anchors && anchors.length) {\n      anchors.forEach((anchor) => {\n        state.value = anchor.hasAttribute('isdrawer');\n      });\n    }\n  }\n});\n\nfunction afterEnter(): void {\n  if (keyed.value) {\n    focusFirstChild(contentId);\n    keyed.value = false;\n  }\n}\n\nfunction closeDrawer(): void {\n  const { top: bodyTop } = document.body.getBoundingClientRect();\n  const { top } = drawer.value?.getBoundingClientRect();\n  const offset = Math.abs(bodyTop) - Math.abs(top);\n\n  window.scrollTo(0, offset);\n  state.value = !state.value;\n}\n\nfunction clickLink(link: Link): void {\n  emit('link-opened', link);\n}\n\nfunction getLinkLabel(link: Link): string {\n  if (link.label) {\n    return link.label;\n  }\n\n  return link.video ? 'View Video' : 'View Photo';\n}\n</script>\n\n<style lang=\"scss\" module>\n.border-bottom {\n  border-bottom: 1px solid $black;\n  display: block;\n  margin-bottom: 2rem;\n  padding-bottom: 1rem;\n  text-decoration: none;\n}\n\n.drawer {\n  button {\n    cursor: pointer;\n    margin-top: 0.75rem;\n    padding: 0.75rem 0;\n  }\n\n  section {\n    overflow: hidden;\n    max-height: 0;\n  }\n\n  &.show {\n    > a {\n      &::after {\n        border-bottom: 2px solid $black;\n        border-top: none;\n      }\n\n      &:hover {\n        &::after {\n          border-bottom: 2px solid $white;\n          border-top: none;\n        }\n      }\n    }\n\n    section {\n      max-height: 100%;\n      min-height: 0;\n      overflow: visible;\n    }\n  }\n}\n\n.terms {\n  h3 {\n    margin: 0;\n  }\n\n  p {\n    margin: 0.5rem 0 0;\n  }\n}\n\n@media (min-width: $break-point) {\n  .terms {\n    margin-top: 2rem;\n  }\n}\n</style>\n","<template>\n  <section>\n    <article v-for=\"(item, key) in items\" :key=\"key\" class=\"space-48-64-above\">\n      <router-link\n        :to=\"{\n          name: 'TeachingMaterialsTopic',\n          params: {\n            parent: getParentSlug(item),\n            slug: decodeURI(item[type].slug),\n          },\n        }\"\n      >\n        <picture v-if=\"item[type].featuredImage\" class=\"aspect-container\">\n          <img\n            :alt=\"item[type].featuredImage.node.altText\"\n            :src=\"proxySource(item[type].featuredImage.node.sourceUrl, 640)\"\n            :srcset=\"item[type].imageSrcset\"\n            class=\"aspect-image\"\n            loading=\"lazy\"\n            sizes=\"(min-width: 960px) 640px, 100vw\"\n          />\n        </picture>\n        <h4 v-html=\"item[type].title\"></h4>\n      </router-link>\n      <div :class=\"tmExcerpt\" v-html=\"item[type].excerpt\"></div>\n      <p v-if=\"item[type].imageCount\" :class=\"tmLabel\">Images: {{ item[type].imageCount }}</p>\n      <p v-if=\"item[type].videoCount\" :class=\"tmLabel\">Videos: {{ item[type].videoCount }}</p>\n      <p v-if=\"item[type].vdCount\" :class=\"tmLabel\">View and Discuss: {{ item[type].vdCount }}</p>\n      <p v-if=\"item[type].caCount\" :class=\"tmLabel\">\n        Classroom Activities: {{ item[type].caCount }}\n      </p>\n    </article>\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Artist, Topic } from '@/types/teachingMaterials.interface';\nimport { tmExcerpt, tmLabel } from '@/styles/teachingMaterials.module.scss';\nimport { useImageProxy } from '@/composables/Common.js';\n\nconst props = defineProps<{\n  items: Array<Artist> | Array<Topic>;\n  parentSlug?: string;\n  type: string;\n}>();\n\nconst { proxySource } = useImageProxy();\n\nfunction getParentSlug(item: Artist | Topic): string | undefined {\n  if (!props.parentSlug && item.topic && item.topic.packageParent) {\n    return item.topic.packageParent.slug;\n  }\n\n  if (!props.parentSlug && item.packageParent) {\n    return item.packageParent.slug;\n  }\n\n  return props.parentSlug;\n}\n</script>\n","<template>\n  <TeachingMaterialsFeaturedItems\n    v-if=\"\n      (showcase && showcase.type === 'artists' && showcase.artists.length) ||\n      (associated && associatedType === 'artists' && associated.length)\n    \"\n    :class=\"[$style.showcase, 'space-12-16-above']\"\n    :items=\"getArtistValue\"\n    :parent-slug=\"parentSlug\"\n    type=\"artist\"\n  ></TeachingMaterialsFeaturedItems>\n  <TeachingMaterialsFeaturedItems\n    v-else-if=\"\n      (showcase && showcase.type === 'topics' && showcase.topics.length) ||\n      (associated && associatedType === 'topics' && associated.length)\n    \"\n    :class=\"[$style.showcase, 'space-12-16-above']\"\n    :items=\"getTopicValue\"\n    :parent-slug=\"parentSlug\"\n    type=\"topic\"\n  ></TeachingMaterialsFeaturedItems>\n  <section v-else :class=\"[$style.showcase, 'space-12-16-above']\">\n    <article v-for=\"(item, key) in associated\" :key=\"key\" class=\"space-48-64-above\">\n      <router-link\n        v-if=\"isTopic(item)\"\n        :to=\"{\n          name: 'TeachingMaterialsTopic',\n          params: {\n            parent: getParentSlug(item),\n            slug: decodeURI(item.slug),\n          },\n        }\"\n      >\n        <picture class=\"aspect-container\">\n          <img\n            v-if=\"item.featuredImage\"\n            :alt=\"item.featuredImage.node.altText\"\n            :src=\"proxySource(item.featuredImage.node.sourceUrl, 400)\"\n            :srcset=\"item.imageSrcset\"\n            class=\"aspect-image\"\n            loading=\"lazy\"\n            sizes=\"(min-width: 960px) 470px, 100vw\"\n          />\n        </picture>\n        <h4 class=\"space-12-16-above\" v-html=\"item.title\"></h4>\n      </router-link>\n      <router-link\n        v-else\n        :to=\"{\n          name: 'TeachingMaterialsPackage',\n          params: {\n            slug: item.slug,\n          },\n        }\"\n      >\n        <picture class=\"aspect-container\">\n          <img\n            v-if=\"item.featuredImage\"\n            :alt=\"item.featuredImage.node.altText\"\n            :src=\"proxySource(item.featuredImage.node.sourceUrl, 400)\"\n            :srcset=\"item.imageSrcset\"\n            class=\"aspect-image\"\n            loading=\"lazy\"\n            sizes=\"(min-width: 960px) 470px, 100vw\"\n          />\n        </picture>\n        <h4 class=\"space-12-16-above\" v-html=\"item.title\"></h4>\n      </router-link>\n      <div :class=\"[tmExcerpt, 'space-8-10-above']\" v-html=\"item.excerpt\"></div>\n      <div v-if=\"isTopic(item)\" class=\"space-8-10-above\">\n        <p v-if=\"item.imageCount\" :class=\"tmLabel\">Images: {{ item.imageCount }}</p>\n        <p v-if=\"item.videoCount\" :class=\"tmLabel\">Videos: {{ item.videoCount }}</p>\n        <p v-if=\"item.vdCount\" :class=\"tmLabel\">View and Discuss: {{ item.vdCount }}</p>\n        <p v-if=\"item.caCount\" :class=\"tmLabel\">Classroom Activities: {{ item.caCount }}</p>\n      </div>\n      <div v-else :class=\"[$style.included, 'space-8-10-above']\">\n        <p\n          v-if=\"item.tmPackagePageElements && item.tmPackagePageElements.whats_included\"\n          v-html=\"item.tmPackagePageElements.whats_included\"\n        ></p>\n        <p v-else>\n          Topics with View and Discuss and Classroom Activities prompts: {{ getPromptCount(item) }}\n        </p>\n      </div>\n    </article>\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Artist, Package, Topic } from '@/types/teachingMaterials.interface';\nimport { computed } from 'vue';\nimport TeachingMaterialsFeaturedItems from '@/components/teachingMaterials/TeachingMaterialsFeaturedItems.vue';\nimport { tmExcerpt, tmLabel } from '@/styles/teachingMaterials.module.scss';\nimport { useImageProxy } from '@/composables/Common.js';\nimport { useTeachingMaterials } from '@/composables/TeachingMaterials.js';\n\nconst props = defineProps<{\n  associated?: Array<Package | Topic>;\n  associatedType?: string;\n  parentSlug?: string;\n  showcase?: {\n    artists: Array<Artist>;\n    packages: Array<Package>;\n    topics: Array<Topic>;\n    type: string;\n  };\n}>();\n\nconst { getPromptCount } = useTeachingMaterials();\nconst { proxySource } = useImageProxy();\n\nconst getArtistValue = computed(() => {\n  return props.showcase ? props.showcase.artists : props.associated;\n});\nconst getTopicValue = computed(() => {\n  return props.showcase ? props.showcase.topics : props.associated;\n});\n\nfunction getParentSlug(item: Package | Topic): string {\n  if (!props.parentSlug && item.topic && item.topic.packageParent) {\n    return item.topic.packageParent.slug;\n  }\n\n  if (!props.parentSlug && item.packageParent) {\n    return item.packageParent.slug;\n  }\n\n  if (props.parentSlug) {\n    return props.parentSlug;\n  }\n\n  return '';\n}\n\nfunction isTopic(item: Package | Topic): boolean {\n  return item.__typename === 'Tm_topic';\n}\n</script>\n\n<style lang=\"scss\" module>\n.included {\n  p {\n    @include info;\n  }\n}\n.showcase {\n  a {\n    display: block;\n    text-decoration: none;\n\n    &:hover {\n      h4 {\n        text-decoration: underline;\n      }\n    }\n    &:focus {\n      background-color: $white;\n      color: $black;\n\n      picture,\n      h4 {\n        @include focus-outline;\n      }\n      h4 {\n        background-color: $black;\n        color: $white;\n      }\n    }\n  }\n  article {\n    &:first-of-type {\n      margin-top: 0;\n    }\n  }\n}\n\n@media (min-width: $break-point) {\n  .showcase {\n    @include grid;\n    grid-row-gap: 2rem;\n\n    article {\n      grid-column: span 4;\n      margin-top: 0;\n    }\n  }\n}\n</style>\n","import gql from 'graphql-tag';\n\nexport const sharedPackageQuery = gql`\n  fragment sharedPackage on Tm_package {\n    associatedTopics {\n      topic {\n        caCount\n        vdCount\n      }\n    }\n    excerpt\n    featuredImage {\n      node {\n        altText\n        sourceUrl\n      }\n    }\n    imageSrcset\n    imageCount\n    slug\n    teachingMaterialArtists(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    teachingMaterialMedia(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    teachingMaterialSubjects(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    teachingMaterialThemes(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    title\n    tmPackagePageElements {\n      whats_included\n    }\n    type\n    videoCount\n  }\n`;\n\nexport const sharedTopicQuery = gql`\n  fragment sharedTopic on Tm_topic {\n    caCount\n    excerpt\n    featuredImage {\n      node {\n        altText\n        sourceUrl\n      }\n    }\n    imageSrcset\n    imageCount\n    packageParent {\n      slug\n      title\n    }\n    slug\n    teachingMaterialArtists(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    teachingMaterialMedia(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    teachingMaterialSubjects(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    teachingMaterialThemes(first: 100) {\n      nodes {\n        name\n        slug\n      }\n    }\n    title\n    vdCount\n    videoCount\n  }\n`;\n\nexport const associatedInfo = `\n  caCount\n  imageCount\n  slug\n  vdCount\n  videoCount\n`;\n\nexport const tmArtists = `\n  teachingMaterialArtists(first: 100, where: { sortOrder: true }) {\n    nodes {\n      name\n      slug\n    }\n  }\n`;\n\nexport const tmMedia = `\n  teachingMaterialMedia(first: 100) {\n    nodes {\n      name\n      slug\n    }\n  }\n`;\n\nexport const tmSubjects = `\n  teachingMaterialSubjects(first: 100) {\n    nodes {\n      name\n      slug\n    }\n  }\n`;\n\nexport const tmThemes = `\n  teachingMaterialThemes(first: 100) {\n    nodes {\n      name\n      slug\n    }\n  }\n`;\n"],"names":["useTeachingMaterials","key","item","instance","type","resource","topics","count","props","__props","getPromptCount","proxySource","useImageProxy","items","computed","getIncluded","matches","filter","match","getPath","emit","__emit","route","useRoute","focusFirstChild","useA11y","uid","useUniqueIdentifier","drawer","ref","hidden","keyed","state","contentId","handleId","preparedTitle","lessTitle","treatedTitle","watch","val","onMounted","anchors","_a","anchor","afterEnter","closeDrawer","bodyTop","top","offset","clickLink","link","getLinkLabel","getParentSlug","getArtistValue","getTopicValue","isTopic","sharedPackageQuery","gql","sharedTopicQuery","associatedInfo","tmArtists","tmMedia","tmSubjects","tmThemes"],"mappings":"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"}