{"version":3,"file":"TeachingMaterialsTopic-xdnIe2YW.js","sources":["../../src/queries/GetTeachingMaterialsTopic.js","../../src/stores/eventStore.js","../../src/components/teachingMaterials/TeachingMaterialsTopic.vue"],"sourcesContent":["import { associatedInfo, tmMedia, tmSubjects, tmThemes } from '@/queries/TeachingMaterialsFragments';\nimport gql from 'graphql-tag';\n\nexport const teachingMaterialsTopicQuery = gql`\n  query getTopic($slug: String) {\n    tmTopics(where: { slugName: $slug }) {\n      nodes {\n        ${associatedInfo}\n        associatedTopics {\n          topic {\n            ${associatedInfo}\n            databaseId\n            excerpt\n            featuredImage {\n              node {\n                altText\n                mediaDetails {\n                  height\n                  width\n                }\n                sourceUrl\n              }\n            }\n            imageSrcset\n            packageParent {\n              slug\n            }\n            title\n          }\n        }\n        content\n        excerpt\n        featuredImage {\n          node {\n            altText\n            sourceUrl\n          }\n        }\n        imageSrcset\n        packageParent {\n          slug\n          title\n        }\n        relatedMaterials {\n          ... on Tm_package {\n            __typename\n            associatedTopics {\n              topic {\n                ${associatedInfo}\n              }\n            }\n            excerpt\n            featuredImage {\n              node {\n                altText\n                sourceUrl\n              }\n            }\n            imageSrcset\n            imageCount\n            slug\n            title\n            tmPackagePageElements {\n              whats_included\n            }\n            videoCount\n          }\n          ... on Tm_topic {\n            __typename\n            caCount\n            excerpt\n            featuredImage {\n              node {\n                altText\n                sourceUrl\n              }\n            }\n            imageSrcset\n            imageCount\n            packageParent {\n              slug\n            }\n            slug\n            title\n            vdCount\n            videoCount\n          }\n        }\n        ${tmMedia}\n        ${tmSubjects}\n        ${tmThemes}\n        title\n        tmArtistInfo {\n          audio_file\n          bio\n          pronounciation_guide\n        }\n        tmData {\n          type\n          content {\n            __typename\n            links {\n              image\n              label\n              video\n            }\n            text\n            title\n          }\n        }\n        tmGallery\n        tmTopicPageElements {\n          all_resources {\n            header\n            resources\n          }\n          key_terms {\n            header\n            terms {\n              __typename\n              term\n              title\n            }\n          }\n          pdf\n        }\n        databaseId\n        tmType\n      }\n    }\n  }\n`;\n","import { defineStore } from 'pinia';\n\n// TODO: GUGG Typescript\n// interface State {\n//   clicked: Boolean;\n//   filter: String;\n//   payload: Object;\n// }\n\nexport const useEventStore = defineStore('eventStore', {\n  state: () => ({\n    clicked: false,\n    payload: {}\n  }),\n  actions: {\n    updateEventState(value) {\n      Object.keys(value).map(val => {\n        if (val in this) {\n          this[val] = value[val];\n        }\n      });\n    }\n  }\n});\n","<template>\n  <section v-if=\"topic && Object.keys(topic).length\" :class=\"['container', $style.topic]\">\n    <header :class=\"$style.header\">\n      <nav>\n        <BackLink\n          component=\"TeachingMaterialsTopic\"\n          group=\"teaching_materials\"\n          :label=\"topic.packageParent.title\"\n          name=\"TeachingMaterialsPackage\"\n          :params=\"{ slug: topic.packageParent.slug }\"\n        ></BackLink>\n      </nav>\n      <h1 v-html=\"topic.title\"></h1>\n      <div v-for=\"(artist, key) in topic.tmArtistInfo\" :key=\"key\">\n        <div :class=\"$style.pronounce\">\n          <ProcessContent\n            v-if=\"artist.audio_file\"\n            :content=\"artist.audio_file\"\n            :class=\"$style.audio\"\n          ></ProcessContent>\n          <p v-if=\"artist.pronounciation_guide\" v-html=\"artist.pronounciation_guide\"></p>\n        </div>\n        <p v-if=\"artist.bio\" :class=\"$style.bio\" class=\"space-8-10-above\" v-html=\"artist.bio\"></p>\n      </div>\n      <p :class=\"$style.label\">What’s Included</p>\n      <p :class=\"$style.included\">{{ getWhatsIncluded }}</p>\n      <div v-if=\"topic.tmTopicPageElements && topic.tmTopicPageElements.pdf\">\n        <a :href=\"topic.tmTopicPageElements.pdf\" :class=\"$style.pdf\">Download PDF</a>\n      </div>\n      <div :class=\"$style.mst\">\n        <div v-if=\"topic.teachingMaterialMedia.nodes.length\">\n          <p :class=\"$style.label\">Mediums</p>\n          <ul>\n            <li\n              v-for=\"(medium, key) in topic.teachingMaterialMedia.nodes\"\n              :key=\"key\"\n              :class=\"{ comma: key < topic.teachingMaterialMedia.nodes.length - 1 }\"\n            >\n              {{ medium.name }}\n            </li>\n          </ul>\n        </div>\n        <div v-if=\"topic.teachingMaterialSubjects.nodes || topic.teachingMaterialThemes.nodes\">\n          <p :class=\"$style.label\">Subjects and Themes</p>\n          <ul>\n            <li\n              v-for=\"(item, key) in getSubjectsAndThemes\"\n              :key=\"key\"\n              :class=\"{ comma: key < getSubjectsAndThemes.length - 1 }\"\n            >\n              {{ item.name }}\n            </li>\n          </ul>\n        </div>\n      </div>\n    </header>\n    <section :class=\"[{ [$style.showGallery]: isGallery }, $style.gallery, 'space-12-16-above']\">\n      <ProcessContent\n        v-if=\"topic.tmGallery\"\n        :content=\"topic.tmGallery\"\n        :no-wrapper=\"true\"\n      ></ProcessContent>\n    </section>\n    <ProcessContent\n      v-if=\"topic.content\"\n      :content=\"topic.content\"\n      wrapper=\"section\"\n      :class=\"$style.content\"\n    ></ProcessContent>\n    <section v-if=\"findData('view_discuss').length\" :class=\"$style.viewDiscuss\">\n      <h2>View and Discuss</h2>\n      <article v-for=\"(item, key) in findData('view_discuss')[0].content.slice(0, 2)\" :key=\"key\">\n        <h3 v-html=\"item.title\"></h3>\n        <button\n          v-for=\"(link, index) in item.links\"\n          :key=\"index\"\n          :class=\"[$style.links, moreLink]\"\n          @click.prevent=\"openLink(link)\"\n          @keypress.enter=\"openLink(link)\"\n          v-html=\"getLinkLabel(link)\"\n        ></button>\n        <ProcessContent\n          v-if=\"item.text\"\n          :content=\"item.text\"\n          class=\"space-8-10-above\"\n        ></ProcessContent>\n        <div v-if=\"item.links\"></div>\n      </article>\n      <TeachingMaterialsDrawer\n        v-if=\"findData('view_discuss')[0].content.length > 2\"\n        :content=\"\n          findData('view_discuss')[0].content.slice(2, findData('view_discuss')[0].content.length)\n        \"\n        group=\"view-and-discuss\"\n        title=\"Show All\"\n        @link-opened=\"openLink\"\n      ></TeachingMaterialsDrawer>\n    </section>\n    <section v-if=\"findData('classroom_activity').length\" :class=\"$style.activities\">\n      <h2>Classroom Activities</h2>\n      <article\n        v-for=\"(item, key) in findData('classroom_activity')[0].content.slice(0, 3)\"\n        :key=\"key\"\n      >\n        <h3 v-html=\"item.title\"></h3>\n        <ProcessContent v-if=\"item.text\" :content=\"item.text\"></ProcessContent>\n      </article>\n      <TeachingMaterialsDrawer\n        v-if=\"findData('classroom_activity')[0].content.length > 3\"\n        :content=\"\n          findData('classroom_activity')[0].content.slice(\n            3,\n            findData('classroom_activity')[0].content.length,\n          )\n        \"\n        group=\"classroom-activities\"\n        title=\"Show All\"\n      ></TeachingMaterialsDrawer>\n    </section>\n    <section v-if=\"findData('context').length\" :class=\"$style.context\">\n      <h2>Context</h2>\n      <article v-for=\"(item, key) in findData('context')[0].content\" :key=\"key\">\n        <h3 v-html=\"item.title\"></h3>\n        <ProcessContent v-if=\"item.text\" :content=\"item.text\"></ProcessContent>\n      </article>\n    </section>\n    <section v-if=\"findInfo('key_terms', 'topic', instance).length\" :class=\"$style.terms\">\n      <h2\n        v-if=\"topic.tmTopicPageElements.key_terms.header.length\"\n        v-html=\"topic.tmTopicPageElements.key_terms.header\"\n      ></h2>\n      <h2 v-else>Key Terms</h2>\n      <div :class=\"term\">\n        <article\n          v-for=\"(item, key) in findInfo('key_terms', 'topic', instance).slice(0, 4)\"\n          :key=\"key\"\n          class=\"space-12-16-above\"\n        >\n          <h3 v-html=\"item.title\"></h3>\n          <p v-html=\"item.term\"></p>\n        </article>\n      </div>\n      <TeachingMaterialsDrawer\n        v-if=\"findInfo('key_terms', 'topic', instance).length > 4\"\n        :content=\"\n          findInfo('key_terms', 'topic', instance).slice(\n            4,\n            findInfo('key_terms', 'topic', instance).length,\n          )\n        \"\n        group=\"key-terms\"\n        title=\"Show All\"\n      ></TeachingMaterialsDrawer>\n    </section>\n    <section v-if=\"findInfo('all_resources', 'topic', instance).length\" :class=\"$style.resources\">\n      <h2\n        v-if=\"topic.tmTopicPageElements.all_resources.header.length\"\n        v-html=\"topic.tmTopicPageElements.all_resources.header\"\n      ></h2>\n      <h2 v-else>Resources</h2>\n      <ProcessContent\n        :content=\"findInfo('all_resources', 'topic', instance)\"\n        wrapper=\"article\"\n      ></ProcessContent>\n    </section>\n    <section\n      v-if=\"isArtist && topic.relatedMaterials && topic.relatedMaterials.length\"\n      :class=\"$style.related\"\n    >\n      <h2>Related Materials</h2>\n      <TeachingMaterialsFeatureShowcase\n        :associated=\"topic.relatedMaterials\"\n      ></TeachingMaterialsFeatureShowcase>\n    </section>\n    <section v-else-if=\"!isArtist && getAssociatedTopics.length\" :class=\"$style.related\">\n      <h2>More Topics: Discuss and Create</h2>\n      <TeachingMaterialsFeatureShowcase\n        :associated=\"getAssociatedTopics\"\n        associated-type=\"topics\"\n      ></TeachingMaterialsFeatureShowcase>\n    </section>\n    <p v-if=\"isFreeman\" :class=\"[$style.freeman, 'space-48-64-above']\">\n      These teaching materials are supported by The Freeman Foundation.\n    </p>\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport BackLink from '@/components/common/BackLink.vue';\nimport { moreLink } from '@/styles/links.module.scss';\nimport { computed, getCurrentInstance, onMounted, ref, watch } from 'vue';\nimport { dataLoaded, useMetaData } from '@/composables/Common.js';\nimport { Link, TMData, TMTopic } from '@/types/teachingMaterials.interface';\nimport ProcessContent from '@/components/common/ProcessContent.vue';\nimport { storeToRefs } from 'pinia';\nimport TeachingMaterialsDrawer from '@/components/teachingMaterials/TeachingMaterialsDrawer.vue';\nimport TeachingMaterialsFeatureShowcase from '@/components/teachingMaterials/TeachingMaterialsFeatureShowcase.vue';\nimport { teachingMaterialsTopicQuery } from '@/queries/GetTeachingMaterialsTopic';\nimport { term } from '@/styles/teachingMaterials.module.scss';\nimport { useEventStore } from '@/stores/eventStore.js';\nimport { useQuery } from 'villus';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useTeachingMaterials } from '@/composables/TeachingMaterials.js';\n\nconst props = defineProps<{\n  parent: string;\n  slug: string;\n}>();\n\nconst instance = getCurrentInstance();\nconst route = useRoute();\nconst router = useRouter();\nconst store = useEventStore();\nconst { clicked, payload } = storeToRefs(store);\n\nconst { findInfo } = useTeachingMaterials();\nconst { setMetaDescription, setMetaTitle } = useMetaData();\n\nconst isGallery = ref(false);\nconst topic = ref<TMTopic>({});\n\ndefineExpose({ topic });\n\nconst getAssociatedTopics = computed(() => {\n  if (topic.value.associatedTopics && topic.value.associatedTopics.length) {\n    return topic.value.associatedTopics.filter(\n      (item) => item.topic.databaseId !== topic.value.databaseId,\n    );\n  }\n\n  return null;\n});\nconst getSubjectsAndThemes = computed(() => {\n  return [\n    ...topic.value.teachingMaterialSubjects.nodes,\n    ...topic.value.teachingMaterialThemes.nodes,\n  ];\n});\nconst getWhatsIncluded = computed(() => {\n  const included = [] as Array<string>;\n\n  if (topic.value.videoCount) {\n    included.push(`${topic.value.videoCount} videos`);\n  }\n\n  if (topic.value.imageCount) {\n    included.push(`${topic.value.imageCount} ${topic.value.imageCount > 1 ? 'images' : 'image'}`);\n  }\n\n  if (topic.value.vdCount) {\n    included.push(`${topic.value.vdCount} view and discuss`);\n  }\n\n  if (topic.value.caCount) {\n    included.push(\n      `${topic.value.caCount} classroom ${topic.value.caCount > 1 ? 'activities' : 'activity'}`,\n    );\n  }\n\n  const last = included.pop();\n  const final = included.join(', ');\n\n  return `${final}, and ${last}`;\n});\nconst isArtist = computed(() => {\n  return topic.value.tmType === 'artist';\n});\nconst isFreeman = computed(() => {\n  return props.parent === 'teaching-modern-and-contemporary-asian-art';\n});\n\nconst { data } = useQuery({\n  onData: (data) => {\n    if (data.tmTopics && data.tmTopics.nodes.length) {\n      topic.value = data.tmTopics.nodes[0];\n      setMetaTitle(data.tmTopics.nodes[0].title);\n      setMetaDescription(data.tmTopics.nodes[0].excerpt);\n      dataLoaded();\n    }\n\n    if (!data.tmTopics || data.tmTopics.nodes.length === 0) {\n      handleError('TeachingMaterialsTopic', props.slug);\n    }\n  },\n  query: teachingMaterialsTopicQuery,\n  variables: { slug: props.slug },\n});\n\nonMounted(() => {\n  if (route.query && route.query.gallery) {\n    isGallery.value = true;\n  }\n});\n\nwatch(clicked, (newValue) => {\n  if (newValue && Object.keys(payload).length) {\n    openLink(payload);\n  }\n});\n\nfunction findData(key: string): TMData {\n  if (topic.value.tmData && topic.value.tmData.length) {\n    return topic.value.tmData.filter(\n      (data) => data.type === key && data.content && data.content.length,\n    );\n  }\n\n  return [];\n}\n\nfunction getLinkLabel(link: Link): string {\n  if (link.label) {\n    return link.label;\n  }\n\n  return link.video ? 'View video' : 'View artwork';\n}\n\nfunction openLink(link: Link): void {\n  const value = link.video || link.image;\n\n  router.push({\n    path: route.path,\n    query: { gallery: value },\n  });\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: teachingMaterialsTopicQuery,\n          variables: {\n            slug: params.slug,\n          },\n        })\n        .then(() => resolve())\n        .catch((err) => reject(err));\n    });\n  },\n};\n</script>\n\n<style lang=\"scss\" module>\n.audio {\n  button {\n    height: 1.5rem;\n  }\n\n  svg {\n    cursor: pointer;\n    height: 1.5rem;\n    width: 1.5rem;\n\n    &:hover {\n      path {\n        fill: $black-hover;\n      }\n    }\n  }\n\n  time {\n    display: none;\n  }\n}\n\n.bio {\n  @include heading-4;\n\n  & {\n    margin-top: 0.5rem;\n  }\n}\n\n.content,\n.view-discuss,\n.activities,\n.context {\n  img {\n    max-width: 100%;\n  }\n}\n\n.freeman {\n  @include body-2;\n\n  & {\n    margin-bottom: 0;\n  }\n}\n\n.header {\n  a[href$='.pdf'][href$='.pdf'] {\n    margin-bottom: 0;\n    margin-top: 2rem;\n  }\n  h1 + p {\n    margin-top: 0;\n  }\n}\n\n.included {\n  margin-top: 0;\n}\n\n.label {\n  @include heading-4;\n}\n\n.links {\n  cursor: pointer;\n  display: inline-block;\n  text-decoration: none;\n}\n\n.mst {\n  div {\n    margin-right: 2rem;\n\n    &:last-of-type {\n      margin-top: 1rem;\n    }\n  }\n\n  ul {\n    display: inline-flex;\n    flex-wrap: wrap;\n    margin: 0; // defeat global\n    padding-left: 0;\n\n    li {\n      list-style: none; // defeat global\n      margin-top: 0;\n    }\n  }\n}\n\n.pdf {\n  margin-bottom: 0;\n\n  svg {\n    height: 1rem;\n    margin-left: 0.5rem;\n    vertical-align: text-bottom;\n    width: 1rem;\n  }\n\n  &:hover {\n    background: $white-hover;\n    border: 2px solid $black-hover;\n    color: $white;\n\n    svg {\n      path {\n        stroke: $white;\n      }\n    }\n  }\n}\n\n.pronounce {\n  display: flex;\n\n  p {\n    @include heading-4;\n\n    & {\n      margin-left: 0.5rem;\n      margin-top: 0;\n    }\n  }\n}\n\n.resources {\n  h3:not(:first-of-type) {\n    margin-top: 1rem;\n  }\n}\n\n.show-gallery {\n  visibility: visible;\n}\n\n.topic {\n  h2,\n  h3 {\n    margin: 0; // defeat global\n  }\n\n  img + p:global(.caption) {\n    margin-top: 0;\n  }\n\n  p:global(.caption) {\n    img {\n      margin-bottom: 0.5rem;\n    }\n  }\n\n  > section:not(:first-of-type) {\n    @include space-48-64-above;\n  }\n\n  :global(.epigraph-author) {\n    margin-bottom: 0;\n  }\n}\n\n:global(.epigraph) {\n  p {\n    &::before {\n      margin-left: 0;\n      position: relative;\n    }\n  }\n}\n\n@media (min-width: $break-point) {\n  .pronounce {\n    p {\n      margin-top: 0;\n    }\n  }\n  .topic {\n    @include grid;\n\n    > * {\n      grid-column: 1 / span 8;\n    }\n\n    .header {\n      @include grid;\n\n      & {\n        grid-column: span 12;\n      }\n\n      > * {\n        grid-column: 1 / span 8;\n      }\n\n      nav {\n        grid-column: span 12;\n      }\n    }\n\n    .gallery,\n    .related {\n      grid-column: 1 / span 8;\n    }\n  }\n\n  :global(.epigraph) {\n    p::before {\n      margin-left: -1.35rem;\n      position: absolute;\n    }\n  }\n}\n</style>\n"],"names":["teachingMaterialsTopicQuery","gql","associatedInfo","tmMedia","tmSubjects","tmThemes","useEventStore","defineStore","value","val","__default__","params","villusClient","resolve","reject","err","props","__props","instance","getCurrentInstance","route","useRoute","router","useRouter","store","clicked","payload","storeToRefs","findInfo","useTeachingMaterials","setMetaDescription","setMetaTitle","useMetaData","isGallery","ref","topic","__expose","getAssociatedTopics","computed","item","getSubjectsAndThemes","getWhatsIncluded","included","last","isArtist","isFreeman","useQuery","data","dataLoaded","onMounted","watch","newValue","openLink","findData","key","getLinkLabel","link"],"mappings":"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"}